1
This commit is contained in:
parent
b5d5823dfa
commit
2b8e88adfc
@ -49,9 +49,6 @@ void FrameData::ClearFrameData(Human* hum)
|
||||
if (!explosions_.empty()) {
|
||||
explosions_.clear();
|
||||
}
|
||||
if (!smokes_.empty()) {
|
||||
smokes_.clear();
|
||||
}
|
||||
if (!play_skills_.empty()) {
|
||||
play_skills_.clear();
|
||||
}
|
||||
|
@ -27,7 +27,6 @@ class FrameData
|
||||
std::vector<int> shots_;
|
||||
std::vector<int> emotes_;
|
||||
std::vector<int> bullets_;
|
||||
std::vector<int> smokes_;
|
||||
std::vector<int> play_skills_;
|
||||
std::vector<int> explosions_;
|
||||
std::vector<int> chged_buffs_;
|
||||
|
@ -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)
|
||||
{
|
||||
if (!sender.Get()) {
|
||||
|
@ -29,7 +29,6 @@ public:
|
||||
std::shared_ptr<std::set<int>> reporter_list);
|
||||
void RemoveBullet(glm::vec3 pos, int bullet_uniid);
|
||||
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 AddExplosionEx(CreatureWeakPtr& sender, int item_id, Position bomb_pos, int effect);
|
||||
void AddBulletNumChg(CreatureWeakPtr& sender);
|
||||
|
@ -106,7 +106,6 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(Human* hum)
|
||||
SerializeShots(msg, room, hum, framedata);
|
||||
SerializeEmotes(msg, room, hum, framedata);
|
||||
SerializeBullets(msg, room, hum, framedata);
|
||||
SerializeSmokes(msg, room, hum, framedata);
|
||||
SerializePlaySkills(msg, room, hum, framedata);
|
||||
SerializeExplosions(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);
|
||||
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()) {
|
||||
int left_time = room->GetIncubator()->GetPveLeftTime();
|
||||
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)
|
||||
{
|
||||
for (size_t idx : framedata->play_skills_) {
|
||||
|
@ -30,7 +30,6 @@ private:
|
||||
void SerializeShots(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 SerializeSmokes(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 SerializeChgedBuffs(cs::SMUpdate* msg, Room* room, Human* hum, FrameData* framedata);
|
||||
|
@ -3214,18 +3214,6 @@ void Room::ShuaLastGas()
|
||||
#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)
|
||||
{
|
||||
for (auto& pair : human_hash_) {
|
||||
|
@ -213,7 +213,6 @@ public:
|
||||
Player* GetOneAlivePlayer();
|
||||
void GetAlivePlayers(std::vector<Player*>& humans, size_t num);
|
||||
int GetCanShuaNum(int shua_num);
|
||||
void FillObjectPositions(Human* hum, cs::SMUpdate& msg);
|
||||
void RemoveRescue(Human* hum);
|
||||
void NotifyCountdown(const std::string& msg, int time);
|
||||
void NotifySysPiao(const std::string& msg, int color, int duration);
|
||||
|
@ -63,4 +63,6 @@ enum SMMessageId_e
|
||||
_SMDebugCmd = 1022;
|
||||
_SMNewBieEnd = 1023;
|
||||
_SMNewsTicker = 1024;
|
||||
_SMSyncPosition = 1025;
|
||||
_SMSyncTeamData = 1026;
|
||||
}
|
||||
|
@ -690,6 +690,39 @@ message MFTeamData
|
||||
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
|
||||
{
|
||||
@ -1286,6 +1319,14 @@ message MFSandTable
|
||||
repeated MFSandTableMsg msgs = 1; //沙盘消息列表
|
||||
}
|
||||
|
||||
//对象位置坐标
|
||||
message MFObjPosition
|
||||
{
|
||||
optional int32 obj_uniid = 1; //对象唯一id
|
||||
optional MFVec3 pos = 2; //坐标
|
||||
}
|
||||
|
||||
|
||||
//end mfmsg
|
||||
|
||||
//加入
|
||||
@ -1579,7 +1620,6 @@ message SMUpdate
|
||||
repeated MFObjectPart part_objects = 4; //对象-部分(用于插值更新)
|
||||
optional int32 active_player_id = 5; //当前活跃玩家id(如果玩家死亡后是观战对象的id)
|
||||
optional MFActivePlayerData active_player_data = 6; //活跃玩家数据(如果玩家死亡后是观战对象的数据)
|
||||
optional int32 alive_count = 15; //存活数量
|
||||
optional int32 gas_progress = 16; //毒圈进度,表示缩进的像素数(只有当gas_data.mode == moving时才会发进度)
|
||||
optional MFVec3 gas_pos_old = 30; //毒圈当前圆心坐标
|
||||
optional MFGasData gas_data = 17; //毒圈数据
|
||||
@ -1587,7 +1627,6 @@ message SMUpdate
|
||||
repeated MFBullet bullets = 20; //子弹
|
||||
repeated MFShot shots = 21; //射击
|
||||
repeated MFExplosion explosions = 22; //爆炸
|
||||
repeated MFSmoke smokes = 25; //烟雾
|
||||
repeated MFEmote emotes = 23; //表情
|
||||
optional MFAirDrop airdrop = 26; //空投
|
||||
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 MFPosition object_positions = 43; //对象坐标信息,如果对象已经在part_objects则可能不发,这时客户端可以读取part_objects里的左边更新小地图
|
||||
optional int32 game_left_time = 45; //游戏剩余时间(毫秒, 战斗开始后字段才有意义)
|
||||
optional int32 frameno = 46;
|
||||
repeated int32 del_bullets = 47; //子弹删除
|
||||
@ -1619,11 +1657,28 @@ message SMNewsTicker
|
||||
{
|
||||
/*
|
||||
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 MFTupleString msg_content = 2; //消息内容
|
||||
}
|
||||
|
||||
//同步对象坐标
|
||||
message SMSyncPosition
|
||||
{
|
||||
repeated MFObjPosition obj_list = 1; //对象列表
|
||||
}
|
||||
|
||||
//同步队伍数据
|
||||
message SMSyncTeamData
|
||||
{
|
||||
repeated MFTeamDataNew team_list = 18; //队伍数据
|
||||
}
|
||||
|
||||
//游戏结束
|
||||
message SMGameOver
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user