diff options
Diffstat (limited to 'include')
| -rwxr-xr-x | include/game.h | 37 | ||||
| -rw-r--r-- | include/statelib.h | 14 | 
2 files changed, 34 insertions, 17 deletions
diff --git a/include/game.h b/include/game.h index 3b2876d..e5a4813 100755 --- a/include/game.h +++ b/include/game.h @@ -1095,6 +1095,12 @@ class dActorMultiState_c;  template <class TOwner>
  class dStateWrapperBase_c {
  public:
 +	dStateWrapperBase_c() :
 +		manager(&pointless, &executor, &dStateBase_c::mNoState) { }
 +
 +	dStateWrapperBase_c(dState_c<TOwner> *pInitState) :
 +		manager(&pointless, &executor, pInitState) { }
 +
  	virtual ~dStateWrapperBase_c() { }
  	dStatePointless_c pointless;
 @@ -1102,21 +1108,27 @@ public:  	dStateMgr_c manager;
 -	// All these are passed straight through to the manager, todo: name them and arguments
 -	virtual void ensureStateHasBegun();
 -	virtual void execute();
 -	virtual void endCurrentState();
 -	virtual void setState(dStateBase_c *pNewState);
 -	virtual void executeNextStateThisTick();
 -	virtual dStateMethodExecutorBase_c *getCurrentStateMethodExecutor();
 -	virtual dStateBase_c *getNextState();
 -	virtual dStateBase_c *getCurrentState();
 -	virtual dStateBase_c *getPreviousState();
 +	// All these are passed straight through to the manager
 +	virtual void ensureStateHasBegun() { manager.ensureStateHasBegun(); }
 +	virtual void execute() { manager.execute(); }
 +	virtual void endCurrentState() { manager.endCurrentState(); }
 +	virtual void setState(dStateBase_c *pNewState) { manager.setState(pNewState); }
 +	virtual void executeNextStateThisTick() { manager.executeNextStateThisTick(); }
 +	virtual dStateMethodExecutorBase_c *getCurrentStateMethodExecutor() { return manager.getCurrentStateMethodExecutor(); }
 +	virtual dStateBase_c *getNextState() { return manager.getNextState(); }
 +	virtual dStateBase_c *getCurrentState() { return manager.getCurrentState(); }
 +	virtual dStateBase_c *getPreviousState() { return manager.getPreviousState(); }
  };
  template <class TOwner>
  class dStateWrapper_c : public dStateWrapperBase_c<TOwner> {
  public:
 +	dStateWrapper_c() :
 +		dStateWrapperBase_c() { }
 +
 +	dStateWrapper_c(dState_c<TOwner> *pInitState) :
 +		dStateWrapperBase_c(pInitState) { }
 +
  	~dStateWrapper_c() { }
  };
 @@ -1164,6 +1176,11 @@ public:  		&CLASS::executeState_##NAME, \
  		&CLASS::endState_##NAME);
 +#define CREATE_STATE_E(CLASS, NAME) \
 +	CREATE_STATE(CLASS, NAME) \
 +	void CLASS::beginState_##NAME() { } \
 +	void CLASS::endState_##NAME() { }
 +
  #define USING_STATES(CLASS) \
  	typedef dState_c<CLASS> State;
 diff --git a/include/statelib.h b/include/statelib.h index d387f02..092ef6a 100644 --- a/include/statelib.h +++ b/include/statelib.h @@ -90,8 +90,8 @@ void dState_c<TOwner>::doEnd(TOwner *owner) {  /******************************************************************************/  class dStatePointless_c {  	public: -		virtual ~dStatePointless_c(); -		virtual int returnsOne(); // Does exactly what it says on the tin. +		virtual ~dStatePointless_c() { }; +		virtual int returnsOne() { return 1; }  };  /******************************************************************************/ @@ -99,7 +99,7 @@ class dStatePointless_c {  /******************************************************************************/  class dStateMethodExecutorBase_c {  	public: -		virtual ~dStateMethodExecutorBase_c() = 0; +		virtual ~dStateMethodExecutorBase_c() { }  		virtual void callBegin() = 0;  		virtual void callExecute() = 0; @@ -108,7 +108,7 @@ class dStateMethodExecutorBase_c {  class dStateExecutorBase_c {  	public: -		virtual ~dStateExecutorBase_c() = 0; +		virtual ~dStateExecutorBase_c() { }  		virtual dStateMethodExecutorBase_c *getMethodExecutorForState(dStateBase_c *state) = 0;  		virtual void clearMethodExecutor(dStateMethodExecutorBase_c **ptrToPtrToExecutor) = 0; @@ -120,7 +120,7 @@ class dStateExecutorBase_c {  template <class TOwner>  class dStateMethodExecutor_c : public dStateMethodExecutorBase_c {  	public: -		~dStateMethodExecutor_c(); +		~dStateMethodExecutor_c() { }  		void callBegin();  		void callExecute(); @@ -133,7 +133,7 @@ class dStateMethodExecutor_c : public dStateMethodExecutorBase_c {  template <class TOwner>  class dStateExecutor_c : public dStateExecutorBase_c {  	public: -		~dStateExecutor_c(); +		~dStateExecutor_c() { }  		dStateMethodExecutorBase_c *getMethodExecutorForState(dStateBase_c *state);  		void clearMethodExecutor(dStateMethodExecutorBase_c **ptrToPtrToExecutor); @@ -225,7 +225,7 @@ protected:  class dStateMgr_c : public dStateMgrBase_c {  public:  	dStateMgr_c(dStatePointless_c *pPointlessClass, dStateExecutorBase_c *pStateExecutor, dStateBase_c *pInitState); -	~dStateMgr_c(); +	~dStateMgr_c() { }  	bool callBeginOnState();  	void callExecuteOnState();  | 
