This commit is contained in:
Walter Julius Hennecke 2014-03-09 22:44:04 +01:00
parent a24940bed2
commit b9f90d4305
1 changed files with 151 additions and 161 deletions

View File

@ -38,109 +38,99 @@ class SelectBestWeapon;
// //
// Method of Use: Called From State Machine // Method of Use: Called From State Machine
//-------------------------------------------------------------- //--------------------------------------------------------------
class SelectBestWeapon : public Behavior class SelectBestWeapon : public Behavior {
{ public:
//------------------------------------ //------------------------------------
// States // States
//------------------------------------ //------------------------------------
public: typedef enum {
typedef enum SBW_SELECT_WEAPON,
{ SBW_PUT_AWAY_CURRENT_WEAPON,
SBW_SELECT_WEAPON, SBW_PULL_OUT_NEW_WEAPON,
SBW_PUT_AWAY_CURRENT_WEAPON, SBW_READY_NEW_WEAPON,
SBW_PULL_OUT_NEW_WEAPON, SBW_SUCCESS,
SBW_READY_NEW_WEAPON, SBW_FAILED
SBW_SUCCESS, } selectBestWeaponStates_t;
SBW_FAILED
} selectBestWeaponStates_t;
//------------------------------------
// Parameters
//------------------------------------
private:
EntityPtr _currentEnemy;
//-------------------------------------
// Internal Functionality
//-------------------------------------
protected:
void transitionToState ( selectBestWeaponStates_t state );
void setInternalState ( selectBestWeaponStates_t state , const str &stateName );
void init ( Actor &self );
void think ();
void setupStateSelectWeapon ();
BehaviorReturnCode_t evaluateStateSelectWeapon();
void failureStateSelectWeapon( const str& failureReason );
void setupStatePutAwayCurrentWeapon();
BehaviorReturnCode_t evaluateStatePutAwayCurrentWeapon();
void failureStatePutAwayCurrentWeapon(const str& failureReason);
void setupStatePullOutNewWeapon();
BehaviorReturnCode_t evaluateStatePullOutNewWeapon();
void failureStatePullOutNewWeapon(const str& failureReason);
void setupStateReadyNewWeapon();
BehaviorReturnCode_t evaluateStateReadyNewWeapon();
void failureStateReadyNewWeapon( const str& failureReason );
//------------------------------------- //-------------------------------------
// Public Interface // Public Interface
//------------------------------------- //-------------------------------------
public: CLASS_PROTOTYPE(SelectBestWeapon);
CLASS_PROTOTYPE( SelectBestWeapon );
SelectBestWeapon(); SelectBestWeapon();
~SelectBestWeapon(); ~SelectBestWeapon();
void SetArgs ( Event *ev ); void SetArgs(Event* ev);
void AnimDone ( Event *ev ); void AnimDone(Event* ev);
void PostureDone ( Event *ev ); void PostureDone(Event* ev);
void Begin ( Actor &self ); void Begin(Actor& self);
BehaviorReturnCode_t Evaluate ( Actor &self ); BehaviorReturnCode_t Evaluate(Actor& self);
void End ( Actor &self ); void End(Actor& self);
void SetCurrentEnemy ( Entity* enemy ); void SetCurrentEnemy(Entity* enemy);
static bool CanExecute( Actor &self ); static bool CanExecute(Actor& self);
virtual void Archive ( Archiver &arc ); virtual void Archive(Archiver& arc);
protected:
//-------------------------------------
// Internal Functionality
//-------------------------------------
void transitionToState(selectBestWeaponStates_t state);
void setInternalState(selectBestWeaponStates_t state, const str& stateName);
void init(Actor& self);
void think();
void setupStateSelectWeapon();
BehaviorReturnCode_t evaluateStateSelectWeapon();
void failureStateSelectWeapon(const str& failureReason);
void setupStatePutAwayCurrentWeapon();
BehaviorReturnCode_t evaluateStatePutAwayCurrentWeapon();
void failureStatePutAwayCurrentWeapon(const str& failureReason);
void setupStatePullOutNewWeapon();
BehaviorReturnCode_t evaluateStatePullOutNewWeapon();
void failureStatePullOutNewWeapon(const str& failureReason);
void setupStateReadyNewWeapon();
BehaviorReturnCode_t evaluateStateReadyNewWeapon();
void failureStateReadyNewWeapon(const str& failureReason);
private:
//------------------------------------
// Parameters
//------------------------------------
EntityPtr _currentEnemy;
//------------------------------------- //-------------------------------------
// Components // Components
//------------------------------------- //-------------------------------------
private:
//------------------------------------- //-------------------------------------
// Member Variables // Member Variables
//------------------------------------- //-------------------------------------
private: selectBestWeaponStates_t _state;
selectBestWeaponStates_t _state; Actor* _self;
Actor *_self; WeaponPtr _bestWeapon;
WeaponPtr _bestWeapon; str _currentWeaponName;
str _currentWeaponName; str _bestWeaponName;
str _bestWeaponName; bool _animDone;
bool _animDone;
}; };
inline void SelectBestWeapon::SetCurrentEnemy( Entity *enemy ) inline void SelectBestWeapon::SetCurrentEnemy(Entity* enemy) {
{
_currentEnemy = enemy; _currentEnemy = enemy;
} }
inline void SelectBestWeapon::Archive( Archiver &arc ) inline void SelectBestWeapon::Archive(Archiver& arc) {
{ Behavior::Archive(arc);
Behavior::Archive ( arc );
// //
// Archive Parameters // Archive Parameters
// //
arc.ArchiveSafePointer( &_currentEnemy ); arc.ArchiveSafePointer(&_currentEnemy);
// //
// Archive Components // Archive Components
@ -149,12 +139,12 @@ inline void SelectBestWeapon::Archive( Archiver &arc )
// //
// Archive Member Variables // Archive Member Variables
// //
ArchiveEnum ( _state, selectBestWeaponStates_t ); ArchiveEnum(_state, selectBestWeaponStates_t);
arc.ArchiveObjectPointer( ( Class ** )&_self ); arc.ArchiveObjectPointer((Class **)&_self);
arc.ArchiveSafePointer ( &_bestWeapon ); arc.ArchiveSafePointer(&_bestWeapon);
arc.ArchiveString ( &_currentWeaponName ); arc.ArchiveString(&_currentWeaponName);
arc.ArchiveString ( &_bestWeaponName ); arc.ArchiveString(&_bestWeaponName);
arc.ArchiveBool ( &_animDone ); arc.ArchiveBool(&_animDone);
} }