1#pragma once
2
3#include <container/seadPtrArray.h>
4#include <math/seadVector.h>
5
6#include "Library/LiveActor/LiveActor.h"
7
8namespace al {
9struct ActorInitInfo;
10class BgmBeatCounter;
11class HitSensor;
12class SensorMsg;
13} // namespace al
14
15class Coin2DCity;
16
17class Coin2DCityDirector : public al::LiveActor {
18public:
19 Coin2DCityDirector(const char* name);
20
21 void init(const al::ActorInitInfo& initInfo) override;
22 void initAfterPlacement() override;
23 void control() override;
24
25 void registerCoin(Coin2DCity* coin);
26 void getCoin();
27 bool isTriggerBeat() const;
28
29 void exeWait();
30
31 s32 getLightTime() const { return mLightTime; }
32
33private:
34 sead::PtrArray<Coin2DCity> mCoinHolder;
35 sead::Vector3f mClippingPos = sead::Vector3f::zero;
36 s32 mNextCoinLightTime = 0;
37 s32 mLightTime = 0;
38 s32 mLightInterval = 0;
39 s32 mCoinsCollected = 0;
40 s32 mDelayTime = 0;
41 al::BgmBeatCounter* mBgmBeatCounter = nullptr;
42};
43