1
This commit is contained in:
parent
92af08015d
commit
626a9e79bd
@ -7,6 +7,16 @@
|
|||||||
|
|
||||||
#include "mt/InGameVoice.h"
|
#include "mt/InGameVoice.h"
|
||||||
|
|
||||||
|
static void IncIntMap(std::map<int, int>& 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)
|
InGameVoice::InGameVoice(Room* room)
|
||||||
{
|
{
|
||||||
room_ = room;
|
room_ = room;
|
||||||
@ -37,8 +47,14 @@ void InGameVoice::OnHumanBeKill(int killer_id, Human* deader)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
personal_nodead_series_kills_.erase(deader->GetUniId());
|
personal_nodead_series_kills_.erase(deader->GetUniId());
|
||||||
IncGlobalKills();
|
++global_kills_;
|
||||||
IncPersonalKills(killer_id);
|
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
|
mt::InGameVoice::Traverse
|
||||||
(
|
(
|
||||||
@ -46,54 +62,12 @@ void InGameVoice::OnHumanBeKill(int killer_id, Human* deader)
|
|||||||
InGameVoiceEventType_e::kGlobalKills,
|
InGameVoiceEventType_e::kGlobalKills,
|
||||||
[this, killer, deader] (const mt::InGameVoice* meta) -> bool
|
[this, killer, deader] (const mt::InGameVoice* meta) -> bool
|
||||||
{
|
{
|
||||||
if (meta->MatchCond(global_times_)) {
|
if (meta->MatchCond(global_kills_)) {
|
||||||
Notify(killer, deader, meta);
|
Notify(killer, deader, meta);
|
||||||
}
|
}
|
||||||
return true;
|
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)
|
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();
|
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)
|
void InGameVoice::IncPersonalSeriesKills(int killer_id)
|
||||||
{
|
{
|
||||||
auto itr = personal_series_kills_.find(killer_id);
|
auto itr = personal_series_kills_.find(killer_id);
|
||||||
@ -127,12 +95,6 @@ void InGameVoice::IncPersonalSeriesKills(int killer_id)
|
|||||||
&room_->xtimer_attacher_);
|
&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)
|
void InGameVoice::IncPersonalNoDeadSeriesKills(int killer_id)
|
||||||
{
|
{
|
||||||
auto itr = personal_nodead_series_kills_.find(killer_id);
|
auto itr = personal_nodead_series_kills_.find(killer_id);
|
||||||
@ -153,12 +115,6 @@ void InGameVoice::IncPersonalNoDeadSeriesKills(int killer_id)
|
|||||||
&room_->xtimer_attacher_);
|
&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)
|
void InGameVoice::Notify(Human* killer, Human* deader, const mt::InGameVoice* meta)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -14,22 +14,15 @@ class InGameVoice : public std::enable_shared_from_this<InGameVoice>
|
|||||||
void OnHumanBeKill(int killer_id, Human* deader);
|
void OnHumanBeKill(int killer_id, Human* deader);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void IncGlobalKills();
|
|
||||||
void IncPersonalKills(int obj_uniid);
|
|
||||||
int GetPersonalKills(int obj_uniid);
|
|
||||||
void UpdateTeamBeKillLastTime(int team_id);
|
void UpdateTeamBeKillLastTime(int team_id);
|
||||||
int GetTeamBeKillLastTime(int team_id);
|
|
||||||
void IncPersonalSeriesKills(int killer_id);
|
void IncPersonalSeriesKills(int killer_id);
|
||||||
int GetPersonalSeriesKills(int killer_id);
|
|
||||||
void IncPersonalNoDeadSeriesKills(int killer_id);
|
void IncPersonalNoDeadSeriesKills(int killer_id);
|
||||||
int GetPersonalNoDeadSeriesKills(int killer_id);
|
|
||||||
|
|
||||||
void Notify(Human* killer, Human* deader, const mt::InGameVoice* meta);
|
void Notify(Human* killer, Human* deader, const mt::InGameVoice* meta);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Room* room_ = nullptr;
|
Room* room_ = nullptr;
|
||||||
int global_times_ = 0;
|
int global_kills_ = 0;
|
||||||
std::map<int, int> personal_kills_;
|
std::map<int, int> personal_kills_;
|
||||||
std::map<int, int> personal_series_kills_;
|
std::map<int, int> personal_series_kills_;
|
||||||
std::map<int, int> personal_nodead_series_kills_;
|
std::map<int, int> personal_nodead_series_kills_;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user