1#pragma once
2
3#include <math/seadVector.h>
4
5#include "Library/LiveActor/LiveActor.h"
6
7class ExternalForceKeeper;
8class EnemyStateWander;
9
10class Togezo : public al::LiveActor {
11public:
12 Togezo(const char* name);
13
14 void init(const al::ActorInitInfo& info) override;
15 void listenAppear();
16 bool receiveMsg(const al::SensorMsg* message, al::HitSensor* other,
17 al::HitSensor* self) override;
18 void attackSensor(al::HitSensor* self, al::HitSensor* other) override;
19 void control() override;
20 void updateCollider() override;
21
22 void exeWait();
23 void exeWander();
24 void exeTurn();
25 void exeFind();
26 void exeChase();
27 void exeFall();
28 void exeLand();
29 void exeAttack();
30 void exeCapHit();
31 void exeBlowDown();
32
33private:
34 ExternalForceKeeper* mForceKeeper = nullptr;
35 EnemyStateWander* mStateWander = nullptr;
36 sead::Vector3f mCapPos = sead::Vector3f::zero;
37 s32 mCapHitCooldown = 0;
38 s32 mAirTime = 0;
39 sead::Vector3f mFuturePos = sead::Vector3f::zero;
40 sead::Vector3f mGroundNormal = sead::Vector3f::zero;
41 s32 mWanderCooldown = 0;
42};
43