From 626a9e79bda55fcdbf44a23a4b89cb342fe61b05 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 29 Mar 2024 19:47:14 +0800 Subject: [PATCH] 1 --- server/gameserver/ingamevoice.cc | 82 ++++++++------------------------ server/gameserver/ingamevoice.h | 9 +--- 2 files changed, 20 insertions(+), 71 deletions(-) diff --git a/server/gameserver/ingamevoice.cc b/server/gameserver/ingamevoice.cc index 2d93d8b4..912d4c5b 100644 --- a/server/gameserver/ingamevoice.cc +++ b/server/gameserver/ingamevoice.cc @@ -7,6 +7,16 @@ #include "mt/InGameVoice.h" +static void IncIntMap(std::map& int_map, int key) +{ + auto itr = int_map.find(key); + if (itr == int_map.end()) { + ++itr->second; + } else { + int_map[key] = 1; + } +} + InGameVoice::InGameVoice(Room* room) { room_ = room; @@ -37,8 +47,14 @@ void InGameVoice::OnHumanBeKill(int killer_id, Human* deader) return; } personal_nodead_series_kills_.erase(deader->GetUniId()); - IncGlobalKills(); - IncPersonalKills(killer_id); + ++global_kills_; + IncIntMap(personal_kills_, killer_id); + IncIntMap(personal_nodead_series_kills_, killer_id); + //UpdateTeamBeKillLastTime(GetTeamBeKillLastTime(deader->GetTeam()->GetTeamId())); + IncPersonalSeriesKills(killer_id); + if (!killer->dead) { + IncPersonalNoDeadSeriesKills(killer_id); + } { mt::InGameVoice::Traverse ( @@ -46,54 +62,12 @@ void InGameVoice::OnHumanBeKill(int killer_id, Human* deader) InGameVoiceEventType_e::kGlobalKills, [this, killer, deader] (const mt::InGameVoice* meta) -> bool { - if (meta->MatchCond(global_times_)) { + if (meta->MatchCond(global_kills_)) { Notify(killer, deader, meta); } return true; }); } - - if (GetPersonalKills(killer_id) == 1) { - room_->SendSelfInGameVoice(killer_id, 2); - } - if (room_->GetFrameNo() - GetTeamBeKillLastTime(deader->GetTeam()->GetTeamId()) > SERVER_FRAME_RATE) { - room_->SendTeamInGameVoice(killer_id, 3, deader->GetTeam()->GetTeamId()); - room_->SendTeamInGameVoice(killer_id, 4, killer->GetTeam()->GetTeamId()); - } - UpdateTeamBeKillLastTime(GetTeamBeKillLastTime(deader->GetTeam()->GetTeamId())); - if (deader->GetTeam()->AllIsDead()) { - if (!room_->IsMobaModeRoom()) { - room_->SendTeamInGameVoice(killer_id, 5, deader->GetTeam()->GetTeamId()); - } - } - IncPersonalSeriesKills(killer_id); - if (GetPersonalSeriesKills(killer_id) > 1) { - room_->SendTeamInGameVoice(killer_id, GetPersonalSeriesKills(killer_id) - 1 + 6, killer->GetTeam()->GetTeamId()); - } - if (!killer->dead) { - IncPersonalNoDeadSeriesKills(killer_id); - } -} - -void InGameVoice::IncGlobalKills() -{ - ++global_times_; -} - -void InGameVoice::IncPersonalKills(int obj_uniid) -{ - auto itr = personal_kills_.find(obj_uniid); - if (itr == personal_kills_.end()) { - ++itr->second; - } else { - personal_kills_[obj_uniid] = 1; - } -} - -int InGameVoice::GetPersonalKills(int obj_uniid) -{ - auto itr = personal_kills_.find(obj_uniid); - return itr != personal_kills_.end() ? itr->second : 0; } void InGameVoice::UpdateTeamBeKillLastTime(int team_id) @@ -101,12 +75,6 @@ void InGameVoice::UpdateTeamBeKillLastTime(int team_id) team_bekill_last_time_hash_[team_id] = room_->GetFrameNo(); } -int InGameVoice::GetTeamBeKillLastTime(int team_id) -{ - auto itr = team_bekill_last_time_hash_.find(team_id); - return itr != team_bekill_last_time_hash_.end() ? itr->second : 0; -} - void InGameVoice::IncPersonalSeriesKills(int killer_id) { auto itr = personal_series_kills_.find(killer_id); @@ -127,12 +95,6 @@ void InGameVoice::IncPersonalSeriesKills(int killer_id) &room_->xtimer_attacher_); } -int InGameVoice::GetPersonalSeriesKills(int killer_id) -{ - auto itr = personal_series_kills_.find(killer_id); - return itr != personal_series_kills_.end() ? itr->second : 0; -} - void InGameVoice::IncPersonalNoDeadSeriesKills(int killer_id) { auto itr = personal_nodead_series_kills_.find(killer_id); @@ -153,12 +115,6 @@ void InGameVoice::IncPersonalNoDeadSeriesKills(int killer_id) &room_->xtimer_attacher_); } -int InGameVoice::GetPersonalNoDeadSeriesKills(int killer_id) -{ - auto itr = personal_nodead_series_kills_.find(killer_id); - return itr != personal_nodead_series_kills_.end() ? itr->second : 0; -} - void InGameVoice::Notify(Human* killer, Human* deader, const mt::InGameVoice* meta) { diff --git a/server/gameserver/ingamevoice.h b/server/gameserver/ingamevoice.h index 911cabbe..97cab628 100644 --- a/server/gameserver/ingamevoice.h +++ b/server/gameserver/ingamevoice.h @@ -14,22 +14,15 @@ class InGameVoice : public std::enable_shared_from_this void OnHumanBeKill(int killer_id, Human* deader); private: - - void IncGlobalKills(); - void IncPersonalKills(int obj_uniid); - int GetPersonalKills(int obj_uniid); void UpdateTeamBeKillLastTime(int team_id); - int GetTeamBeKillLastTime(int team_id); void IncPersonalSeriesKills(int killer_id); - int GetPersonalSeriesKills(int killer_id); void IncPersonalNoDeadSeriesKills(int killer_id); - int GetPersonalNoDeadSeriesKills(int killer_id); void Notify(Human* killer, Human* deader, const mt::InGameVoice* meta); private: Room* room_ = nullptr; - int global_times_ = 0; + int global_kills_ = 0; std::map personal_kills_; std::map personal_series_kills_; std::map personal_nodead_series_kills_;