1#pragma once
2
3#include <basis/seadTypes.h>
4#include <math/seadVector.h>
5
6#include "Library/LiveActor/LiveActor.h"
7
8namespace al {
9struct ActorInitInfo;
10class HitSensor;
11class SensorMsg;
12} // namespace al
13
14class Coin;
15
16class CoinRail : public al::LiveActor {
17public:
18 CoinRail(const char* name);
19
20 void init(const al::ActorInitInfo& initInfo) override;
21 void appear() override;
22 void kill() override;
23 void makeActorDead() override;
24 bool receiveMsg(const al::SensorMsg* message, al::HitSensor* other,
25 al::HitSensor* self) override;
26
27 bool isGot() const;
28
29 void exeMove();
30 void exeCloseMove();
31
32private:
33 Coin** mCoins = nullptr;
34 f32* mRailPos = nullptr;
35 s32 mCoinNum = 0;
36 f32 mMoveVelocity = 0.0f;
37 s32 mFirstCoinIndex = 0;
38 s32 mLastCoinIndex = 0;
39 sead::Vector3f mClippingInfo;
40 sead::Vector3f mDisplayOffset = sead::Vector3f::zero;
41};
42