1#pragma once
2
3#include <container/seadPtrArray.h>
4
5#include "Library/Nerve/IUseNerve.h"
6
7#include "Amiibo/HelpAmiiboExecutor.h"
8
9namespace al {
10struct NfpInfo;
11
12struct ActorInitInfo;
13class LiveActor;
14class NerveKeeper;
15} // namespace al
16
17class Coin;
18class HelpAmiiboDirector;
19
20class HelpAmiiboFallCoin : public HelpAmiiboExecutor, public al::IUseNerve {
21public:
22 HelpAmiiboFallCoin(HelpAmiiboDirector* director, al::LiveActor* actor);
23
24 void initAfterPlacement(const al::ActorInitInfo& initInfo) override;
25 bool isTriggerTouch(const al::NfpInfo& nfpInfo) const override;
26 bool isEnableUse() override;
27 void activate() override;
28 bool execute() override;
29
30 HelpAmiiboType getType() const override { return HelpAmiiboType::Peach; }
31
32 al::NerveKeeper* getNerveKeeper() const override { return mNerveKeeper; }
33
34 void exeWait();
35 void exeFall();
36
37private:
38 al::NerveKeeper* mNerveKeeper = nullptr;
39 sead::PtrArray<Coin> mCoinBuffer;
40};
41