diff --git a/server/gameserver/matchmgr.cc b/server/gameserver/matchmgr.cc index 2aa6d53..47ca215 100644 --- a/server/gameserver/matchmgr.cc +++ b/server/gameserver/matchmgr.cc @@ -39,17 +39,26 @@ void MatchMgr::_CMJoin(f8::MsgHdr& hdr, const cs::CMJoin& msg) void MatchMgr::_CMMatchCancel(f8::MsgHdr& hdr, const cs::CMMatchCancel& msg) { - + auto match_info = GetMatchInfo(hdr.socket_handle); + if (match_info) { + std::get<1>(*match_info)->_CMMatchCancel(hdr, msg); + } } void MatchMgr::_CMMatchChoose(f8::MsgHdr& hdr, const cs::CMMatchChoose& msg) { - + auto match_info = GetMatchInfo(hdr.socket_handle); + if (match_info) { + std::get<1>(*match_info)->_CMMatchChoose(hdr, msg); + } } void MatchMgr::_CMMatchStartGame(f8::MsgHdr& hdr, const cs::CMMatchStartGame& msg) { - + auto match_info = GetMatchInfo(hdr.socket_handle); + if (match_info) { + std::get<1>(*match_info)->_CMMatchStartGame(hdr, msg); + } } bool MatchMgr::NeedMatch(const cs::CMJoin& msg) @@ -90,3 +99,9 @@ void MatchMgr::TraverseTeam(std::function func) } } } + +std::tuple* MatchMgr::GetMatchInfo(int socket_handle) +{ + auto itr = socket_hash_.find(socket_handle); + return itr != socket_hash_.end() ? &itr->second : nullptr; +} diff --git a/server/gameserver/matchmgr.h b/server/gameserver/matchmgr.h index 128eec2..f5db3d6 100644 --- a/server/gameserver/matchmgr.h +++ b/server/gameserver/matchmgr.h @@ -31,8 +31,9 @@ public: bool NeedMatch(const cs::CMJoin& msg); MatchTeam* GetTeam(const std::string& team_uuid); + std::tuple* GetMatchInfo(int socket_handle); private: std::map team_hash_; - std::map socket_hash_; + std::map> socket_hash_; }; diff --git a/server/gameserver/matchteam.cc b/server/gameserver/matchteam.cc index 3e7eb4c..576591d 100644 --- a/server/gameserver/matchteam.cc +++ b/server/gameserver/matchteam.cc @@ -42,6 +42,21 @@ void MatchTeam::Init(f8::MsgHdr& hdr, const cs::CMJoin& msg) AddRawMember(hdr, msg); } +void MatchTeam::_CMMatchCancel(f8::MsgHdr& hdr, const cs::CMMatchCancel& msg) +{ + +} + +void MatchTeam::_CMMatchChoose(f8::MsgHdr& hdr, const cs::CMMatchChoose& msg) +{ + +} + +void MatchTeam::_CMMatchStartGame(f8::MsgHdr& hdr, const cs::CMMatchStartGame& msg) +{ + +} + void MatchTeam::AddRawMember(f8::MsgHdr& hdr, const cs::CMJoin& msg) { std::shared_ptr member = std::make_shared(); diff --git a/server/gameserver/matchteam.h b/server/gameserver/matchteam.h index 30b5848..318b29f 100644 --- a/server/gameserver/matchteam.h +++ b/server/gameserver/matchteam.h @@ -21,6 +21,11 @@ class MatchTeam a8::TimerAttacher timer_attacher; void Init(f8::MsgHdr& hdr, const cs::CMJoin& msg); + + void _CMMatchCancel(f8::MsgHdr& hdr, const cs::CMMatchCancel& msg); + void _CMMatchChoose(f8::MsgHdr& hdr, const cs::CMMatchChoose& msg); + void _CMMatchStartGame(f8::MsgHdr& hdr, const cs::CMMatchStartGame& msg); + void AddRawMember(f8::MsgHdr& hdr, const cs::CMJoin& msg); bool IsRawMember(const std::string& account_id); bool IsValidMember(const cs::CMJoin& msg);