aozhiwei 5d8b338aa3 1
2021-07-22 06:34:38 +00:00

51 lines
1.3 KiB
C++

#pragma once
#include "entity.h"
namespace MetaData
{
struct MapThing;
}
namespace metatable
{
class MapBlockJson;
}
class Room;
class CircleCollider;
class AabbCollider;
class MapService;
class MapBlock : public Entity
{
public:
MetaData::MapThing* meta = nullptr;
MapService* permanent_map_service = nullptr;
int shape = 0;
float width = 0;
float height = 0;
float rad = 0;
virtual ~MapBlock() override;
virtual void Initialize() override;
virtual void RecalcSelfCollider();
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;
virtual long long GetDeadFrameNo(Room* room) override;
virtual void OnPreCollision(Room* room) override;
virtual void OnBulletHit(Bullet* bullet) override;
virtual void OnExplosionHit(Explosion* explosion) override;
virtual bool Attackable(Room* room) override;
virtual bool ReceiveExplosionDmg(Explosion* explosion) override;
protected:
MapBlock();
protected:
friend class EntityFactory;
};