From e960171497876ce44b3498c7d0fd8e8efa1b98a9 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 1 Apr 2024 10:34:21 +0800 Subject: [PATCH] 1 --- server/gameserver/framemaker.cc | 29 +++++++++++++++++++++++++++++ server/gameserver/framemaker.h | 1 + 2 files changed, 30 insertions(+) diff --git a/server/gameserver/framemaker.cc b/server/gameserver/framemaker.cc index c47b1f96..f82d6bfc 100644 --- a/server/gameserver/framemaker.cc +++ b/server/gameserver/framemaker.cc @@ -15,6 +15,7 @@ #include "sandtable.h" #include "mt/AirLine.h" +#include "mt/Hero.h" void FrameMaker::Debug_FullObject(Human* hum) { @@ -120,6 +121,7 @@ std::shared_ptr FrameMaker::MakeUpdateMsg(Human* hum) SerializeChgedCars(msg.get(), room, hum, framedata); SerializeChgedProps(msg.get(), room, hum, framedata); SerializeDelBullets(msg.get(), room, hum, framedata); + SerializeVoices(msg.get(), room, hum, framedata); PostProcess(msg.get(), room, hum, framedata); return msg; } @@ -607,3 +609,30 @@ void FrameMaker::SerializeDelBullets(cs::SMUpdate* msg, Room* room, Human* hum, } } } + +void FrameMaker::SerializeVoices(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata) +{ + if (!framedata->voices_.empty()) { + msg->mutable_ingame_voices()->Reserve(framedata->voices_.size()); + for (auto& v : framedata->voices_) { + auto p = msg->add_ingame_voices(); + p->set_voice_id(v->voice_id); + if (v->killer_id) { + Human* hum = room->GetHumanByUniId(v->killer_id); + if (hum) { + p->mutable_kill_info()->set_killer_uniid(hum->GetUniId()); + p->mutable_kill_info()->set_killer_name(hum->GetName()); + p->mutable_kill_info()->set_killer_hero_id(hum->GetHeroMeta()->id()); + } + } + if (v->dead_id) { + Human* hum = room->GetHumanByUniId(v->dead_id); + if (hum) { + p->mutable_kill_info()->set_dead_uniid(hum->GetUniId()); + p->mutable_kill_info()->set_dead_name(hum->GetName()); + p->mutable_kill_info()->set_dead_hero_id(hum->GetHeroMeta()->id()); + } + } + } + } +} diff --git a/server/gameserver/framemaker.h b/server/gameserver/framemaker.h index 7c9dfd00..31c9cd6e 100644 --- a/server/gameserver/framemaker.h +++ b/server/gameserver/framemaker.h @@ -44,4 +44,5 @@ private: void SerializeChgedCars(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata); void SerializeChgedProps(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata); void SerializeDelBullets(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata); + void SerializeVoices(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata); };