From a26b840d8fe15c8f8f3c4f32b82f2d1248fe1b18 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 5 Mar 2021 15:48:18 +0800 Subject: [PATCH] add FillMFObjectLess --- server/gameserver/car.cc | 19 +++++++++++++++++-- server/gameserver/car.h | 1 + server/gameserver/human.cc | 24 ++++++++++++++++++++++++ server/gameserver/human.h | 1 + 4 files changed, 43 insertions(+), 2 deletions(-) diff --git a/server/gameserver/car.cc b/server/gameserver/car.cc index 60399a2..841d74b 100644 --- a/server/gameserver/car.cc +++ b/server/gameserver/car.cc @@ -6,6 +6,7 @@ #include "metamgr.h" #include "loot.h" #include "perfmonitor.h" +#include "typeconvert.h" Car::Car():MoveableEntity() { @@ -24,12 +25,26 @@ void Car::Initialize() void Car::FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data) { - + part_data->set_object_type(ET_Car); + cs::MFCarPart* p = part_data->mutable_union_obj_11(); + p->set_obj_uniid(GetEntityUniId()); + TypeConvert::ToPb(GetPos(), p->mutable_pos()); + TypeConvert::ToPb(move_dir, p->mutable_dir()); } void Car::FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) { - + full_data->set_object_type(ET_Car); + cs::MFCarFull* p = full_data->mutable_union_obj_11(); + p->set_obj_uniid(GetEntityUniId()); + TypeConvert::ToPb(GetPos(), p->mutable_pos()); + TypeConvert::ToPb(move_dir, p->mutable_dir()); + p->set_car_id(meta->i->id()); + p->set_driver(driver_ ? driver_->GetEntityUniId() : 0); + for (auto hum : passengers_) { + auto less_data = p->add_passengers(); + hum->FillMFObjectLess(room, hum, less_data); + } } void Car::GetDown(Human* passenger) diff --git a/server/gameserver/car.h b/server/gameserver/car.h index 8ad9326..8645642 100644 --- a/server/gameserver/car.h +++ b/server/gameserver/car.h @@ -15,6 +15,7 @@ class Car : public MoveableEntity { public: int car_uniid = 0; + a8::Vec2 move_dir; MetaData::Equip* meta = nullptr; Car(); diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 8dfd9c4..4f211e1 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -197,6 +197,30 @@ void Human::FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data TypeConvert::ToPb(attack_dir, p->mutable_dir()); } +void Human::FillMFObjectLess(Room* room, Human* hum, cs::MFPlayerFull* full_data) +{ + cs::MFPlayerFull* p = full_data; + p->set_obj_uniid(GetEntityUniId()); + TypeConvert::ToPb(GetPos(), p->mutable_pos()); + TypeConvert::ToPb(attack_dir, p->mutable_dir()); + + p->set_health(GetHP()); + p->set_max_health(GetMaxHP()); + p->set_dead(dead); + p->set_downed(downed); + p->set_disconnected(disconnected); + p->set_anim_type(anim_type); + p->set_anim_seq(anim_seq); + for (auto itr : skins) { + auto skin = p->add_skin(); + itr.ToPB(skin); + } + p->set_backpack(backpack); + p->set_helmet(helmet); + p->set_chest(chest); + curr_weapon->ToPB(p->mutable_weapon()); +} + void Human::FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) { full_data->set_object_type(ET_Player); diff --git a/server/gameserver/human.h b/server/gameserver/human.h index d458def..91428f7 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -168,6 +168,7 @@ class Human : public MoveableEntity virtual float GetSpeed() override; virtual float GetSpeed4(); virtual void FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data) override; + void FillMFObjectLess(Room* room, Human* hum, cs::MFPlayerFull* full_data); virtual void FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) override; virtual void FillMFPlayerStats(cs::MFPlayerStats* stats); virtual void GetAabbBox(AabbCollider& aabb_box);