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;
12class PlacementId;
13} // namespace al
14
15class CoinStack;
16
17class CoinStackGroup : public al::LiveActor {
18public:
19 CoinStackGroup(const char* name);
20
21 void init(const al::ActorInitInfo& initInfo) override;
22 void control() override;
23 bool receiveMsg(const al::SensorMsg* message, al::HitSensor* other,
24 al::HitSensor* self) override;
25 void makeActorDead() override;
26 void makeActorAlive() override;
27
28 void generateCoinStackGroup(const al::ActorInitInfo&, s32);
29 void makeStackAppear();
30 void makeStackDisappear();
31 f32 setStackAsCollected(CoinStack* stack);
32 f32 updateClippingInfo(u32 stackAmount);
33 void validateClipping();
34
35private:
36 sead::Vector3f mClippingPos = sead::Vector3f(0.0f, 0.0f, 0.0f);
37 s32 mStackAmount = 0;
38 CoinStack* mCoinStack = nullptr;
39 al::PlacementId* mPlacementId = nullptr;
40 bool mIsMustSave = true;
41};
42