This commit is contained in:
aozhiwei 2024-03-31 21:32:54 +08:00
parent 8a67dda32c
commit c240b72f13
2 changed files with 26 additions and 12 deletions

View File

@ -51,6 +51,7 @@ void InGameVoice::UnInit()
void InGameVoice::OnHumanBeKill(int killer_id, Human* deader)
{
personal_nodead_series_kills_.erase(deader->GetUniId());
personal_nodead_timer_attacher_.erase(deader->GetUniId());
if (killer_id == deader->GetUniId()) {
return;
}
@ -88,18 +89,18 @@ void InGameVoice::OnHumanBeKill(int killer_id, Human* deader)
}
},
&room_->xtimer_attacher_);
#if 0
room_->xtimer.SetTimeoutWpEx
(
SERVER_FRAME_RATE * mt::InGameVoice::s_series_kill_interval,
[room = room_, killer_id] (int event, const a8::Args* args)
{
if (a8::TIMER_EXEC_EVENT == event) {
DecIntMap(room->GetInGameVoice()->personal_nodead_series_kills_, killer_id);
}
},
&room_->xtimer_attacher_);
#endif
if (!killer->dead) {
room_->xtimer.SetTimeoutWpEx
(
SERVER_FRAME_RATE * mt::InGameVoice::s_series_kill_interval,
[room = room_, killer_id] (int event, const a8::Args* args)
{
if (a8::TIMER_EXEC_EVENT == event) {
DecIntMap(room->GetInGameVoice()->personal_nodead_series_kills_, killer_id);
}
},
GetNoDeadTimerAttacher(killer_id));
}
}
}
@ -107,3 +108,14 @@ void InGameVoice::Notify(Human* killer, Human* deader, const mt::InGameVoice* me
{
}
a8::Attacher* InGameVoice::GetNoDeadTimerAttacher(int killer_id)
{
auto itr = personal_nodead_timer_attacher_.find(killer_id);
if (itr == personal_nodead_timer_attacher_.end()) {
personal_nodead_timer_attacher_[killer_id] = a8::Attacher();
itr = personal_nodead_timer_attacher_.find(killer_id);
itr->second.SetOwner(&room_->xtimer);
}
return &itr->second;
}

View File

@ -17,6 +17,7 @@ class InGameVoice : public std::enable_shared_from_this<InGameVoice>
private:
void UpdateTeamBeKillLastTime(int team_id);
a8::Attacher* GetNoDeadTimerAttacher(int killer_id);
void Notify(Human* killer, Human* deader, const mt::InGameVoice* meta);
@ -27,5 +28,6 @@ private:
std::map<int, int> personal_kills_;
std::map<int, int> personal_series_kills_;
std::map<int, int> personal_nodead_series_kills_;
std::map<int, a8::Attacher> personal_nodead_timer_attacher_;
};