// // Created by koncord on 05.01.16. // #ifndef OPENMW_PLAYER_HPP #define OPENMW_PLAYER_HPP #include #include #include #include #include #include #include #include #include #include #include #include "Cell.hpp" #include "CellController.hpp" typedef std::map TPlayers; typedef std::map TSlots; class Players { public: static void newPlayer(RakNet::RakNetGUID guid); static void deletePlayer(RakNet::RakNetGUID guid); static Player *getPlayer(RakNet::RakNetGUID guid); static Player *getPlayer(unsigned short id); static TPlayers *getPlayers(); static unsigned short getLastPlayerId(); static bool doesPlayerExist(RakNet::RakNetGUID guid); private: static TPlayers players; static TSlots slots; }; class Player : public mwmp::BasePlayer { friend class Cell; unsigned short id; public: enum { NOTLOADED=0, LOADED, POSTLOADED, KICKED }; Player(RakNet::RakNetGUID guid); unsigned short getId(); void setId(unsigned short id); bool isHandshaked(); int getHandshakeAttempts(); void incrementHandshakeAttempts(); void setHandshake(); void setLoadState(int state); int getLoadState(); virtual ~Player(); CellController::TContainer *getCells(); void sendToLoaded(mwmp::PlayerPacket *myPacket); void forEachLoaded(std::function func); private: CellController::TContainer cells; int loadState; int handshakeCounter; }; #endif //OPENMW_PLAYER_HPP