1#pragma once
2
3#include <basis/seadTypes.h>
4
5#include "Library/HostIO/HioNode.h"
6
7namespace al {
8struct NfpInfo;
9class LiveActor;
10struct ActorInitInfo;
11} // namespace al
12
13class HelpAmiiboDirector;
14
15enum class HelpAmiiboType : s64 {
16 Mario = 0,
17 Peach = 1,
18 Koopa = 2,
19 Yoshi = 3,
20 All = 4,
21};
22
23class HelpAmiiboExecutor : public al::IUseHioNode {
24public:
25 HelpAmiiboExecutor(HelpAmiiboDirector*, al::LiveActor*, const char*);
26
27 virtual void initAfterPlacement(const al::ActorInitInfo&);
28 virtual bool isTriggerTouch(const al::NfpInfo&) const = 0;
29 virtual bool isEnableUse() = 0;
30 virtual bool execute() = 0;
31 virtual void activate();
32 virtual void deactivate();
33 virtual HelpAmiiboType getType() const = 0;
34
35 bool tryTouch(const al::NfpInfo&);
36 void tryExecute();
37
38 bool isTouched() const { return mIsTouched; }
39
40 HelpAmiiboDirector* getDirector() const { return mHelpAmiiboDirector; }
41
42 al::LiveActor* getActor() const { return mHelpAmiiboActor; }
43
44private:
45 HelpAmiiboDirector* mHelpAmiiboDirector = nullptr;
46 bool mIsActivated = false;
47 bool mIsTouched = false;
48 al::LiveActor* mHelpAmiiboActor = nullptr;
49};
50