1#pragma once
2
3#include "Library/LiveActor/LiveActor.h"
4
5#include "Util/IUseDimension.h"
6
7namespace al {
8struct ActorInitInfo;
9class HitSensor;
10class SensorMsg;
11} // namespace al
12
13class ActorDimensionKeeper;
14class Coin2DCityDirector;
15
16class Coin2DCity : public al::LiveActor, public IUseDimension {
17public:
18 Coin2DCity(const char* name, Coin2DCityDirector* director);
19
20 void init(const al::ActorInitInfo& initInfo) override;
21 void control() override;
22 bool receiveMsg(const al::SensorMsg* message, al::HitSensor* other,
23 al::HitSensor* self) override;
24
25 ActorDimensionKeeper* getActorDimensionKeeper() const override { return mDimensionKeeper; }
26
27 void startLight();
28 void endLight();
29 void exeWait();
30 void exeLight();
31 void exeGot();
32 void exeGotWait();
33
34private:
35 ActorDimensionKeeper* mDimensionKeeper = nullptr;
36 Coin2DCity* mNextCoin = nullptr;
37 Coin2DCityDirector* mCityDirector = nullptr;
38 s32 mLightTime = -1;
39 s32 mSyncCounter = 0;
40};
41