流量优化 team_data

This commit is contained in:
aozhiwei 2020-07-06 14:58:13 +08:00
parent b45c3ed44f
commit 9d5d02883f
2 changed files with 24 additions and 8 deletions

View File

@ -272,19 +272,32 @@ long long Human::GetDeadFrameNo(Room* room)
return dead_frameno;
}
long long Human::GetRealDeadFrameNo(Room* room)
{
return real_dead_frameno;
}
void Human::FillMFTeamData(cs::MFTeamData* team_data, bool is_game_over)
{
{
last_sync_teamdata_frameno_ = room->GetFrameNo();
team_data->set_player_id(GetEntityUniId());
team_data->set_name(name);
TypeConvert::ToPb(GetPos(), team_data->mutable_pos());
TypeConvert::ToPb(attack_dir, team_data->mutable_dir());
team_data->set_health(GetHP());
team_data->set_max_health(GetMaxHP());
team_data->set_disconnected(false);
team_data->set_dead(dead);
team_data->set_downed(downed);
if (!real_dead || room->GetFrameNo() - GetRealDeadFrameNo(room) < 4) {
TypeConvert::ToPb(GetPos(), team_data->mutable_pos());
TypeConvert::ToPb(attack_dir, team_data->mutable_dir());
team_data->set_health(GetHP());
team_data->set_max_health(GetMaxHP());
team_data->set_dead(dead);
team_data->set_downed(downed);
}
if (room->GetGasData().gas_mode != GasInactive &&
room->GetFrameNo() - room->GetBattleStartFrameNo() < 4) {
team_data->set_name(name);
team_data->set_disconnected(socket_handle == 0);
}
if (is_game_over) {
team_data->set_account_id(account_id);
team_data->set_avatar_url(avatar_url);
@ -2394,6 +2407,7 @@ void Human::FindLocationWithTarget(Entity* target)
void Human::OnDie()
{
real_dead_frameno_ = room->GetFrameNo();
room->OnHumanDie(this);
SyncAroundPlayers(__FILE__, __LINE__, __func__);
if (team_members) {

View File

@ -94,6 +94,7 @@ class Human : public MoveableEntity
bool aiming = false;
bool dead = false;
long long dead_frameno = 0;
long long real_dead_frameno = 0;
Weapon default_weapon;
Weapon tank_weapon;
@ -157,6 +158,7 @@ class Human : public MoveableEntity
virtual void GetAabbBox(AabbCollider& aabb_box);
virtual bool IsDead(Room* room) override;
virtual long long GetDeadFrameNo(Room* room) override;
long long GetRealDeadFrameNo(Room* room);
void FillMFTeamData(cs::MFTeamData* team_data, bool is_game_over);
void Shot(a8::Vec2& target_dir);
void TankShot(a8::Vec2& target_dir);