Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/proxy/src/lib/network/player_stats.h @ 9507

Last change on this file since 9507 was 9507, checked in by patrick, 18 years ago

the player team change should now work on all clients in the network, its now a global synch variable

File size: 3.1 KB
Line 
1/*!
2 * @file player_stats.h
3 * @brief Definition of PlayerStats
4 */
5
6#ifndef _PLAYER_STATS_H
7#define _PLAYER_STATS_H
8
9#include "synchronizeable.h"
10#include "playable.h"
11#include "message_manager.h"
12
13#include <string>
14#include <list>
15
16enum
17{
18  TEAM_NOTEAM = -3,
19  TEAM_RANDOM = -2,
20  TEAM_SPECTATOR = -1
21};
22
23struct PlayerScore
24{
25  std::string name;
26  int score;
27};
28typedef std::list<PlayerScore> TeamScoreList;
29typedef std::map<int,TeamScoreList> ScoreList;
30
31//! A class for storing player information
32class PlayerStats : public Synchronizeable
33{
34
35  public:
36    PlayerStats( const TiXmlElement* root = NULL );
37    PlayerStats( int userId );
38    virtual ~PlayerStats();
39
40    virtual void varChangeHandler( std::list<int> & id );
41
42    static PlayerStats * getStats( int userId );
43
44    inline int getUserId(){ return userId; }
45
46    inline int getTeamId(){ return teamId; }
47    inline void setTeamId( int teamId ){ this->teamId = teamId; }
48
49    inline int getPreferedTeamId(){ return preferedTeamId; }
50    inline void setPreferedTeamId( int preferedTeamId ) { this->preferedTeamId = preferedTeamId; }
51
52    inline int getScore(){ return score; }
53    inline void setScore( int score ){ this->score = score; }
54
55    inline int getPlayableClassId(){ return playableClassId; }
56    void setPlayableClassId( int classId ){ this->playableClassId = classId; };
57
58    inline int getPlayableUniqueId(){ return playableUniqueId; }
59    void setPlayableUniqueId( int uniqueId );
60
61    inline std::string getModelFileName(){ return modelFileName; }
62    inline void setModelFileName( std::string filename ){ modelFileName = filename; }
63
64    Playable * getPlayable();
65
66    inline std::string getNickName(){ return this->nickName; }
67    void setNickName( std::string nick );
68    static bool changeNickHandler( MessageId messageId, byte * data, int dataLength, void * someData, int userId );
69    void shellNick( const std::string&  newNick );
70
71    static void deleteAllPlayerStats();
72
73    static ScoreList getScoreList();
74
75
76  private:
77    void init();
78
79
80  private:
81    // handles for SynchronizeableVars
82    int              userId_handle;
83    int              teamId_handle;
84    int              preferedTeamId_handle;
85    int              score_handle;
86    int              playableClassId_handle;
87    int              playableUniqueId_handle;
88    int              modelFileName_handle;
89    int              nickName_handler;
90
91    int              userId;                    //!< userId
92    int              teamId;                    //!< teamId
93    int              preferedTeamId;            //!< preferedTeamId
94
95    std::string      nickName;                  //!< players nickname
96    std::string      oldNickName;               //!< nickname player had before
97
98    int              score;                     //!< users score points
99    int              playableClassId;           //!< players playable class id
100    int              playableUniqueId;          //!< playable's uniqueId
101    std::string      modelFileName;             //!< model filename
102
103    Playable *       playable;                  //!< pointer to players playable
104};
105
106#endif /* _PLAYER_STATS_H */
Note: See TracBrowser for help on using the repository browser.