#pragma once namespace cs { class CMJoin; } namespace ss { class SS_WSP_SocketDisconnect; class SS_Ping; } class Player; class PlayerMgr : public a8::Singleton { public: enum { HID = HID_PlayerMgr }; private: PlayerMgr() {}; friend class a8::Singleton; public: void Init(); void UnInit(); void _SS_WSP_SocketDisconnect(f8::MsgHdr& hdr, const ss::SS_WSP_SocketDisconnect& msg); void _SS_Ping(f8::MsgHdr& hdr, const ss::SS_Ping& msg); int OnlineNum(); Player* GetPlayerBySocket(int socket); Player* CreatePlayerByCMJoin(Player* hum, long ip_saddr, int socket, const cs::CMJoin& msg); void OnClientDisconnect(a8::XParams& param); void RemovePlayerBySocket(int socket_handle); size_t GetAccountNum() { return account_num_hash_.size(); } void IncAccountNum(const std::string& account_id); void DecAccountNum(const std::string& account_id); void ReBindSocket(Player* hum); private: std::map socket_hash_; std::map account_num_hash_; };