48 lines
1.1 KiB
C++
48 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include <a8/singleton.h>
|
|
|
|
namespace cs
|
|
{
|
|
class CMJoin;
|
|
}
|
|
|
|
namespace ss
|
|
{
|
|
class SS_WSP_SocketDisconnect;
|
|
class SS_Ping;
|
|
}
|
|
|
|
class Player;
|
|
class PlayerMgr : public a8::Singleton<PlayerMgr>
|
|
{
|
|
public:
|
|
enum { HID = HID_PlayerMgr };
|
|
|
|
private:
|
|
PlayerMgr() {};
|
|
friend class a8::Singleton<PlayerMgr>;
|
|
|
|
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 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:
|
|
void OnClientDisconnect(int gg_socket);
|
|
private:
|
|
std::map<int, Player*> socket_hash_;
|
|
std::map<std::string, int> account_num_hash_;
|
|
};
|