diff options
Diffstat (limited to '')
-rwxr-xr-x | include/game.h | 38 | ||||
-rw-r--r-- | include/statelib.h | 68 |
2 files changed, 60 insertions, 46 deletions
diff --git a/include/game.h b/include/game.h index d16a09f..f7728db 100755 --- a/include/game.h +++ b/include/game.h @@ -1099,7 +1099,7 @@ public: dActorMultiState_c *owner;
u32 unkZero;
- StateMgr<dActorMultiState_c> manager;
+ dStateMgr_c<dActorMultiState_c> manager;
// All these are passed straight through to the manager
virtual void _vfC();
@@ -1128,11 +1128,11 @@ public: virtual void _vfC(); // calls vfC on ptrToStateMgr
virtual void execute(); // calls vf10 on ptrToStateMgr
virtual void _vf14(); // if (isSecondStateMgr()) { disableSecond(); } else { ptrToStateMgr->_vf14(); }
- virtual void setState(StateBase *state); // calls vf18 on ptrToStateMgr
+ virtual void setState(dStateBase_c *state); // calls vf18 on ptrToStateMgr
virtual void _vf1C(); // calls vf1C on ptrToStateMgr
virtual void _vf20(); // calls vf20 on ptrToStateMgr
virtual void _vf24(); // calls vf24 on ptrToStateMgr
- virtual StateBase *getCurrentState(); // calls vf28 on ptrToStateMgr
+ virtual dStateBase_c *getCurrentState(); // calls vf28 on ptrToStateMgr
virtual void _vf2C(); // calls vf2C on ptrToStateMgr
virtual void enableSecond(); // sets ptrToStateMgr to s2, calls vf18 on it
virtual void disableSecond(); // if (isSecondStateMgr()) { ptrToStateMgr->vf14(); ptrToStateMgr = &s1; }
@@ -1146,6 +1146,8 @@ public: ~MultiStateMgr();
};
+#define REF_NINTENDO_STATE(NAME) \
+ static State StateID_##NAME;
#define DECLARE_STATE(NAME) \
static State StateID_##NAME; \
@@ -1161,7 +1163,7 @@ public: &CLASS::endState_##NAME);
#define USING_STATES(CLASS) \
- typedef State<CLASS> State;
+ typedef dState_c<CLASS> State;
struct LinkListEntry {
@@ -1467,7 +1469,7 @@ public: MultiStateMgr acState;
- virtual void doStateChange(StateBase *state); // might return bool? overridden by dEn_c
+ virtual void doStateChange(dStateBase_c *state); // might return bool? overridden by dEn_c
virtual void _vfD8(); // nullsub ??
virtual void _vfDC(); // nullsub ??
virtual void _vfE0(); // nullsub ??
@@ -1519,7 +1521,7 @@ public: void _vfCC(Vec2 *p);
void _vfD0(Vec2 *p);
- void doStateChange(StateBase *state); // might return bool, dunno
+ void doStateChange(dStateBase_c *state); // might return bool, dunno
// Now here's where the fun starts.
@@ -1639,6 +1641,17 @@ public: static void collisionCallback(ActivePhysics::Info *one, ActivePhysics::Info *two);
+
+ // States
+ USING_STATES(dEn_c);
+ REF_NINTENDO_STATE(DieFumi);
+ REF_NINTENDO_STATE(DieFall);
+ REF_NINTENDO_STATE(DieBigFall);
+ REF_NINTENDO_STATE(DieSmoke);
+ REF_NINTENDO_STATE(DieIceVanish);
+ REF_NINTENDO_STATE(DieYoshiFumi);
+ REF_NINTENDO_STATE(DieGoal);
+ REF_NINTENDO_STATE(DieOther);
};
@@ -1708,12 +1721,13 @@ public: static void *OPhysicsCallback2;
static void *OPhysicsCallback3;
- static State<daEnBlockMain_c> StateID_UpMove;
- static State<daEnBlockMain_c> StateID_DownMove;
- static State<daEnBlockMain_c> StateID_DownMoveEnd;
- static State<daEnBlockMain_c> StateID_UpMove_Diff;
- static State<daEnBlockMain_c> StateID_DownMove_Diff;
- static State<daEnBlockMain_c> StateID_DownMove_DiffEnd;
+ USING_STATES(daEnBlockMain_c);
+ REF_NINTENDO_STATE(UpMove);
+ REF_NINTENDO_STATE(DownMove);
+ REF_NINTENDO_STATE(DownMoveEnd);
+ REF_NINTENDO_STATE(UpMove_Diff);
+ REF_NINTENDO_STATE(DownMove_Diff);
+ REF_NINTENDO_STATE(DownMove_DiffEnd);
~daEnBlockMain_c();
};
diff --git a/include/statelib.h b/include/statelib.h index 34ab282..c039934 100644 --- a/include/statelib.h +++ b/include/statelib.h @@ -1,21 +1,21 @@ /******************************************************************************/ -// StateBase class +// dStateBase_c class /******************************************************************************/ -class StateBase { +class dStateBase_c { public: - StateBase(const char *name); + dStateBase_c(const char *name); - virtual ~StateBase(); + virtual ~dStateBase_c(); virtual bool isInvalid(); - virtual bool isEqualNotUsedForSomeReason(StateBase *another); - virtual bool isEqual(StateBase *another); - virtual bool isNotEqual(StateBase *another); + virtual bool isEqualNotUsedForSomeReason(dStateBase_c *another); + virtual bool isEqual(dStateBase_c *another); + virtual bool isNotEqual(dStateBase_c *another); virtual bool isSameStateName(const char *name); virtual const char *getName(); virtual int getID(); - static StateBase mNoState; + static dStateBase_c mNoState; private: const char *mName; @@ -25,21 +25,21 @@ private: }; /******************************************************************************/ -// State<TOwner> : StateBase class +// dState_c<TOwner> : dStateBase_c class /******************************************************************************/ template <class TOwner> -class State : public StateBase { +class dState_c : public dStateBase_c { public: typedef void (TOwner::*funcPtr)(); - State(const char *name, funcPtr begin, funcPtr execute, funcPtr end) : StateBase(name) { + dState_c(const char *name, funcPtr begin, funcPtr execute, funcPtr end) : dStateBase_c(name) { mBegin = begin; mExecute = execute; mEnd = end; } - ~State(); + ~dState_c(); bool isSameStateName(const char *name); virtual void doBegin(TOwner *owner); @@ -52,10 +52,10 @@ public: }; template <class TOwner> -State<TOwner>::~State() { } +dState_c<TOwner>::~dState_c() { } template <class TOwner> -bool State<TOwner>::isSameStateName(const char *name) { +bool dState_c<TOwner>::isSameStateName(const char *name) { const char *p = strrchr(name, ':'); if (p) name = p + 1; @@ -68,64 +68,64 @@ bool State<TOwner>::isSameStateName(const char *name) { } template <class TOwner> -void State<TOwner>::doBegin(TOwner *owner) { +void dState_c<TOwner>::doBegin(TOwner *owner) { (owner->*mBegin)(); } template <class TOwner> -void State<TOwner>::doExecute(TOwner *owner) { +void dState_c<TOwner>::doExecute(TOwner *owner) { (owner->*mExecute)(); } template <class TOwner> -void State<TOwner>::doEnd(TOwner *owner) { +void dState_c<TOwner>::doEnd(TOwner *owner) { (owner->*mEnd)(); } /******************************************************************************/ -// StateMgrBase class +// dStateMgrBase_c class /******************************************************************************/ -class StateMgrBase { +class dStateMgrBase_c { public: - StateMgrBase(void *one, void *two, StateBase *pInitState); + dStateMgrBase_c(void *one, void *two, dStateBase_c *pInitState); - virtual ~StateMgrBase(); + virtual ~dStateMgrBase_c(); virtual void _vf0C(); virtual void execute(); virtual void _vf14(); - virtual void setState(StateBase *pNewState); + virtual void setState(dStateBase_c *pNewState); virtual void setField10ToOne(); - virtual StateBase *getField20(); - virtual StateBase *getField14(); - virtual StateBase *getCurrentState_maybe(); - virtual StateBase *getField18(); + virtual dStateBase_c *getField20(); + virtual dStateBase_c *getField14(); + virtual dStateBase_c *getCurrentState_maybe(); + virtual dStateBase_c *getField18(); virtual bool _vf30() = 0; virtual void _vf34() = 0; virtual void _vf38() = 0; - virtual void _vf3C(StateBase *pState) = 0; + virtual void _vf3C(dStateBase_c *pState) = 0; private: void *m04, *m08; bool m0C, m0D, m0E, m0F, m10; - StateBase *m14, *m18, *m1C; - StateBase *m20; // maybe not a StateBase? + dStateBase_c *m14, *m18, *m1C; + dStateBase_c *m20; // maybe not a dStateBase_c? }; /******************************************************************************/ -// StateMgr<TOwner> : StateMgrBase class +// dStateMgr_c<TOwner> : dStateMgrBase_c class /******************************************************************************/ template <class TOwner> -class StateMgr : public StateMgrBase { +class dStateMgr_c : public dStateMgrBase_c { public: - StateMgr(void *one, void *two, StateBase *pInitState); - ~StateMgr(); + dStateMgr_c(void *one, void *two, dStateBase_c *pInitState); + ~dStateMgr_c(); bool _vf30(); void _vf34(); void _vf38(); - void _vf3C(StateBase *pState); + void _vf3C(dStateBase_c *pState); }; // TODO: add template methods |