OdysseyDecomp/lib/al/Library/MapObj/KeyMoveMapParts.h

65 lines
1.6 KiB
C++

#pragma once
#include "Library/LiveActor/LiveActor.h"
namespace al {
class KeyPoseKeeper;
class SwitchKeepOnAreaGroup;
class SwitchOnAreaGroup;
class RippleCtrl;
class FunctorBase;
class KeyMoveMapParts : public LiveActor {
public:
KeyMoveMapParts(const char* name);
void init(const ActorInitInfo& info) override;
void start();
void stop();
void appearAndSetStart();
bool receiveMsg(const SensorMsg* message, HitSensor* other, HitSensor* self) override;
void control() override;
void appearAndSetEnd();
virtual void exeStandBy();
void exeDelay();
virtual void exeWait();
void setWaitEndNerve();
void exeMoveSign();
virtual void exeMove();
void exeStopSign();
void exeStop();
KeyPoseKeeper* getKeyPoseKeeper() const { return mKeyPoseKeeper; }
void setIsStopKill(bool isStopKill) { mIsStopKill = isStopKill; }
private:
static const char* getSeNameByIndex(s32 index) {
switch (index) {
case 0:
return "PgMove0";
case 1:
return "PgMove1";
default:
return nullptr;
}
}
KeyPoseKeeper* mKeyPoseKeeper = nullptr;
SwitchKeepOnAreaGroup* mSwitchKeepOnAreaGroup = nullptr;
SwitchOnAreaGroup* mSwitchOnAreaGroup = nullptr;
RippleCtrl* mRippleCtrl = nullptr;
sead::Vector3f mClippingOffset = sead::Vector3f::zero;
s32 mKeyMoveWaitTime = 30;
s32 mKeyMoveMoveTime = 0;
s32 mDelayTime = 0;
bool mIsFloorTouchStart = false;
bool mIsHipDropStart = false;
bool mIsStopKill = false;
const char* mSeMoveName = nullptr;
};
static_assert(sizeof(KeyMoveMapParts) == 0x150);
} // namespace al