This commit is contained in:
aozhiwei 2023-05-29 19:05:25 +08:00
parent b5d5823dfa
commit 2b8e88adfc
10 changed files with 61 additions and 67 deletions

View File

@ -49,9 +49,6 @@ void FrameData::ClearFrameData(Human* hum)
if (!explosions_.empty()) { if (!explosions_.empty()) {
explosions_.clear(); explosions_.clear();
} }
if (!smokes_.empty()) {
smokes_.clear();
}
if (!play_skills_.empty()) { if (!play_skills_.empty()) {
play_skills_.clear(); play_skills_.clear();
} }

View File

@ -27,7 +27,6 @@ class FrameData
std::vector<int> shots_; std::vector<int> shots_;
std::vector<int> emotes_; std::vector<int> emotes_;
std::vector<int> bullets_; std::vector<int> bullets_;
std::vector<int> smokes_;
std::vector<int> play_skills_; std::vector<int> play_skills_;
std::vector<int> explosions_; std::vector<int> explosions_;
std::vector<int> chged_buffs_; std::vector<int> chged_buffs_;

View File

@ -222,32 +222,6 @@ void FrameEvent::AddBulletNumChg(CreatureWeakPtr& sender)
} }
} }
void FrameEvent::AddSmoke(Bullet* bullet, int item_id, glm::vec3 pos, float time_addition)
{
if (!bullet->sender.Get()) {
return;
}
{
auto& tuple = a8::FastAppend(room->frame_event_data->smokes_);
std::get<0>(tuple).Attach(bullet->sender.Get());
auto& p = std::get<1>(tuple);
p.set_item_id(item_id);
TypeConvert::ToPb(pos, p.mutable_pos());
p.set_player_id(bullet->sender.Get()->GetUniId());
p.set_time_addition(time_addition);
}
{
int idx = room->frame_event_data->smokes_.size() - 1;
bullet->sender.Get()->TraverseAllLayerHumanList
(
[idx] (Human* hum, bool& stop)
{
hum->GetFrameData().smokes_.push_back(idx);
});
}
}
void FrameEvent::AddPlaySkill(CreatureWeakPtr& sender, int skill_id) void FrameEvent::AddPlaySkill(CreatureWeakPtr& sender, int skill_id)
{ {
if (!sender.Get()) { if (!sender.Get()) {

View File

@ -29,7 +29,6 @@ public:
std::shared_ptr<std::set<int>> reporter_list); std::shared_ptr<std::set<int>> reporter_list);
void RemoveBullet(glm::vec3 pos, int bullet_uniid); void RemoveBullet(glm::vec3 pos, int bullet_uniid);
void AddExplosion(Bullet* bullet, int item_id, Position bomb_pos); void AddExplosion(Bullet* bullet, int item_id, Position bomb_pos);
void AddSmoke(Bullet* bullet, int item_id, glm::vec3 pos, float time_addition);
void AddPlaySkill(CreatureWeakPtr& sender, int skill_id); void AddPlaySkill(CreatureWeakPtr& sender, int skill_id);
void AddExplosionEx(CreatureWeakPtr& sender, int item_id, Position bomb_pos, int effect); void AddExplosionEx(CreatureWeakPtr& sender, int item_id, Position bomb_pos, int effect);
void AddBulletNumChg(CreatureWeakPtr& sender); void AddBulletNumChg(CreatureWeakPtr& sender);

View File

@ -106,7 +106,6 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(Human* hum)
SerializeShots(msg, room, hum, framedata); SerializeShots(msg, room, hum, framedata);
SerializeEmotes(msg, room, hum, framedata); SerializeEmotes(msg, room, hum, framedata);
SerializeBullets(msg, room, hum, framedata); SerializeBullets(msg, room, hum, framedata);
SerializeSmokes(msg, room, hum, framedata);
SerializePlaySkills(msg, room, hum, framedata); SerializePlaySkills(msg, room, hum, framedata);
SerializeExplosions(msg, room, hum, framedata); SerializeExplosions(msg, room, hum, framedata);
SerializeChgedBuffs(msg, room, hum, framedata); SerializeChgedBuffs(msg, room, hum, framedata);
@ -166,10 +165,6 @@ void FrameMaker::PostProcess(cs::SMUpdate* msg, Room* room, Human* hum, FrameDat
glm::vec3 v3(room->GetGasData().pos_old.x, 0.0f, room->GetGasData().pos_old.y); glm::vec3 v3(room->GetGasData().pos_old.x, 0.0f, room->GetGasData().pos_old.y);
TypeConvert::ToPb(v3, msg->mutable_gas_pos_old()); TypeConvert::ToPb(v3, msg->mutable_gas_pos_old());
} }
if (room->GetFrameNo() - room->AliveCountChgFrameNo() <= 4 ||
room->GetFrameNo() - hum->join_frameno <= 2) {
msg->set_alive_count(room->AliveCount());
}
if (room->IsPveRoom()) { if (room->IsPveRoom()) {
int left_time = room->GetIncubator()->GetPveLeftTime(); int left_time = room->GetIncubator()->GetPveLeftTime();
msg->set_game_left_time(left_time); msg->set_game_left_time(left_time);
@ -364,19 +359,6 @@ void FrameMaker::SerializeBullets(cs::SMUpdate* msg, Room* room, Human* hum, Fra
} }
} }
void FrameMaker::SerializeSmokes(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata)
{
for (size_t idx : framedata->smokes_) {
msg->mutable_smokes()->Reserve(framedata->smokes_.size());
if (idx < room->frame_event_data->smokes_.size()) {
auto& tuple = room->frame_event_data->smokes_[idx];
if (std::get<0>(tuple).Get() && hum->CanSee(std::get<0>(tuple).Get())) {
*msg->add_smokes() = std::get<1>(tuple);
}
}
}
}
void FrameMaker::SerializePlaySkills(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata) void FrameMaker::SerializePlaySkills(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata)
{ {
for (size_t idx : framedata->play_skills_) { for (size_t idx : framedata->play_skills_) {

View File

@ -30,7 +30,6 @@ private:
void SerializeShots(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata); void SerializeShots(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata);
void SerializeEmotes(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata); void SerializeEmotes(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata);
void SerializeBullets(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata); void SerializeBullets(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata);
void SerializeSmokes(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata);
void SerializePlaySkills(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata); void SerializePlaySkills(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata);
void SerializeExplosions(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata); void SerializeExplosions(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata);
void SerializeChgedBuffs(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata); void SerializeChgedBuffs(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata);

View File

@ -3214,18 +3214,6 @@ void Room::ShuaLastGas()
#endif #endif
} }
void Room::FillObjectPositions(Human* hum, cs::SMUpdate& msg)
{
for (auto& pair : human_hash_) {
if (pair.second != hum) {
auto p = msg.add_object_positions();
p->set_obj_uniid(pair.second->GetUniId());
TypeConvert::ToPb(pair.second->GetPos(), p->mutable_pos());
TypeConvert::ToPb(pair.second->GetAttackDir(), p->mutable_dir());
}
}
}
void Room::RemoveRescue(Human* hum) void Room::RemoveRescue(Human* hum)
{ {
for (auto& pair : human_hash_) { for (auto& pair : human_hash_) {

View File

@ -213,7 +213,6 @@ public:
Player* GetOneAlivePlayer(); Player* GetOneAlivePlayer();
void GetAlivePlayers(std::vector<Player*>& humans, size_t num); void GetAlivePlayers(std::vector<Player*>& humans, size_t num);
int GetCanShuaNum(int shua_num); int GetCanShuaNum(int shua_num);
void FillObjectPositions(Human* hum, cs::SMUpdate& msg);
void RemoveRescue(Human* hum); void RemoveRescue(Human* hum);
void NotifyCountdown(const std::string& msg, int time); void NotifyCountdown(const std::string& msg, int time);
void NotifySysPiao(const std::string& msg, int color, int duration); void NotifySysPiao(const std::string& msg, int color, int duration);

View File

@ -63,4 +63,6 @@ enum SMMessageId_e
_SMDebugCmd = 1022; _SMDebugCmd = 1022;
_SMNewBieEnd = 1023; _SMNewBieEnd = 1023;
_SMNewsTicker = 1024; _SMNewsTicker = 1024;
_SMSyncPosition = 1025;
_SMSyncTeamData = 1026;
} }

View File

@ -690,6 +690,39 @@ message MFTeamData
repeated MFSkin skin = 39; //id repeated MFSkin skin = 39; //id
} }
//
message MFTeamDataNew
{
optional int32 team_id = 61; //Id
optional int32 player_id = 1; //id
optional MFVec3 pos = 2; //
optional MFVec3 dir = 3; //
optional float health = 4; //
optional bool disconnected = 5 [default = false]; //线
optional bool dead = 6 [default = false]; //
optional bool downed = 7 [default = false]; //
optional string name = 8; //()
optional float max_health = 9; //
optional bool riding = 40 [default = false]; //
optional string user_data = 60 [default = ""]; //
optional int32 score = 63 [default = 0]; //pve模式积分
optional int32 hero_id = 64 [default = 0]; //id()
optional int32 level = 65 [default = 0]; //
optional int32 hero_level = 72; //hero等级
//
optional string account_id = 10; //id
optional string avatar_url = 11; //
optional int64 user_value1 = 31; //user_value1
optional int64 user_value2 = 32; //user_value2
optional int64 user_value3 = 33; //user_value3
optional int64 guild_id = 34; //id
optional int32 vip_lv = 35 [default = 0]; //
optional int32 head_frame = 36 [default = 0]; //
optional int32 sex = 37 [default = 0]; //
repeated MFSkin skin = 39; //id
}
// //
message MFBullet message MFBullet
{ {
@ -1286,6 +1319,14 @@ message MFSandTable
repeated MFSandTableMsg msgs = 1; // repeated MFSandTableMsg msgs = 1; //
} }
//
message MFObjPosition
{
optional int32 obj_uniid = 1; //id
optional MFVec3 pos = 2; //
}
//end mfmsg //end mfmsg
// //
@ -1579,7 +1620,6 @@ message SMUpdate
repeated MFObjectPart part_objects = 4; //-() repeated MFObjectPart part_objects = 4; //-()
optional int32 active_player_id = 5; //id(id) optional int32 active_player_id = 5; //id(id)
optional MFActivePlayerData active_player_data = 6; //() optional MFActivePlayerData active_player_data = 6; //()
optional int32 alive_count = 15; //
optional int32 gas_progress = 16; //,(gas_data.mode == moving时才会发进度) optional int32 gas_progress = 16; //,(gas_data.mode == moving时才会发进度)
optional MFVec3 gas_pos_old = 30; // optional MFVec3 gas_pos_old = 30; //
optional MFGasData gas_data = 17; // optional MFGasData gas_data = 17; //
@ -1587,7 +1627,6 @@ message SMUpdate
repeated MFBullet bullets = 20; // repeated MFBullet bullets = 20; //
repeated MFShot shots = 21; // repeated MFShot shots = 21; //
repeated MFExplosion explosions = 22; // repeated MFExplosion explosions = 22; //
repeated MFSmoke smokes = 25; //
repeated MFEmote emotes = 23; // repeated MFEmote emotes = 23; //
optional MFAirDrop airdrop = 26; // optional MFAirDrop airdrop = 26; //
optional MFPlane plane = 27; // optional MFPlane plane = 27; //
@ -1600,7 +1639,6 @@ message SMUpdate
repeated MFTuple dead_alive_objs = 42; //values[0]:objid values[1]: values[2]: 0: 1: repeated MFTuple dead_alive_objs = 42; //values[0]:objid values[1]: values[2]: 0: 1:
// //
repeated MFPosition object_positions = 43; //,part_objects则可能不发,part_objects里的左边更新小地图
optional int32 game_left_time = 45; //(, ) optional int32 game_left_time = 45; //(, )
optional int32 frameno = 46; optional int32 frameno = 46;
repeated int32 del_bullets = 47; // repeated int32 del_bullets = 47; //
@ -1619,11 +1657,28 @@ message SMNewsTicker
{ {
/* /*
1: msg_context.values[0]: msg_context.values[1]: id 1: msg_context.values[0]: msg_context.values[1]: id
2:boss出现 msg_context.values[0]: boss唯一id
msg_context.values[1]: boss hero id
msg_context.values[2]: boss x
msg_context.values[3]: boss y
msg_context.values[4]: boss z
*/ */
optional int32 msg_type = 1; // optional int32 msg_type = 1; //
optional MFTupleString msg_content = 2; // optional MFTupleString msg_content = 2; //
} }
//
message SMSyncPosition
{
repeated MFObjPosition obj_list = 1; //
}
//
message SMSyncTeamData
{
repeated MFTeamDataNew team_list = 18; //
}
// //
message SMGameOver message SMGameOver
{ {