1#pragma once
2
3#include <math/seadVector.h>
4
5#include "Library/LiveActor/LiveActor.h"
6
7class CapTargetInfo;
8class EnemyCap;
9class EnemyStateSwoon;
10class EnemyStateHackStart;
11class FlyerStateWander;
12class IUsePlayerHack;
13class KaronWingStateHack;
14
15class KaronWing : public al::LiveActor {
16public:
17 KaronWing(const char* name) : LiveActor(name) {}
18
19 void init(const al::ActorInitInfo& info) override;
20 void attackSensor(al::HitSensor* self, al::HitSensor* other) override;
21 bool receiveMsg(const al::SensorMsg* message, al::HitSensor* other,
22 al::HitSensor* self) override;
23 void control() override;
24 void updateCollider() override;
25
26 void exeAttack();
27 void exeBreak();
28 void exeChase();
29 void exeDamageCap();
30 void exeFind();
31 void exeHack();
32 void exeHackStart();
33 void exeRevive();
34 void exeReviveAppear();
35 void exeSwoon();
36 void exeTurn();
37 void exeWait();
38 void exeWander();
39
40private:
41 IUsePlayerHack* mPlayerHack = nullptr;
42 CapTargetInfo* mCapTargetInfo = nullptr;
43 KaronWingStateHack* mStateHack = nullptr;
44 EnemyStateSwoon* mStateSwoon = nullptr;
45 EnemyStateSwoon* mStateBreak = nullptr;
46 EnemyStateHackStart* mStateHackStart = nullptr;
47 FlyerStateWander* mStateWander = nullptr;
48 EnemyCap* mEnemyCap = nullptr;
49 f32 mDamageStartY = 0.0f;
50 sead::Vector3f mSpawnTrans = sead::Vector3f::zero;
51};
52