1#pragma once
2
3#include <math/seadVector.h>
4
5#include "Amiibo/HelpAmiiboExecutor.h"
6
7namespace al {
8struct NfpInfo;
9class LiveActor;
10struct ActorInitInfo;
11class AreaObj;
12} // namespace al
13
14class CoinCollect;
15class CoinCollectDummy;
16class CoinCollect2D;
17class HelpAmiiboDirector;
18
19class HelpAmiiboCoinCollect : public HelpAmiiboExecutor {
20public:
21 HelpAmiiboCoinCollect(HelpAmiiboDirector* director, al::LiveActor* amiiboActor);
22
23 void initAfterPlacement(const al::ActorInitInfo& actorInitInfo) override;
24 bool isTriggerTouch(const al::NfpInfo& nfpInfo) const override;
25 bool isEnableUse() override;
26 bool execute() override;
27 void activate() override;
28
29 HelpAmiiboType getType() const override { return HelpAmiiboType::Koopa; }
30
31 void deleteHintEffect();
32 void appearEffect();
33 void killEffect();
34 bool isUseDummyModel(al::LiveActor* actor);
35 void getDummyEffectEmitPos(sead::Vector3f* position, al::LiveActor* actor);
36
37private:
38 CoinCollect* mCoinCollect = nullptr;
39 CoinCollect2D* mCoinCollect2D = nullptr;
40 CoinCollectDummy* mCoinCollectDummy = nullptr;
41 al::AreaObj* mStartInvalidateStageMapArea = nullptr;
42};
43