From ca77e15acc7949cd40315be81acba65cdf3ee26f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 27 Sep 2021 15:22:03 +0000 Subject: [PATCH] 1 --- server/gameserver/matchmgr.cc | 10 ++++++++++ server/gameserver/matchmgr.h | 2 ++ server/gameserver/matchteam.cc | 16 +++++++++++++++- server/gameserver/matchteam.h | 1 + 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/server/gameserver/matchmgr.cc b/server/gameserver/matchmgr.cc index 7f27bd8..92bd277 100644 --- a/server/gameserver/matchmgr.cc +++ b/server/gameserver/matchmgr.cc @@ -109,3 +109,13 @@ std::tuple* MatchMgr::GetMatchInfo(int socket_handle) auto itr = socket_hash_.find(socket_handle); return itr != socket_hash_.end() ? &itr->second : nullptr; } + +void MatchMgr::RemoveTeam(const std::string& team_uuid) +{ + +} + +void MatchMgr::RemoveSocket(int socket_handle) +{ + +} diff --git a/server/gameserver/matchmgr.h b/server/gameserver/matchmgr.h index f5db3d6..13997f5 100644 --- a/server/gameserver/matchmgr.h +++ b/server/gameserver/matchmgr.h @@ -32,6 +32,8 @@ public: bool NeedMatch(const cs::CMJoin& msg); MatchTeam* GetTeam(const std::string& team_uuid); std::tuple* GetMatchInfo(int socket_handle); + void RemoveTeam(const std::string& team_uuid); + void RemoveSocket(int socket_handle); private: std::map team_hash_; diff --git a/server/gameserver/matchteam.cc b/server/gameserver/matchteam.cc index 9bb12ef..333a720 100644 --- a/server/gameserver/matchteam.cc +++ b/server/gameserver/matchteam.cc @@ -281,7 +281,8 @@ std::string MatchTeam::GetTeamUUid() bool MatchTeam::IsShuaRobotTime() { - return phase_ == kMatchCombining && phase_left_time_ <= MetaMgr::Instance()->match_robot_time; + return phase_ == kMatchCombining && + phase_left_time_ <= MetaMgr::Instance()->match_robot_time; } int MatchTeam::GetPhaseLeftTime() @@ -299,3 +300,16 @@ std::shared_ptr MatchTeam::GetMemberBySocket(int socket_handle) } return std::shared_ptr(); } + +void MatchTeam::StartGame() +{ + for (auto& member : curr_member_hash_) { + if (member->socket_handle != 0) { + MatchMgr::Instance()->RemoveSocket(member->socket_handle); + } + } + for (auto& pair : combined_team_hash_) { + MatchMgr::Instance()->RemoveTeam(pair.first); + } + MatchMgr::Instance()->RemoveTeam(GetTeamUUid()); +} diff --git a/server/gameserver/matchteam.h b/server/gameserver/matchteam.h index 1af2245..9d51935 100644 --- a/server/gameserver/matchteam.h +++ b/server/gameserver/matchteam.h @@ -47,6 +47,7 @@ class MatchTeam bool IsSlaveTeam() { return master_team_ != this; }; int GetPhaseLeftTime(); std::shared_ptr GetMemberBySocket(int socket_handle); + void StartGame(); private: long long phase_start_tick_ = 0;