From 8b122340f9699d567c29823a4d1952c0e22dd734 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 29 Mar 2024 17:00:38 +0800 Subject: [PATCH] 1 --- server/gameserver/mt/InGameVoice.cc | 30 +++++++++++++++++++++++++++-- server/gameserver/mt/InGameVoice.h | 2 +- server/gameserver/mtb/InGameVoice.h | 5 ++++- server/gameserver/mtb/mtb.all.cc | 3 ++- server/tools/protobuild/mt.proto | 1 + 5 files changed, 36 insertions(+), 5 deletions(-) diff --git a/server/gameserver/mt/InGameVoice.cc b/server/gameserver/mt/InGameVoice.cc index 2d4a8cae..31f887e2 100644 --- a/server/gameserver/mt/InGameVoice.cc +++ b/server/gameserver/mt/InGameVoice.cc @@ -71,11 +71,37 @@ namespace mt return _notify_object; } - void InGameVoice::Traverse(int event_type, std::function cb) + void InGameVoice::Traverse(bool is_moba_room, int event_type, std::function cb) { auto itr = s_type_hash_.find(event_type); if (itr != s_type_hash_.end()) { - + for (auto& ele : itr->second) { + bool ok = false; + switch (ele->play_scene()) { + case 3: + { + ok = true; + } + break; + case 2: + { + ok = !is_moba_room; + } + break; + case 1: + { + ok = is_moba_room; + } + break; + default: + { + } + break; + } + if (ok && !cb(ele)) { + return; + } + } } } diff --git a/server/gameserver/mt/InGameVoice.h b/server/gameserver/mt/InGameVoice.h index 60f7bd8e..0bf2d8ce 100644 --- a/server/gameserver/mt/InGameVoice.h +++ b/server/gameserver/mt/InGameVoice.h @@ -44,7 +44,7 @@ namespace mt void Init2(); InGameVoiceNotifyObject_e GetNotifyObject() const; - static void Traverse(int event_type, std::function cb); + static void Traverse(bool is_moba_room, int event_type, std::function cb); private: InGameVoiceNotifyObject_e _notify_object; diff --git a/server/gameserver/mtb/InGameVoice.h b/server/gameserver/mtb/InGameVoice.h index a1bd0361..312657a0 100644 --- a/server/gameserver/mtb/InGameVoice.h +++ b/server/gameserver/mtb/InGameVoice.h @@ -18,6 +18,7 @@ namespace mtb int notify_fields() const { return notify_fields_; }; int play_interval() const { return play_interval_; }; int series_kill_interval() const { return series_kill_interval_; }; + int play_scene() const { return play_scene_; }; bool has_event_type() const { return __flags__.test(0);}; bool has_moba_is_play() const { return __flags__.test(1);}; @@ -27,6 +28,7 @@ namespace mtb bool has_notify_fields() const { return __flags__.test(5);}; bool has_play_interval() const { return __flags__.test(6);}; bool has_series_kill_interval() const { return __flags__.test(7);}; + bool has_play_scene() const { return __flags__.test(8);}; protected: @@ -38,9 +40,10 @@ namespace mtb int notify_fields_ = 0; int play_interval_ = 0; int series_kill_interval_ = 0; + int play_scene_ = 0; public: - std::bitset<8> __flags__; + std::bitset<9> __flags__; }; }; diff --git a/server/gameserver/mtb/mtb.all.cc b/server/gameserver/mtb/mtb.all.cc index 7d456c20..d042e83a 100644 --- a/server/gameserver/mtb/mtb.all.cc +++ b/server/gameserver/mtb/mtb.all.cc @@ -133,7 +133,7 @@ namespace mtb { std::shared_ptr meta_class = nullptr; if (!meta_class) { - meta_class = std::make_shared("InGameVoice", 8, 0); + meta_class = std::make_shared("InGameVoice", 9, 0); meta_class->SetSimpleField(0, "event_type", a8::reflect::ET_INT32, my_offsetof2(InGameVoice, event_type_)); meta_class->SetSimpleField(1, "moba_is_play", a8::reflect::ET_INT32, my_offsetof2(InGameVoice, moba_is_play_)); meta_class->SetSimpleField(2, "sound_id", a8::reflect::ET_INT32, my_offsetof2(InGameVoice, sound_id_)); @@ -142,6 +142,7 @@ namespace mtb meta_class->SetSimpleField(5, "notify_fields", a8::reflect::ET_INT32, my_offsetof2(InGameVoice, notify_fields_)); meta_class->SetSimpleField(6, "play_interval", a8::reflect::ET_INT32, my_offsetof2(InGameVoice, play_interval_)); meta_class->SetSimpleField(7, "series_kill_interval", a8::reflect::ET_INT32, my_offsetof2(InGameVoice, series_kill_interval_)); + meta_class->SetSimpleField(8, "play_scene", a8::reflect::ET_INT32, my_offsetof2(InGameVoice, play_scene_)); } return meta_class; } diff --git a/server/tools/protobuild/mt.proto b/server/tools/protobuild/mt.proto index fc24a227..310bec90 100755 --- a/server/tools/protobuild/mt.proto +++ b/server/tools/protobuild/mt.proto @@ -68,6 +68,7 @@ message InGameVoice optional int32 notify_fields = 6; optional int32 play_interval = 7; optional int32 series_kill_interval = 8; + optional int32 play_scene = 9; } message MapArea