1#pragma once
2
3#include "Library/LiveActor/LiveActor.h"
4
5namespace al {
6class MtxConnector;
7}
8class CapTargetInfo;
9class AppearSwitchSave;
10
11class CapSwitch : public al::LiveActor {
12public:
13 CapSwitch(const char* name);
14
15 void init(const al::ActorInitInfo& info) override;
16 bool receiveMsg(const al::SensorMsg* msg, al::HitSensor* other, al::HitSensor* self) override;
17 void initAfterPlacement() override;
18 void control() override;
19
20 void listenStart();
21 void listenReset();
22
23 void exeOffWait();
24 void exeOffWaitCapHold();
25 void exeHitReaction();
26 void exeOnWait();
27 void exeReturnOff();
28 void exeOffWaitInvalid();
29
30 bool isOn() const;
31
32private:
33 al::MtxConnector* mMtxConnector = nullptr;
34 CapTargetInfo* mCapTargetInfo = nullptr;
35 AppearSwitchSave* mAppearSwitchSave = nullptr;
36 bool mIsFacingFront = true;
37 sead::Vector3f mFlyingCapPos = sead::Vector3f::zero;
38 sead::Vector3f mPlayerPos = sead::Vector3f::zero;
39};
40