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