1#pragma once
2
3#include <math/seadVector.h>
4#include <prim/seadSafeString.h>
5
6#include "Library/Nerve/NerveStateBase.h"
7
8namespace al {
9struct ActorParamMove;
10}
11
12class FlyerStateWanderParam {
13public:
14 FlyerStateWanderParam(s32, s32 wanderTime, s32 waitTime, const char* actionName,
15 const al::ActorParamMove* actorParamMove);
16
17 s32 get_0() const { return _0; }
18
19 s32 getWanderTime() const { return mWanderTime; }
20
21 s32 getWaitTime() const { return mWaitTime; }
22
23 const char* getActionName() const { return mActionName.cstr(); }
24
25 const al::ActorParamMove* getActorParamMove() const { return mActorParamMove; }
26
27private:
28 s32 _0;
29 s32 mWanderTime;
30 s32 mWaitTime;
31 sead::FixedSafeString<32> mActionName;
32 const al::ActorParamMove* mActorParamMove;
33};
34
35static_assert(sizeof(FlyerStateWanderParam) == 0x50);
36
37class FlyerStateWander : public al::ActorStateBase {
38public:
39 FlyerStateWander(al::LiveActor* actor, const FlyerStateWanderParam* param);
40
41 void appear() override;
42
43 void exeWander();
44 void exeWait();
45
46private:
47 s32 mNerveTime = 0;
48 sead::Vector3f mStartTrans = {0.0f, 0.0f, 0.0f};
49 const FlyerStateWanderParam* mFlyerStateWanderParam;
50};
51
52static_assert(sizeof(FlyerStateWander) == 0x38);
53