This commit is contained in:
Walter Julius Hennecke 2014-03-09 23:04:25 +01:00
parent bc0aecbafd
commit 5477f6b6b8
1 changed files with 188 additions and 199 deletions

View File

@ -1,199 +1,188 @@
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// //
// $Logfile:: /Code/DLLs/game/torsoAimAndFireWeapon.hpp $ // $Logfile:: /Code/DLLs/game/torsoAimAndFireWeapon.hpp $
// $Revision:: 169 $ // $Revision:: 169 $
// $Author:: sketcher $ // $Author:: sketcher $
// $Date:: 4/26/02 2:22p $ // $Date:: 4/26/02 2:22p $
// //
// Copyright (C) 2002 by Ritual Entertainment, Inc. // Copyright (C) 2002 by Ritual Entertainment, Inc.
// All rights reserved. // All rights reserved.
// //
// This source may not be distributed and/or modified without // This source may not be distributed and/or modified without
// expressly written permission by Ritual Entertainment, Inc. // expressly written permission by Ritual Entertainment, Inc.
// //
// //
// DESCRIPTION: // DESCRIPTION:
// torsoAimAndFireWeapon Behavior Definition // torsoAimAndFireWeapon Behavior Definition
// //
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
//============================== //==============================
// Forward Declarations // Forward Declarations
//============================== //==============================
class TorsoAimAndFireWeapon; class TorsoAimAndFireWeapon;
#ifndef __TORSO_AIM_AND_FIRE_WEAPON___ #ifndef __TORSO_AIM_AND_FIRE_WEAPON___
#define __TORSO_AIM_AND_FIRE_WEAPON___ #define __TORSO_AIM_AND_FIRE_WEAPON___
#include "behavior.h" #include "behavior.h"
#include "behaviors_general.h" #include "behaviors_general.h"
//------------------------- CLASS ------------------------------ //------------------------- CLASS ------------------------------
// //
// Name: TorsoAimAndFireWeapon // Name: TorsoAimAndFireWeapon
// Base Class: Behavior // Base Class: Behavior
// //
// Description: Aims the torso at the current enemy ( If the // Description: Aims the torso at the current enemy ( If the
// current enemy is within the passed in limits ) // current enemy is within the passed in limits )
// //
// //
// Method of Use: Called From State Machine // Method of Use: Called From State Machine
//-------------------------------------------------------------- //--------------------------------------------------------------
class TorsoAimAndFireWeapon : public Behavior class TorsoAimAndFireWeapon : public Behavior {
{ public:
//------------------------------------ //------------------------------------
// States // States
//------------------------------------ //------------------------------------
public: typedef enum {
typedef enum TORSO_AIM_AND_FIRE_AIM,
{ TORSO_AIM_AND_FIRE_PRE_FIRE,
TORSO_AIM_AND_FIRE_AIM, TORSO_AIM_AND_FIRE_ATTACK,
TORSO_AIM_AND_FIRE_PRE_FIRE, TORSO_AIM_AND_FIRE_POST_FIRE,
TORSO_AIM_AND_FIRE_ATTACK, TORSO_AIM_AND_FIRE_SUCCESS,
TORSO_AIM_AND_FIRE_POST_FIRE, TORSO_AIM_AND_FIRE_FAILED
TORSO_AIM_AND_FIRE_SUCCESS, } TorsoAimAndFireStates_t;
TORSO_AIM_AND_FIRE_FAILED
} TorsoAimAndFireStates_t; //-------------------------------------
// Public Interface
//------------------------------------ //-------------------------------------
// Parameters CLASS_PROTOTYPE(TorsoAimAndFireWeapon);
//------------------------------------
private: TorsoAimAndFireWeapon();
float _aimTimeMin; ~TorsoAimAndFireWeapon();
float _aimTimeMax;
float _fireTimeMin; void SetArgs(Event* ev);
float _fireTimeMax; void AnimDone(Event* ev);
bool _forceAttack;
float _maxTorsoYaw; void Begin(Actor& self);
float _maxTorsoPitch; BehaviorReturnCode_t Evaluate(Actor& self);
float _maxTorsoTurnSpeed; void End(Actor& self);
int _shots;
bool _aimOnly; // Accessors
bool _repeat; virtual void Archive(Archiver& arc);
//------------------------------------- protected:
// Internal Functionality //-------------------------------------
//------------------------------------- // Internal Functionality
protected: //-------------------------------------
void transitionToState ( TorsoAimAndFireStates_t state ); void transitionToState(TorsoAimAndFireStates_t state);
void setInternalState ( TorsoAimAndFireStates_t state , const str &stateName ); void setInternalState(TorsoAimAndFireStates_t state, const str& stateName);
void init ( Actor &self ); void init(Actor &self);
void think (); void think();
void updateEnemy (); void updateEnemy();
void AdjustTorsoAngles ( const Vector &tagPos , const Vector &watchPosition ); void AdjustTorsoAngles(const Vector& tagPos, const Vector& watchPosition);
void LerpTorsoBySpeed ( const Vector &angleDelta ); void LerpTorsoBySpeed(const Vector& angleDelta);
void setupStateAim (); void setupStateAim();
BehaviorReturnCode_t evaluateStateAim (); BehaviorReturnCode_t evaluateStateAim();
void failureStateAim ( const str& failureReason ); void failureStateAim(const str& failureReason);
void setupStatePreFire (); void setupStatePreFire();
BehaviorReturnCode_t evaluateStatePreFire (); BehaviorReturnCode_t evaluateStatePreFire();
void failureStatePreFire ( const str& failureReason ); void failureStatePreFire(const str& failureReason);
void setupStateAttack (); void setupStateAttack();
BehaviorReturnCode_t evaluateStateAttack (); BehaviorReturnCode_t evaluateStateAttack();
void failureStateAttack ( const str& failureReason ); void failureStateAttack(const str& failureReason);
void setupStatePostFire (); void setupStatePostFire();
BehaviorReturnCode_t evaluateStatePostFire (); BehaviorReturnCode_t evaluateStatePostFire();
void failureStatePostFire ( const str& failureReason ); void failureStatePostFire(const str& failureReason);
private:
//------------------------------------
//------------------------------------- // Parameters
// Public Interface //------------------------------------
//------------------------------------- float _aimTimeMin;
public: float _aimTimeMax;
CLASS_PROTOTYPE( TorsoAimAndFireWeapon ); float _fireTimeMin;
float _fireTimeMax;
TorsoAimAndFireWeapon(); bool _forceAttack;
~TorsoAimAndFireWeapon(); float _maxTorsoYaw;
float _maxTorsoPitch;
void SetArgs ( Event *ev ); float _maxTorsoTurnSpeed;
void AnimDone ( Event *ev ); int _shots;
bool _aimOnly;
void Begin ( Actor &self ); bool _repeat;
BehaviorReturnCode_t Evaluate ( Actor &self );
void End ( Actor &self ); //-------------------------------------
// Components
// Accessors //-------------------------------------
virtual void Archive ( Archiver &arc ); FireWeapon _fireWeapon;
//------------------------------------- //-------------------------------------
// Components // Member Variables
//------------------------------------- //-------------------------------------
private: TorsoAimAndFireStates_t _state;
FireWeapon _fireWeapon; Vector _currentTorsoAngles;
float _endFireTime;
//------------------------------------- float _endAimTime;
// Member Variables EntityPtr _currentEnemy;
//------------------------------------- bool _canAttack;
private: bool _animDone;
TorsoAimAndFireStates_t _state; str _aimAnim;
Vector _currentTorsoAngles; str _preFireAnim;
float _endFireTime; str _fireAnim;
float _endAimTime; str _postFireAnim;
EntityPtr _currentEnemy; bool _fireFailed;
bool _canAttack; bool _endOnAimFail;
bool _animDone; Actor* _self;
str _aimAnim; };
str _preFireAnim;
str _fireAnim; inline void TorsoAimAndFireWeapon::Archive(Archiver& arc) {
str _postFireAnim; Behavior::Archive(arc);
bool _fireFailed;
bool _endOnAimFail; //
Actor *_self; // Archive Parameters
//
arc.ArchiveFloat(&_aimTimeMin);
}; arc.ArchiveFloat(&_aimTimeMax);
arc.ArchiveFloat(&_fireTimeMin);
inline void TorsoAimAndFireWeapon::Archive( Archiver &arc ) arc.ArchiveFloat(&_fireTimeMax);
{ arc.ArchiveBool(&_forceAttack);
Behavior::Archive ( arc ); arc.ArchiveFloat(&_maxTorsoYaw);
arc.ArchiveFloat(&_maxTorsoPitch);
// arc.ArchiveFloat(&_maxTorsoTurnSpeed);
// Archive Parameters arc.ArchiveBool(&_aimOnly);
// arc.ArchiveInteger(&_shots);
arc.ArchiveFloat( &_aimTimeMin ); arc.ArchiveBool(&_repeat);
arc.ArchiveFloat( &_aimTimeMax );
arc.ArchiveFloat( &_fireTimeMin ); //
arc.ArchiveFloat( &_fireTimeMax ); // Archive Components
arc.ArchiveBool( &_forceAttack ); //
arc.ArchiveFloat( &_maxTorsoYaw ); arc.ArchiveObject(&_fireWeapon);
arc.ArchiveFloat( &_maxTorsoPitch );
arc.ArchiveFloat( &_maxTorsoTurnSpeed ); //
arc.ArchiveBool( &_aimOnly ); // Archive Member Variables
arc.ArchiveInteger( &_shots ); //
arc.ArchiveBool( &_repeat ); ArchiveEnum(_state, TorsoAimAndFireStates_t);
arc.ArchiveVector(&_currentTorsoAngles);
//
// Archive Components arc.ArchiveFloat(&_endFireTime);
// arc.ArchiveFloat(&_endAimTime);
arc.ArchiveObject ( &_fireWeapon ); arc.ArchiveSafePointer(&_currentEnemy);
arc.ArchiveBool(&_canAttack);
// arc.ArchiveBool(&_animDone);
// Archive Member Variables arc.ArchiveString(&_aimAnim);
// arc.ArchiveString(&_preFireAnim);
ArchiveEnum ( _state, TorsoAimAndFireStates_t ); arc.ArchiveString(&_fireAnim);
arc.ArchiveVector ( &_currentTorsoAngles ); arc.ArchiveString(&_postFireAnim);
arc.ArchiveBool(&_fireFailed);
arc.ArchiveFloat( &_endFireTime ); arc.ArchiveBool(&_endOnAimFail);
arc.ArchiveFloat( &_endAimTime );
arc.ArchiveSafePointer( &_currentEnemy ); arc.ArchiveObjectPointer((Class **)&_self);
arc.ArchiveBool( &_canAttack ); }
arc.ArchiveBool( &_animDone );
arc.ArchiveString( &_aimAnim );
arc.ArchiveString( &_preFireAnim ); #endif /* __TORSO_AIM_AND_FIRE_WEAPON___ */
arc.ArchiveString( &_fireAnim );
arc.ArchiveString( &_postFireAnim );
arc.ArchiveBool( &_fireFailed );
arc.ArchiveBool( &_endOnAimFail );
arc.ArchiveObjectPointer( ( Class ** )&_self );
}
#endif /* __TORSO_AIM_AND_FIRE_WEAPON___ */