From 785c62e3aff8ff95c6dcc2ffcaf5c38e03caef4f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 28 Sep 2021 09:45:13 +0000 Subject: [PATCH] 1 --- server/gameserver/matchteam.cc | 29 ++++++++++++++++++++++++++++- server/gameserver/matchteam.h | 2 ++ server/gameserver/metamgr.cc | 2 +- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/server/gameserver/matchteam.cc b/server/gameserver/matchteam.cc index d93d76a..65c9f26 100644 --- a/server/gameserver/matchteam.cc +++ b/server/gameserver/matchteam.cc @@ -13,7 +13,7 @@ void RawTeamMember::FillMFMatchTeamMember(cs::MFMatchTeamMember* p) p->set_account_id(msg.account_id()); p->set_name(msg.name()); p->set_avatar_url(msg.avatar_url()); - if (choose_hero_times > 0) { + if (choose_hero_times <= 0) { p->set_hero_id(0); } else { p->set_hero_id(msg.hero_id()); @@ -221,7 +221,21 @@ void MatchTeam::UpdateMaster() break; case kMatchChoose: { + if (phase_left_time_ <= 10) { + if (last_auto_choose_tick_ <= 0) { + AutoChoose(); + last_auto_choose_tick_ = a8::XGetTickCount(); + } else { + if (a8::XGetTickCount() - last_auto_choose_tick_ > (last_auto_choose_tick_ % 3000)) { + AutoChoose(); + last_auto_choose_tick_ = a8::XGetTickCount(); + } + } + } if (phase_left_time_ <= 0) { + for (int i = 0; i < 4; ++i) { + AutoChoose(true); + } phase_ = kMatchLock; phase_start_tick_ = a8::XGetTickCount(); countdown_ = MetaMgr::Instance()->match_lock_time; @@ -420,3 +434,16 @@ void MatchTeam::ChooseLeader() member->is_leader = false; } } + +void MatchTeam::AutoChoose(bool force) +{ + for (auto& member : curr_member_hash_) { + if (member->choose_hero_times <= 0) { + if (member->is_robot){ + ++member->choose_hero_times; + } else if (force) { + ++member->choose_hero_times; + } + } + } +} diff --git a/server/gameserver/matchteam.h b/server/gameserver/matchteam.h index f81f414..1ca3985 100644 --- a/server/gameserver/matchteam.h +++ b/server/gameserver/matchteam.h @@ -82,6 +82,7 @@ class MatchTeam void ShuaRobot(); void StartGame(); void ChooseLeader(); + void AutoChoose(bool force = false); private: long long phase_start_tick_ = 0; @@ -91,6 +92,7 @@ class MatchTeam long long create_tick_ = 0; std::map> raw_member_hash_; std::shared_ptr first_member_; + long long last_auto_choose_tick_ = 0; std::map combined_team_hash_; MatchTeam* master_team_ = nullptr; diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index 3d8377e..2161bf4 100644 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -348,7 +348,7 @@ public: #ifdef DEBUG MetaMgr::Instance()->match_team_time = 10; MetaMgr::Instance()->match_robot_time = 5; - MetaMgr::Instance()->match_choose_time = 60; + MetaMgr::Instance()->match_choose_time = 30; MetaMgr::Instance()->match_lock_time = 10; #endif {