mirror of
https://github.com/encounter/Petari.git
synced 2026-03-30 11:34:15 -07:00
108 lines
2.6 KiB
C++
108 lines
2.6 KiB
C++
#pragma once
|
|
|
|
#include "Game/MapObj/MapObjActor.hpp"
|
|
#include "Game/Demo/DemoCtrlBase.hpp"
|
|
|
|
namespace {
|
|
const char* cMoveBckName = "Move";
|
|
};
|
|
|
|
class RailMoveObj : public MapObjActor {
|
|
public:
|
|
RailMoveObj(const char *);
|
|
|
|
virtual ~RailMoveObj() {
|
|
|
|
}
|
|
|
|
virtual void init(const JMapInfoIter &);
|
|
virtual void startClipped();
|
|
virtual void endClipped();
|
|
virtual bool receiveOtherMsg(u32, HitSensor *, HitSensor *);
|
|
virtual void initCaseUseSwitchB(const MapObjActorInitInfo &);
|
|
virtual void initCaseNoUseSwitchB(const MapObjActorInitInfo &);
|
|
virtual void setupInitInfo(const JMapInfoIter &, MapObjActorInitInfo *);
|
|
virtual bool tryStartMove();
|
|
virtual void startMoveInner();
|
|
virtual void move();
|
|
virtual void doAtEndPoint();
|
|
virtual bool endMove();
|
|
virtual TVec3f* getSoundCalcPos();
|
|
|
|
bool isMoving() const;
|
|
void exeWait();
|
|
void exeMove();
|
|
|
|
TVec3f _C4;
|
|
u8 _D0;
|
|
};
|
|
|
|
class RailMoveObjPress : public RailMoveObj {
|
|
public:
|
|
RailMoveObjPress(const char *);
|
|
|
|
virtual ~RailMoveObjPress();
|
|
virtual void init(const JMapInfoIter &);
|
|
};
|
|
|
|
class RailMoveObjBreakAtEnd : public RailMoveObj {
|
|
public:
|
|
RailMoveObjBreakAtEnd(const char *);
|
|
|
|
virtual ~RailMoveObjBreakAtEnd();
|
|
virtual void doAtEndPoint();
|
|
};
|
|
|
|
class RailMoveIndirectObj : public RailMoveObj {
|
|
public:
|
|
virtual ~RailMoveIndirectObj();
|
|
|
|
virtual void connectToScene(const MapObjActorInitInfo &);
|
|
};
|
|
|
|
class RailMoveObjSwitchShadow : public RailMoveObj {
|
|
public:
|
|
inline RailMoveObjSwitchShadow(const char *pName) : RailMoveObj(pName) {
|
|
|
|
}
|
|
|
|
virtual ~RailMoveObjSwitchShadow();
|
|
virtual void init(const JMapInfoIter &);
|
|
virtual void initCaseUseSwitchA(const MapObjActorInitInfo &);
|
|
|
|
void startOnShadow();
|
|
};
|
|
|
|
class RailDemoMoveObj : public RailMoveObj {
|
|
public:
|
|
RailDemoMoveObj(const char *);
|
|
|
|
virtual ~RailDemoMoveObj();
|
|
virtual void init(const JMapInfoIter &);
|
|
virtual bool tryStartMove();
|
|
virtual void startMoveInner();
|
|
virtual void move();
|
|
virtual bool endMove();
|
|
|
|
DemoCtrlBase* mDemoControl; // 0xD4
|
|
};
|
|
|
|
class RailRotateMoveObj : public RailMoveObj {
|
|
public:
|
|
RailRotateMoveObj(const char *);
|
|
|
|
virtual ~RailRotateMoveObj();
|
|
virtual bool receiveOtherMsg(u32, HitSensor *, HitSensor *);
|
|
virtual void initCaseUseSwitchB(const MapObjActorInitInfo &);
|
|
virtual void setupInitInfo(const JMapInfoIter &, MapObjActorInitInfo *);
|
|
|
|
bool tryStartRotateAtPoint();
|
|
bool tryStartRotateBetweenPoints();
|
|
};
|
|
|
|
namespace NrvRailMoveObj {
|
|
NERVE(HostTypeWait);
|
|
NERVE(HostTypeWaitForPlayerOn);
|
|
NERVE(HostTypeMove);
|
|
NERVE(HostTypeDone);
|
|
}; |