// // Created by koncord on 02.01.16. // #ifndef OPENMW_PLAYER_HPP #define OPENMW_PLAYER_HPP #include <components/esm/loadnpc.hpp> #include <apps/openmw/mwworld/manualref.hpp> #include <map> #include <apps/openmw/mwmechanics/aisequence.hpp> #include <RakNetTypes.h> #include <components/openmw-mp/Base/BasePlayer.hpp> namespace mwmp { struct DedicatedPlayer; class Players { public: static DedicatedPlayer *NewPlayer(RakNet::RakNetGUID guid); static void CreatePlayer(RakNet::RakNetGUID guid); static void DisconnectPlayer(RakNet::RakNetGUID guid); static void CleanUp(); static DedicatedPlayer *GetPlayer(RakNet::RakNetGUID guid); static DedicatedPlayer *GetPlayer(const MWWorld::Ptr &ptr); static void Update(float dt); private: static std::map<RakNet::RakNetGUID, DedicatedPlayer *> players; }; class DedicatedPlayer : public BasePlayer { friend class Players; public: MWWorld::Ptr getPtr(); MWWorld::Ptr getLiveCellPtr(); MWWorld::ManualRef* getRef(); void Move(float dt); void UpdateDrawState(); void UpdateInventory(); void updateCell(); private: DedicatedPlayer(RakNet::RakNetGUID guid); virtual ~DedicatedPlayer(); void UpdatePtr(MWWorld::Ptr newPtr); const std::string GetAnim(); int state; MWWorld::ManualRef* reference; MWWorld::Ptr ptr; }; } #endif //OPENMW_PLAYER_HPP