59 lines
1.7 KiB
C++
59 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include "creature.h"
|
|
|
|
#include "cs_proto.pb.h"
|
|
#include "weakptr.h"
|
|
|
|
namespace MetaData
|
|
{
|
|
struct Player;
|
|
}
|
|
|
|
class Human;
|
|
class Room;
|
|
class HeroAI;
|
|
class Creature;
|
|
class Hero : public Creature
|
|
{
|
|
public:
|
|
CreatureWeakPtr master;
|
|
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 OnExplosionHit(Explosion* e) override;
|
|
virtual void OnBulletHit(Bullet* bullet) override;
|
|
virtual void Update(int delta_time) override;
|
|
virtual void DecHP(float dec_hp, int killer_id, const std::string& killer_name, int weapon_id) override;
|
|
virtual std::string GetName() 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;
|
|
virtual void OnAddToTargetPartObject(Entity* target) override;
|
|
virtual void OnRemoveFromTargetPartObject(Entity* target) override;
|
|
virtual void OnBattleStart(Room* room) override;
|
|
void Destory();
|
|
|
|
protected:
|
|
virtual void _UpdateMove(int speed) override;
|
|
void InternalUpdateMove(float speed);
|
|
virtual void RecalcSelfCollider() override;
|
|
void BeKill(int killer_id, const std::string& killer_name, int weapon_id);
|
|
void InitAI();
|
|
void DetachFromMaster();
|
|
|
|
private:
|
|
bool later_removed_ = false;
|
|
bool detached_ = false;
|
|
|
|
friend class HeroAI;
|
|
};
|