From 36b6064ce9006f7970550784b066799bf964c28a Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 25 Mar 2024 19:21:52 +0800 Subject: [PATCH] 2 --- server/gameserver/app.cc | 10 ++++++++++ server/gameserver/constant.h | 2 +- server/gameserver/custom_member.cc | 5 +++++ server/gameserver/custom_member.h | 11 ++++++++++- server/gameserver/handlermgr.cc | 3 +++ server/gameserver/roommgr.cc | 6 ++++++ server/gameserver/roommgr.h | 3 +++ 7 files changed, 38 insertions(+), 2 deletions(-) diff --git a/server/gameserver/app.cc b/server/gameserver/app.cc index 0d6aaece..dd42ec81 100644 --- a/server/gameserver/app.cc +++ b/server/gameserver/app.cc @@ -166,6 +166,16 @@ void App::ProcessGameGateMsg(f8::MsgHdr* hdr) } } break; + case HID_CustomMember: + { + auto member = RoomMgr::Instance()->GetCustomMemberBySocket(hdr->socket_handle); + if (member) { + ProcessNetMsg(handler, member.get(), hdr); + } + } + break; + default: + break; } } } diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index 3c25e6ee..a33c546a 100644 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -21,7 +21,7 @@ enum NetHandler_e HID_RoomMgr, HID_MatchMgr, HID_MatchTeam, - HID_CustomBattle, + HID_CustomMember, HID_GGListener, }; diff --git a/server/gameserver/custom_member.cc b/server/gameserver/custom_member.cc index 6ffe05e8..8a7bb34f 100644 --- a/server/gameserver/custom_member.cc +++ b/server/gameserver/custom_member.cc @@ -19,3 +19,8 @@ bool CustomMember::IsView() { return team_->IsView(); } + +void CustomMember::_CMBattlePreSetReady(f8::MsgHdr* hdr, const cs::CMBattlePreSetReady& msg) +{ + +} diff --git a/server/gameserver/custom_member.h b/server/gameserver/custom_member.h index ba1fb9cd..31f20a62 100644 --- a/server/gameserver/custom_member.h +++ b/server/gameserver/custom_member.h @@ -1,10 +1,18 @@ #pragma once +namespace cs +{ + class CMBattlePreSetReady; +} + struct BattleDataContext; class Player; class CustomTeam; class CustomMember { + public: + enum { HID = HID_CustomMember }; + public: int GetSocketHandle() { return socket_handle_; } @@ -22,8 +30,9 @@ class CustomMember int GetHeadFrame() { return head_frame_; } int GetSex() { return sex_; } std::shared_ptr& GetNetData() { return battle_context_; }; + void _CMBattlePreSetReady(f8::MsgHdr* hdr, const cs::CMBattlePreSetReady& msg); - private: +private: std::shared_ptr join_msg_; int socket_handle_ = 0; long ip_saddr_ = 0; diff --git a/server/gameserver/handlermgr.cc b/server/gameserver/handlermgr.cc index bbf5349a..cd28342f 100644 --- a/server/gameserver/handlermgr.cc +++ b/server/gameserver/handlermgr.cc @@ -13,6 +13,7 @@ #include "player.h" #include "playermgr.h" #include "roommgr.h" +#include "custom_member.h" #include "cs_proto.pb.h" #include "ss_proto.pb.h" #include "jsondatamgr.h" @@ -106,6 +107,8 @@ void HandlerMgr::RegisterNetMsgHandlers() RegisterNetMsgHandler(&ggmsghandler, &RoomMgr::_CMReconnect); RegisterNetMsgHandler(&ggmsghandler, &RoomMgr::_CMPing); + RegisterNetMsgHandler(&ggmsghandler, &CustomMember::_CMBattlePreSetReady); + #if 0 RegisterNetMsgHandler(&ggmsghandler, &MatchTeam::_CMMatchCancel); RegisterNetMsgHandler(&ggmsghandler, &MatchTeam::_CMMatchChoose); diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index 8f58d1ba..46b4bdd6 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -752,3 +752,9 @@ bool RoomMgr::HasTask() { return !room_hash_.empty(); } + +std::shared_ptr RoomMgr::GetCustomMemberBySocket(int socket_handle) +{ + auto itr = socket_hash_.find(socket_handle); + return itr != socket_hash_.end() ? itr->second : nullptr; +} diff --git a/server/gameserver/roommgr.h b/server/gameserver/roommgr.h index 5e8a1cbd..e7ea6227 100644 --- a/server/gameserver/roommgr.h +++ b/server/gameserver/roommgr.h @@ -25,6 +25,7 @@ class GridService; class MapService; class MapInstance; class CustomBattle; +class CustomMember; struct RoomInitInfo { int room_idx = 0; @@ -82,6 +83,7 @@ class RoomMgr : public a8::Singleton void SetMatchMode(int mode); bool HasTask(); void OnJoinRoomOk(const cs::CMJoin& msg, Player* hum); + std::shared_ptr GetCustomMemberBySocket(int socket_handle); private: void InstallReportStateTimer(); @@ -122,4 +124,5 @@ class RoomMgr : public a8::Singleton std::map gm_hash_; std::map> custom_room_hash_; std::map> his_custom_room_hash_; + std::map> socket_hash_; };