diff --git a/server/gameserver/building.cc b/server/gameserver/building.cc index f37d712..662b2fa 100644 --- a/server/gameserver/building.cc +++ b/server/gameserver/building.cc @@ -39,7 +39,7 @@ void Building::RecalcSelfCollider() } } -void Building::FillMFObjectPart(cs::MFObjectPart* part_data) +void Building::FillMFObjectPart(Human* hum, cs::MFObjectPart* part_data) { part_data->set_object_type(ET_Building); cs::MFBuildingPart* p = part_data->mutable_union_obj_3(); @@ -47,7 +47,7 @@ void Building::FillMFObjectPart(cs::MFObjectPart* part_data) TypeConvert::ToPb(pos, p->mutable_pos()); } -void Building::FillMFObjectFull(cs::MFObjectFull* full_data) +void Building::FillMFObjectFull(Human* hum, cs::MFObjectFull* full_data) { full_data->set_object_type(ET_Building); cs::MFBuildingFull* p = full_data->mutable_union_obj_3(); diff --git a/server/gameserver/building.h b/server/gameserver/building.h index 42a8e68..e3d3386 100644 --- a/server/gameserver/building.h +++ b/server/gameserver/building.h @@ -22,7 +22,7 @@ class Building : public Entity virtual ~Building() override; virtual void Initialize() override; void RecalcSelfCollider(); - virtual void FillMFObjectPart(cs::MFObjectPart* part_data) override; - virtual void FillMFObjectFull(cs::MFObjectFull* full_data) override; + virtual void FillMFObjectPart(Human* hum, cs::MFObjectPart* part_data) override; + virtual void FillMFObjectFull(Human* hum, cs::MFObjectFull* full_data) override; virtual void GetAabbBox(AabbCollider& aabb_box) override; }; diff --git a/server/gameserver/entity.h b/server/gameserver/entity.h index f13b777..ff013a6 100644 --- a/server/gameserver/entity.h +++ b/server/gameserver/entity.h @@ -8,6 +8,7 @@ namespace cs class MFObjectFull; } +class Human; class Room; class Obstacle; class ColliderComponent; @@ -36,8 +37,8 @@ class Entity virtual ~Entity(); virtual void Initialize(); virtual void Update(int delta_time) {}; - virtual void FillMFObjectPart(cs::MFObjectPart* part_data) {}; - virtual void FillMFObjectFull(cs::MFObjectFull* full_data) {}; + virtual void FillMFObjectPart(Human* hum, cs::MFObjectPart* part_data) {}; + virtual void FillMFObjectFull(Human* hum, cs::MFObjectFull* full_data) {}; virtual float GetSpeed() { return 1.0f;}; virtual void GetAabbBox(AabbCollider& aabb_box); virtual void GetCircleBox(CircleCollider& circle_box); diff --git a/server/gameserver/framemaker.cc b/server/gameserver/framemaker.cc index 9b3a1c9..1154713 100644 --- a/server/gameserver/framemaker.cc +++ b/server/gameserver/framemaker.cc @@ -21,7 +21,7 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(const Human* hum) a8::HasBitFlag(((Human*)itr)->status, HS_Fly)) { continue; } - itr->FillMFObjectFull(msg->add_full_objects()); + itr->FillMFObjectFull((Human*)hum, msg->add_full_objects()); } for (auto& itr : hum->part_objects) { Entity* entity = itr; @@ -35,7 +35,7 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(const Human* hum) continue; } } - entity->FillMFObjectPart(msg->add_part_objects()); + entity->FillMFObjectPart((Human*)hum, msg->add_part_objects()); } for (auto& itr : hum->del_objects) { msg->add_del_objids(itr); diff --git a/server/gameserver/hero.cc b/server/gameserver/hero.cc index aff4046..d834afc 100644 --- a/server/gameserver/hero.cc +++ b/server/gameserver/hero.cc @@ -32,7 +32,7 @@ void Hero::RecalcSelfCollider() self_collider_->rad = master->GetRadius(); } -void Hero::FillMFObjectPart(cs::MFObjectPart* part_data) +void Hero::FillMFObjectPart(Human* hum, cs::MFObjectPart* part_data) { part_data->set_object_type(entity_type); cs::MFHeroPart* p = part_data->mutable_union_obj_10(); @@ -41,7 +41,7 @@ void Hero::FillMFObjectPart(cs::MFObjectPart* part_data) TypeConvert::ToPb(attack_dir, p->mutable_dir()); } -void Hero::FillMFObjectFull(cs::MFObjectFull* full_data) +void Hero::FillMFObjectFull(Human* hum, cs::MFObjectFull* full_data) { full_data->set_object_type(entity_type); cs::MFHeroFull* p = full_data->mutable_union_obj_10(); diff --git a/server/gameserver/hero.h b/server/gameserver/hero.h index 406fcec..e38a934 100644 --- a/server/gameserver/hero.h +++ b/server/gameserver/hero.h @@ -26,8 +26,8 @@ class Hero : public Entity virtual ~Hero() override; virtual void Initialize() override; void RecalcSelfCollider(); - virtual void FillMFObjectPart(cs::MFObjectPart* part_data) override; - virtual void FillMFObjectFull(cs::MFObjectFull* full_data) override; + virtual void FillMFObjectPart(Human* hum, cs::MFObjectPart* part_data) override; + virtual void FillMFObjectFull(Human* hum, cs::MFObjectFull* full_data) override; private: CircleCollider* self_collider_ = nullptr; diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index f673259..facb9cd 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -93,7 +93,7 @@ float Human::GetSpeed4() return meta->i->move_speed4(); } -void Human::FillMFObjectPart(cs::MFObjectPart* part_data) +void Human::FillMFObjectPart(Human* hum, cs::MFObjectPart* part_data) { part_data->set_object_type(ET_Player); cs::MFPlayerPart* p = part_data->mutable_union_obj_1(); @@ -102,7 +102,7 @@ void Human::FillMFObjectPart(cs::MFObjectPart* part_data) TypeConvert::ToPb(attack_dir, p->mutable_dir()); } -void Human::FillMFObjectFull(cs::MFObjectFull* full_data) +void Human::FillMFObjectFull(Human* hum, cs::MFObjectFull* full_data) { full_data->set_object_type(ET_Player); cs::MFPlayerFull* p = full_data->mutable_union_obj_1(); @@ -1655,7 +1655,7 @@ void Human::SendUpdateMsg() } for (Entity* entity : view_objects) { if (new_objects.find(entity) == new_objects.end()) { - entity->FillMFObjectFull(msg->add_full_objects()); + entity->FillMFObjectFull(this, msg->add_full_objects()); } } refreshed_view = true; diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 545ebc4..a927ac6 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -138,8 +138,8 @@ class Human : public Entity virtual void Initialize() override; virtual float GetSpeed() override; virtual float GetSpeed4(); - virtual void FillMFObjectPart(cs::MFObjectPart* part_data) override; - virtual void FillMFObjectFull(cs::MFObjectFull* full_data) override; + virtual void FillMFObjectPart(Human* hum, cs::MFObjectPart* part_data) override; + virtual void FillMFObjectFull(Human* hum, cs::MFObjectFull* full_data) override; virtual void FillMFPlayerStats(cs::MFPlayerStats* stats); virtual void GetAabbBox(AabbCollider& aabb_box); void FillMFTeamData(cs::MFTeamData* team_data); diff --git a/server/gameserver/loot.cc b/server/gameserver/loot.cc index 4495bc5..e01d0e9 100644 --- a/server/gameserver/loot.cc +++ b/server/gameserver/loot.cc @@ -29,7 +29,7 @@ void Loot::RecalcSelfCollider() { } -void Loot::FillMFObjectPart(cs::MFObjectPart* part_data) +void Loot::FillMFObjectPart(Human* hum, cs::MFObjectPart* part_data) { part_data->set_object_type(ET_Loot); cs::MFLootPart* p = part_data->mutable_union_obj_5(); @@ -37,7 +37,7 @@ void Loot::FillMFObjectPart(cs::MFObjectPart* part_data) TypeConvert::ToPb(pos, p->mutable_pos()); } -void Loot::FillMFObjectFull(cs::MFObjectFull* full_data) +void Loot::FillMFObjectFull(Human* hum, cs::MFObjectFull* full_data) { full_data->set_object_type(ET_Loot); cs::MFLootFull* p = full_data->mutable_union_obj_5(); diff --git a/server/gameserver/loot.h b/server/gameserver/loot.h index 48110e0..f3fe32d 100644 --- a/server/gameserver/loot.h +++ b/server/gameserver/loot.h @@ -26,6 +26,6 @@ class Loot : public Entity virtual ~Loot() override; virtual void Initialize() override; void RecalcSelfCollider(); - virtual void FillMFObjectPart(cs::MFObjectPart* part_data) override; - virtual void FillMFObjectFull(cs::MFObjectFull* full_data) override; + virtual void FillMFObjectPart(Human* hum, cs::MFObjectPart* part_data) override; + virtual void FillMFObjectFull(Human* hum, cs::MFObjectFull* full_data) override; }; diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index a5d5f9d..de7b4a1 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -93,7 +93,7 @@ void Obstacle::RecalcSelfCollider() } } -void Obstacle::FillMFObjectPart(cs::MFObjectPart* part_data) +void Obstacle::FillMFObjectPart(Human* hum, cs::MFObjectPart* part_data) { part_data->set_object_type(ET_Obstacle); cs::MFObstaclePart* p = part_data->mutable_union_obj_2(); @@ -102,7 +102,7 @@ void Obstacle::FillMFObjectPart(cs::MFObjectPart* part_data) p->set_scale(1.0f); } -void Obstacle::FillMFObjectFull(cs::MFObjectFull* full_data) +void Obstacle::FillMFObjectFull(Human* hum, cs::MFObjectFull* full_data) { full_data->set_object_type(ET_Obstacle); cs::MFObstacleFull* p = full_data->mutable_union_obj_2(); diff --git a/server/gameserver/obstacle.h b/server/gameserver/obstacle.h index d2c9fdd..1ac991e 100644 --- a/server/gameserver/obstacle.h +++ b/server/gameserver/obstacle.h @@ -39,8 +39,8 @@ class Obstacle : public Entity virtual ~Obstacle() override; virtual void Initialize() override; void RecalcSelfCollider(); - virtual void FillMFObjectPart(cs::MFObjectPart* part_data) override; - virtual void FillMFObjectFull(cs::MFObjectFull* full_data) override; + virtual void FillMFObjectPart(Human* hum, cs::MFObjectPart* part_data) override; + virtual void FillMFObjectFull(Human* hum, cs::MFObjectFull* full_data) override; virtual void GetAabbBox(AabbCollider& aabb_box) override; virtual void GetCircleBox(CircleCollider& circle_box) override; void Explosion(Bullet* bullet);