#pragma once class Room; class Human; class Team; class InGameVoice : public std::enable_shared_from_this { public: InGameVoice(Room* room); ~InGameVoice(); void Init(); void UnInit(); void OnHumanBeKill(int killer_id, Human* deader); void OnHumanRevive(Human* hum); void Fail(Team* team); void Victory(Team* team); long long GetLastKillFrameNo(int killer_id); private: void UpdateTeamBeKillLastTime(int team_id); void TriggerEvent(Human* killer, Human* deader); bool IsSpecSeriesKill(Human* killer, Human* deader); void Notify(Human* killer, Human* deader, const mt::InGameVoice* meta, std::function& filter_cb); private: Room* room_ = nullptr; int global_kills_ = 0; std::map personal_kills_; std::map personal_series_kills_; std::map personal_nodead_series_kills_; std::map personal_last_kill_frameno_; };