add FillMFObjectLess

This commit is contained in:
aozhiwei 2021-03-05 15:48:18 +08:00
parent 2b379e1055
commit a26b840d8f
4 changed files with 43 additions and 2 deletions

View File

@ -6,6 +6,7 @@
#include "metamgr.h" #include "metamgr.h"
#include "loot.h" #include "loot.h"
#include "perfmonitor.h" #include "perfmonitor.h"
#include "typeconvert.h"
Car::Car():MoveableEntity() Car::Car():MoveableEntity()
{ {
@ -24,12 +25,26 @@ void Car::Initialize()
void Car::FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data) 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) 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) void Car::GetDown(Human* passenger)

View File

@ -15,6 +15,7 @@ class Car : public MoveableEntity
{ {
public: public:
int car_uniid = 0; int car_uniid = 0;
a8::Vec2 move_dir;
MetaData::Equip* meta = nullptr; MetaData::Equip* meta = nullptr;
Car(); Car();

View File

@ -197,6 +197,30 @@ void Human::FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data
TypeConvert::ToPb(attack_dir, p->mutable_dir()); 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) void Human::FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data)
{ {
full_data->set_object_type(ET_Player); full_data->set_object_type(ET_Player);

View File

@ -168,6 +168,7 @@ class Human : public MoveableEntity
virtual float GetSpeed() override; virtual float GetSpeed() override;
virtual float GetSpeed4(); virtual float GetSpeed4();
virtual void FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data) override; 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 FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) override;
virtual void FillMFPlayerStats(cs::MFPlayerStats* stats); virtual void FillMFPlayerStats(cs::MFPlayerStats* stats);
virtual void GetAabbBox(AabbCollider& aabb_box); virtual void GetAabbBox(AabbCollider& aabb_box);