1
This commit is contained in:
parent
4cf121426d
commit
6b761b68fc
@ -170,9 +170,11 @@ void InGameVoice::Notify(Human* killer, Human* deader, const mt::InGameVoice* me
|
||||
{
|
||||
room_->TraverseHumanList
|
||||
(
|
||||
[p] (Human* hum) -> bool
|
||||
[p, &filter_cb] (Human* hum) -> bool
|
||||
{
|
||||
hum->GetFrameData().voices_.push_back(p);
|
||||
if (filter_cb(hum)) {
|
||||
hum->GetFrameData().voices_.push_back(p);
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
@ -180,17 +182,21 @@ void InGameVoice::Notify(Human* killer, Human* deader, const mt::InGameVoice* me
|
||||
|
||||
case InGameVoiceNotifyObject_e::kKiller:
|
||||
{
|
||||
killer->GetFrameData().voices_.push_back(p);
|
||||
if (filter_cb(killer)) {
|
||||
killer->GetFrameData().voices_.push_back(p);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case InGameVoiceNotifyObject_e::kNoKiller:
|
||||
{
|
||||
room_->TraverseHumanList
|
||||
(
|
||||
[p, killer, deader] (Human* hum) -> bool
|
||||
[p, killer, deader, &filter_cb] (Human* hum) -> bool
|
||||
{
|
||||
if (hum != killer) {
|
||||
hum->GetFrameData().voices_.push_back(p);
|
||||
if (filter_cb(hum)) {
|
||||
if (hum != killer) {
|
||||
hum->GetFrameData().voices_.push_back(p);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
});
|
||||
@ -200,10 +206,12 @@ void InGameVoice::Notify(Human* killer, Human* deader, const mt::InGameVoice* me
|
||||
{
|
||||
room_->TraverseHumanList
|
||||
(
|
||||
[p, killer, deader] (Human* hum) -> bool
|
||||
[p, killer, deader, &filter_cb] (Human* hum) -> bool
|
||||
{
|
||||
if (hum->GetTeam() == killer->GetTeam()) {
|
||||
hum->GetFrameData().voices_.push_back(p);
|
||||
if (filter_cb(hum)) {
|
||||
if (hum->GetTeam() == killer->GetTeam()) {
|
||||
hum->GetFrameData().voices_.push_back(p);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
});
|
||||
@ -213,10 +221,12 @@ void InGameVoice::Notify(Human* killer, Human* deader, const mt::InGameVoice* me
|
||||
{
|
||||
room_->TraverseHumanList
|
||||
(
|
||||
[p, killer, deader] (Human* hum) -> bool
|
||||
[p, killer, deader, &filter_cb] (Human* hum) -> bool
|
||||
{
|
||||
if (hum->GetTeam() != killer->GetTeam()) {
|
||||
hum->GetFrameData().voices_.push_back(p);
|
||||
if (filter_cb(hum)) {
|
||||
if (hum->GetTeam() != killer->GetTeam()) {
|
||||
hum->GetFrameData().voices_.push_back(p);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
});
|
||||
@ -225,17 +235,21 @@ void InGameVoice::Notify(Human* killer, Human* deader, const mt::InGameVoice* me
|
||||
|
||||
case InGameVoiceNotifyObject_e::kDead:
|
||||
{
|
||||
deader->GetFrameData().voices_.push_back(p);
|
||||
if (filter_cb(deader)) {
|
||||
deader->GetFrameData().voices_.push_back(p);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case InGameVoiceNotifyObject_e::kNoDead:
|
||||
{
|
||||
room_->TraverseHumanList
|
||||
(
|
||||
[p, killer, deader] (Human* hum) -> bool
|
||||
[p, killer, deader, &filter_cb] (Human* hum) -> bool
|
||||
{
|
||||
if (hum != deader) {
|
||||
hum->GetFrameData().voices_.push_back(p);
|
||||
if (filter_cb(hum)) {
|
||||
if (hum != deader) {
|
||||
hum->GetFrameData().voices_.push_back(p);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
});
|
||||
@ -245,10 +259,12 @@ void InGameVoice::Notify(Human* killer, Human* deader, const mt::InGameVoice* me
|
||||
{
|
||||
room_->TraverseHumanList
|
||||
(
|
||||
[p, killer, deader] (Human* hum) -> bool
|
||||
[p, killer, deader, &filter_cb] (Human* hum) -> bool
|
||||
{
|
||||
if (hum->GetTeam() == deader->GetTeam()) {
|
||||
hum->GetFrameData().voices_.push_back(p);
|
||||
if (filter_cb(hum)) {
|
||||
if (hum->GetTeam() == deader->GetTeam()) {
|
||||
hum->GetFrameData().voices_.push_back(p);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
});
|
||||
@ -258,10 +274,12 @@ void InGameVoice::Notify(Human* killer, Human* deader, const mt::InGameVoice* me
|
||||
{
|
||||
room_->TraverseHumanList
|
||||
(
|
||||
[p, killer, deader] (Human* hum) -> bool
|
||||
[p, killer, deader, &filter_cb] (Human* hum) -> bool
|
||||
{
|
||||
if (hum->GetTeam() != deader->GetTeam()) {
|
||||
hum->GetFrameData().voices_.push_back(p);
|
||||
if (filter_cb(hum)) {
|
||||
if (hum->GetTeam() != deader->GetTeam()) {
|
||||
hum->GetFrameData().voices_.push_back(p);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
});
|
||||
@ -271,11 +289,13 @@ void InGameVoice::Notify(Human* killer, Human* deader, const mt::InGameVoice* me
|
||||
{
|
||||
room_->TraverseHumanList
|
||||
(
|
||||
[p, killer, deader] (Human* hum) -> bool
|
||||
[p, killer, deader, &filter_cb] (Human* hum) -> bool
|
||||
{
|
||||
if (hum->GetTeam() == deader->GetTeam() &&
|
||||
hum != deader) {
|
||||
hum->GetFrameData().voices_.push_back(p);
|
||||
if (filter_cb(hum)) {
|
||||
if (hum->GetTeam() == deader->GetTeam() &&
|
||||
hum != deader) {
|
||||
hum->GetFrameData().voices_.push_back(p);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
});
|
||||
@ -330,42 +350,54 @@ void InGameVoice::TriggerEvent(Human* killer, Human* deader)
|
||||
if (is_first_boold) {
|
||||
return;
|
||||
}
|
||||
{
|
||||
if (!is_first_boold) {
|
||||
int val = GetIntMap(personal_nodead_series_kills_, killer->GetUniId());
|
||||
mt::InGameVoice::Traverse
|
||||
(
|
||||
room_->IsMobaModeRoom(),
|
||||
InGameVoiceEventType_e::kNoDeadSeriesKills,
|
||||
[this, killer, deader, val, &sent, &filter_cb] (const mt::InGameVoice* meta) -> bool
|
||||
{
|
||||
if (meta->MatchCond(val)) {
|
||||
Notify(killer, deader, meta, filter_cb);
|
||||
sent = true;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
}
|
||||
if (sent) {
|
||||
return;
|
||||
}
|
||||
std::map<int, long long> killer_flags;
|
||||
filter_cb =
|
||||
[&killer_flags] (Human* hum) -> bool
|
||||
{
|
||||
if (killer_flags.find(hum->GetUniId()) != killer_flags.end()) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
{
|
||||
bool sent1 = false;
|
||||
{
|
||||
int val = GetIntMap(personal_series_kills_, killer->GetUniId());
|
||||
mt::InGameVoice::Traverse
|
||||
(
|
||||
room_->IsMobaModeRoom(),
|
||||
InGameVoiceEventType_e::kSeriesKills,
|
||||
[this, killer, deader, val, &sent, &filter_cb] (const mt::InGameVoice* meta) -> bool
|
||||
[this, killer, deader, val, &sent1, &filter_cb, &killer_flags]
|
||||
(const mt::InGameVoice* meta) -> bool
|
||||
{
|
||||
if (meta->MatchCond(val)) {
|
||||
Notify(killer, deader, meta, filter_cb);
|
||||
killer_flags[killer->GetUniId()] = 1;
|
||||
sent1 = true;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
if (!sent1) {
|
||||
int val = GetIntMap(personal_nodead_series_kills_, killer->GetUniId());
|
||||
mt::InGameVoice::Traverse
|
||||
(
|
||||
room_->IsMobaModeRoom(),
|
||||
InGameVoiceEventType_e::kNoDeadSeriesKills,
|
||||
[this, killer, deader, val, &sent, &filter_cb, &killer_flags]
|
||||
(const mt::InGameVoice* meta) -> bool
|
||||
{
|
||||
if (meta->MatchCond(val)) {
|
||||
Notify(killer, deader, meta, filter_cb);
|
||||
killer_flags[killer->GetUniId()] = 1;
|
||||
sent = true;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
if (sent) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
{
|
||||
@ -374,10 +406,12 @@ void InGameVoice::TriggerEvent(Human* killer, Human* deader)
|
||||
(
|
||||
room_->IsMobaModeRoom(),
|
||||
InGameVoiceEventType_e::kPersonalExceptFirstBooldKills,
|
||||
[this, killer, deader, val, &filter_cb] (const mt::InGameVoice* meta) -> bool
|
||||
[this, killer, deader, val, &filter_cb, &killer_flags]
|
||||
(const mt::InGameVoice* meta) -> bool
|
||||
{
|
||||
if (meta->MatchCond(val)) {
|
||||
Notify(killer, deader, meta, filter_cb);
|
||||
killer_flags[killer->GetUniId()] = 1;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
@ -389,7 +423,8 @@ void InGameVoice::TriggerEvent(Human* killer, Human* deader)
|
||||
(
|
||||
room_->IsMobaModeRoom(),
|
||||
InGameVoiceEventType_e::kTeamAllDead,
|
||||
[this, killer, deader, &filter_cb] (const mt::InGameVoice* meta) -> bool
|
||||
[this, killer, deader, &filter_cb, &killer_flags]
|
||||
(const mt::InGameVoice* meta) -> bool
|
||||
{
|
||||
Notify(killer, deader, meta, filter_cb);
|
||||
return true;
|
||||
@ -399,7 +434,8 @@ void InGameVoice::TriggerEvent(Human* killer, Human* deader)
|
||||
(
|
||||
room_->IsMobaModeRoom(),
|
||||
InGameVoiceEventType_e::kHeroBeKill,
|
||||
[this, killer, deader, &filter_cb] (const mt::InGameVoice* meta) -> bool
|
||||
[this, killer, deader, &filter_cb, &killer_flags]
|
||||
(const mt::InGameVoice* meta) -> bool
|
||||
{
|
||||
Notify(killer, deader, meta, filter_cb);
|
||||
return true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user