File: kwin4player.h

package info (click to toggle)
kfourinline 4:18.04.1-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 6,784 kB
  • sloc: cpp: 7,339; sh: 8; makefile: 5
file content (152 lines) | stat: -rw-r--r-- 4,202 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/*
   This file is part of the KDE games kwin4 program
   Copyright (c) 1995-2007 Martin Heni <kde@heni-online.de>

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public
   License as published by the Free Software Foundation; either
   version 2 of the License, or (at your option) any later version.

   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Library General Public License for more details.

   You should have received a copy of the GNU Library General Public License
   along with this library; see the file COPYING.LIB.  If not, write to
   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
   Boston, MA 02110-1301, USA.
*/

#ifndef KWIN4_PLAYER_H
#define KWIN4_PLAYER_H

// KDE includes
#include <KConfigGroup>

#define USE_UNSTABLE_LIBKDEGAMESPRIVATE_API
#include <libkdegamesprivate/kgame/kplayer.h>
#include <libkdegamesprivate/kgame/kgameproperty.h>

// Local includes
#include "score.h"


/** A player for the KWin4 game. A player holds all important player data,
  * in particular the long time status and score information. Additionally,
  * via the KGame framework it supports various methods of input like mouse,
  * keyboard, AI or even network.
  */
class KWin4Player : public KPlayer
{
  Q_OBJECT
	  
  public:
    /** Construct a player object,.
      */
    KWin4Player();
    ~KWin4Player();
    
    /** Runtime identification for the player type (KGame). Only one player
      * _type_ for kwin4.
      * @return The player type = 1.
      */
    int rtti() const Q_DECL_OVERRIDE {return 1;}
    
    /** Assign the score object which allows to display player properties in 
      * the GUI.
      * @param s The score object
      */
    void setStatus(Score *s) {mStatus=s;}
    
    /** Retrieve the score object from the player.
      * @return The score object.
      */
    Score* status(){return mStatus;}
    
    /** Read the player data (status, score) from the configuration file.
      * @param config The configuration group
      */
    void readConfig(KConfigGroup& config);
    
    /** Write the player data (status, score) to the configuration file.
      * @param config The configuration group
      */
    void writeConfig(KConfigGroup& config);
    
    /** Increase the number of wins for this player.
      */
    void incWin();
    
    /** Increase the number of draws for this player.
      */
    void incRemis();
    
    /** Increase the number of losses for this player.
      */
    void incLost();
    
    /** Increase the number of aborted games for this player.
      */
    void incBrk();
    
    /** Retrieve the number of wins.
      */
    int win() {return mAllWin.value();}
    
    /** Retrieve the number of losses.
      */
    int lost() {return mAllLost.value();}
    
    /** Retrieve the number of aborted games.
      */
    int brk() {return mAllBrk.value();}
    
    /** Retriev the number of drawn games.
      */
    int remis() {return mAllRemis.value();}
    
    /** Clear the score of the player. 
      * @param all True: Clear also long time score. False: Clear only session score.
      */
    void resetStats(bool all=true);

  protected slots:
    /** KGame method which is called when any KGamePropery changes for this
      * player.
      * @param prop    The property
      * @param player  This player
      */   
    void slotPlayerPropertyChanged(KGamePropertyBase *prop,KPlayer *player);

  private:
    // One session wins
    KGamePropertyInt mWin;

    // One session draws
    KGamePropertyInt mRemis;

    // One session losses
    KGamePropertyInt mLost;

    // One session aborted games
    KGamePropertyInt mBrk;

    // All time wins
    KGamePropertyInt mAllWin;

    // All time draws
    KGamePropertyInt mAllRemis;

    // All time losses
    KGamePropertyInt mAllLost;

    // All time aborted games
    KGamePropertyInt mAllBrk;

    // Status object: Connects player to GUI widget
    Score *mStatus;
};

#endif // KWIN4_PLAYER_H