From dcd3c603f363402d8847a0526c58f030b3a334b9 Mon Sep 17 00:00:00 2001 From: azw Date: Sat, 19 Aug 2023 15:10:10 +0800 Subject: [PATCH] 1 --- server/robotserver/app.cc | 19 +++++++++++++++++++ server/robotserver/handlermgr.h | 2 +- server/robotserver/player.h | 3 +++ server/robotserver/playermgr.cc | 12 ++++++++++++ server/robotserver/playermgr.h | 2 ++ 5 files changed, 37 insertions(+), 1 deletion(-) diff --git a/server/robotserver/app.cc b/server/robotserver/app.cc index 33a435dc..1755132c 100644 --- a/server/robotserver/app.cc +++ b/server/robotserver/app.cc @@ -292,6 +292,25 @@ void App::DispatchMsg() void App::ProcessGameServerMsg(f8::MsgHdr& hdr) { + f8::NetMsgHandler* handler = f8::GetNetMsgHandler(&HandlerMgr::Instance()->gsmsghandler, + hdr.msgid); + if (handler) { + switch (handler->handlerid) { + case HID_Player: + { + auto player = PlayerMgr::Instance()->GetPlayerBySocketHandle(hdr.socket_handle); + if (player) { + ProcessNetMsg(handler, player.get(), hdr); + } + } + break; + default: + { + abort(); + } + break; + } + } } void App::InitLog() diff --git a/server/robotserver/handlermgr.h b/server/robotserver/handlermgr.h index 41d5c656..1a0dc0c4 100644 --- a/server/robotserver/handlermgr.h +++ b/server/robotserver/handlermgr.h @@ -23,7 +23,7 @@ class HandlerMgr : public a8::Singleton void Init(); void UnInit(); - f8::NetMsgHandlerObject ggmsghandler; + f8::NetMsgHandlerObject gsmsghandler; void RegisterGMMsgHandler(const std::string& msgname, void (*)(std::shared_ptr)); diff --git a/server/robotserver/player.h b/server/robotserver/player.h index c739c16e..b25b2bf8 100644 --- a/server/robotserver/player.h +++ b/server/robotserver/player.h @@ -21,6 +21,9 @@ A8_DECLARE_ENUM(PlayerState_e, class Player { + public: + enum { HID = HID_Player }; + public: void Update(); diff --git a/server/robotserver/playermgr.cc b/server/robotserver/playermgr.cc index d2fcbc46..9a8107bd 100644 --- a/server/robotserver/playermgr.cc +++ b/server/robotserver/playermgr.cc @@ -113,3 +113,15 @@ void PlayerMgr::CoCreatePlayer(f8::Coroutine* co, account_id_hash_[hum->GetAccountId()] = hum; socket_id_hash_[hum->GetSocketId()] = hum; } + +std::shared_ptr PlayerMgr::GetPlayerByAccountId(const std::string& account_id) +{ + auto itr = account_id_hash_.find(account_id); + return itr != account_id_hash_.end() ? itr->second : nullptr; +} + +std::shared_ptr PlayerMgr::GetPlayerBySocketHandle(int socket_handle) +{ + auto itr = socket_id_hash_.find(socket_handle); + return itr != socket_id_hash_.end() ? itr->second : nullptr; +} diff --git a/server/robotserver/playermgr.h b/server/robotserver/playermgr.h index ccd6122b..97b648c6 100644 --- a/server/robotserver/playermgr.h +++ b/server/robotserver/playermgr.h @@ -17,6 +17,8 @@ class PlayerMgr : public a8::Singleton void Init(); void UnInit(); void Update(); + std::shared_ptr GetPlayerByAccountId(const std::string& account_id); + std::shared_ptr GetPlayerBySocketHandle(int socket_handle); private: void CoWebLogin(int idx, f8::Coroutine* co);