#pragma once #include "creature.h" #include "cs_proto.pb.h" namespace MetaData { struct Player; } class Human; class Room; class HeroAI; class Creature; class Hero : public Creature { public: Creature* master = nullptr; MetaData::Player* meta = nullptr; bool shot_hold = false; Hero(); virtual ~Hero() override; virtual void Initialize() 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 Update(int delta_time) override; virtual float GetSpeed() override; virtual float GetRadius() override; virtual float GetHitRadius() override; virtual void GetAabbBox(AabbCollider& aabb_box) override; virtual void GetHitAabbBox(AabbCollider& aabb_box) override; protected: virtual void _UpdateMove(int speed) override; void InternalUpdateMove(float speed); bool IsCollisionInMapService(); virtual void RecalcSelfCollider() override; private: bool later_removed_ = false; CircleCollider* self_collider_ = nullptr; Entity* last_collision_door_ = nullptr; friend class HeroAI; };