This commit is contained in:
aozhiwei 2020-07-06 19:46:58 +08:00
parent aa54d22ca9
commit b149874f65
13 changed files with 35 additions and 25 deletions

View File

@ -46,7 +46,7 @@ void Building::RecalcSelfCollider()
AutoAdjust(collider_list);
}
void Building::FillMFObjectPart(Room* room, cs::MFObjectPart* part_data)
void Building::FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data)
{
part_data->set_object_type(ET_Building);
cs::MFBuildingPart* p = part_data->mutable_union_obj_3();
@ -54,7 +54,7 @@ void Building::FillMFObjectPart(Room* room, cs::MFObjectPart* part_data)
TypeConvert::ToPb(GetPos(), p->mutable_pos());
}
void Building::FillMFObjectFull(Room* room, cs::MFObjectFull* full_data)
void Building::FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data)
{
full_data->set_object_type(ET_Building);
cs::MFBuildingFull* p = full_data->mutable_union_obj_3();

View File

@ -23,8 +23,8 @@ class Building : public Entity
virtual ~Building() override;
virtual void Initialize() override;
void RecalcSelfCollider();
virtual void FillMFObjectPart(Room* room, cs::MFObjectPart* part_data) override;
virtual void FillMFObjectFull(Room* room, cs::MFObjectFull* full_data) override;
virtual void FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data) override;
virtual void FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) override;
virtual void GetAabbBox(AabbCollider& aabb_box) override;
protected:

View File

@ -306,7 +306,7 @@ const int DEFAULT_BORN_POINT_Y = 3000;
const int ADPLAY_BUFFID = 1006;
const int FIXED_OBJECT_MAXID = 2018;
const int FIXED_OBJECT_MAXID = 1024;
const int MAX_ROOM_IDX = 2018;

View File

@ -10,6 +10,7 @@ class Room;
class ColliderComponent;
class AabbCollider;
class CircleCollider;
class Human;
class Entity
{
public:
@ -17,8 +18,8 @@ class Entity
Entity();
virtual ~Entity();
virtual void Initialize();
virtual void FillMFObjectPart(Room* room, cs::MFObjectPart* part_data) {};
virtual void FillMFObjectFull(Room* room, cs::MFObjectFull* full_data) {};
virtual void FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data) {};
virtual void FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) {};
virtual float GetSpeed() { return 1.0f;};
virtual void GetAabbBox(AabbCollider& aabb_box);
virtual void GetCircleBox(CircleCollider& circle_box);

View File

@ -17,7 +17,7 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(const Human* hum)
}
#endif
if (hum->IsPlayer()) {
itr->FillMFObjectFull(room, msg->add_full_objects());
itr->FillMFObjectFull(room, (Human*)hum, msg->add_full_objects());
}
}
for (auto& itr : hum->part_objects) {
@ -27,7 +27,7 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(const Human* hum)
continue;
} else {
}
entity->FillMFObjectPart(room, msg->add_part_objects());
entity->FillMFObjectPart(room, (Human*)hum, msg->add_part_objects());
}
for (auto& itr : hum->del_objects) {
msg->add_del_objids(itr);

View File

@ -105,7 +105,7 @@ float Human::GetSpeed4()
return meta->i->move_speed4();
}
void Human::FillMFObjectPart(Room* room, cs::MFObjectPart* part_data)
void Human::FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data)
{
part_data->set_object_type(ET_Player);
cs::MFPlayerPart* p = part_data->mutable_union_obj_1();
@ -114,7 +114,7 @@ void Human::FillMFObjectPart(Room* room, cs::MFObjectPart* part_data)
TypeConvert::ToPb(attack_dir, p->mutable_dir());
}
void Human::FillMFObjectFull(Room* room, cs::MFObjectFull* full_data)
void Human::FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data)
{
full_data->set_object_type(ET_Player);
cs::MFPlayerFull* p = full_data->mutable_union_obj_1();
@ -3190,7 +3190,7 @@ void Human::NotifyObservers(cs::SMUpdate* msg, cs::MFActivePlayerData* active_pl
GetViewObjects(view_objects);
for (Entity* entity : view_objects) {
if (new_objects.find(entity) == new_objects.end()) {
entity->FillMFObjectFull(room, msg->add_full_objects());
entity->FillMFObjectFull(room, this, msg->add_full_objects());
}
}
refreshed_view = true;

View File

@ -152,8 +152,8 @@ class Human : public MoveableEntity
virtual void Initialize() override;
virtual float GetSpeed() override;
virtual float GetSpeed4();
virtual void FillMFObjectPart(Room* room, cs::MFObjectPart* part_data) override;
virtual void FillMFObjectFull(Room* room, cs::MFObjectFull* full_data) override;
virtual void FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data) override;
virtual void FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) override;
virtual void FillMFPlayerStats(cs::MFPlayerStats* stats);
virtual void GetAabbBox(AabbCollider& aabb_box);
virtual bool IsDead(Room* room) override;
@ -357,7 +357,7 @@ private:
std::array<float, kHAT_End> buff_attr_abs_ = {};
std::array<float, kHAT_End> buff_attr_rate_ = {};
std::array<unsigned char,FIXED_OBJECT_MAXID> fixed_object_sync_flags_ = {};
std::array<ObjectSyncFlags, FIXED_OBJECT_MAXID> fixed_object_sync_flags_ = {};
bool already_report_battle_ = false;
bool sent_battlereport_ = false;

View File

@ -29,7 +29,7 @@ void Loot::RecalcSelfCollider()
{
}
void Loot::FillMFObjectPart(Room* room, cs::MFObjectPart* part_data)
void Loot::FillMFObjectPart(Room* room, 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(Room* room, cs::MFObjectPart* part_data)
TypeConvert::ToPb(GetPos(), p->mutable_pos());
}
void Loot::FillMFObjectFull(Room* room, cs::MFObjectFull* full_data)
void Loot::FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data)
{
full_data->set_object_type(ET_Loot);
cs::MFLootFull* p = full_data->mutable_union_obj_5();

View File

@ -25,8 +25,8 @@ class Loot : public RoomEntity
virtual ~Loot() override;
virtual void Initialize() override;
void RecalcSelfCollider();
virtual void FillMFObjectPart(Room* room, cs::MFObjectPart* part_data) override;
virtual void FillMFObjectFull(Room* room, cs::MFObjectFull* full_data) override;
virtual void FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data) override;
virtual void FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) override;
protected:
Loot();

View File

@ -99,7 +99,7 @@ void Obstacle::RecalcSelfCollider()
}
}
void Obstacle::FillMFObjectPart(Room* room, cs::MFObjectPart* part_data)
void Obstacle::FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data)
{
part_data->set_object_type(ET_Obstacle);
cs::MFObstaclePart* p = part_data->mutable_union_obj_2();
@ -108,9 +108,10 @@ void Obstacle::FillMFObjectPart(Room* room, cs::MFObjectPart* part_data)
p->set_scale(1.0f);
}
void Obstacle::FillMFObjectFull(Room* room, cs::MFObjectFull* full_data)
void Obstacle::FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data)
{
full_data->set_object_type(ET_Obstacle);
cs::MFObstacleFull* p = full_data->mutable_union_obj_2();
p->set_obj_uniid(GetEntityUniId());
TypeConvert::ToPb(GetPos(), p->mutable_pos());

View File

@ -29,8 +29,8 @@ class Obstacle : public Entity
virtual ~Obstacle() override;
virtual void Initialize() override;
virtual void RecalcSelfCollider();
virtual void FillMFObjectPart(Room* room, cs::MFObjectPart* part_data) override;
virtual void FillMFObjectFull(Room* room, cs::MFObjectFull* full_data) override;
virtual void FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data) override;
virtual void FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data) override;
virtual void GetAabbBox(AabbCollider& aabb_box) override;
virtual void GetCircleBox(CircleCollider& circle_box) override;
virtual bool IsDead(Room* room) override;

View File

@ -137,6 +137,14 @@ struct ObstacleData
DoorState_e door_state = DoorStateClose;
};
#pragma pack(1)
struct ObjectSyncFlags
{
unsigned char flags = 0;
unsigned char last_sync_frameno = 0;
};
#pragma pack()
class GridService;
class MapService;
class Building;

View File

@ -418,8 +418,8 @@ message MFObjectFull
optional MFSmokeFull union_obj_9 = 10;
optional MFHeroFull union_obj_10 = 11;
optional int32 obj_uniid = 100; //id
optional int32 object_flags = 101; // 1<<0: 1<<1
optional int32 obj_uniid = 14; //id
optional int32 object_flags = 15; // 1<<0: 1<<1
}
//()