diff --git a/dlls/game/corridorCombatWithRangedWeapon.hpp b/dlls/game/corridorCombatWithRangedWeapon.hpp index fb11c10..9c7359d 100644 --- a/dlls/game/corridorCombatWithRangedWeapon.hpp +++ b/dlls/game/corridorCombatWithRangedWeapon.hpp @@ -1,294 +1,285 @@ -//----------------------------------------------------------------------------- -// -// $Logfile:: /Code/DLLs/game/corridorCombatWithRangedWeapon.hpp $ -// $Revision:: 169 $ -// $Author:: sketcher $ -// $Date:: 4/26/02 2:22p $ -// -// Copyright (C) 2002 by Ritual Entertainment, Inc. -// All rights reserved. -// -// This source may not be distributed and/or modified without -// expressly written permission by Ritual Entertainment, Inc. -// -// -// DESCRIPTION: -// CooridorCombatWithRangedWeapon Behavior Definition -// -//-------------------------------------------------------------------------------- - -//============================== -// Forward Declarations -//============================== -class CorridorCombatWithRangedWeapon; - -#ifndef __CORRIDORCOMBAT_WITH_RANGEDWEAPON_HPP__ -#define __CORRIDORCOMBAT_WITH_RANGEDWEAPON_HPP__ - -#include "behavior.h" -#include "behaviors_general.h" - -//------------------------- CLASS ------------------------------ -// -// Name: CooridorCombatWithRangedWeapon -// Base Class: Behavior -// -// Description: -// -// Method of Use: Called From State Machine -//-------------------------------------------------------------- -class CorridorCombatWithRangedWeapon : public Behavior - { - //------------------------------------ - // States - //------------------------------------ - public: - typedef enum - { - CORRIDORCOMBAT_WRW_FINDNODE, - CORRIDORCOMBAT_WRW_MOVETONODE, - CORRIDORCOMBAT_WRW_BACKPEDAL, - CORRIDORCOMBAT_WRW_FINDBETTERNODE, - CORRIDORCOMBAT_WRW_MOVETOBETTERNODE, - CORRIDORCOMBAT_WRW_CHANGEPOSTURE_DUCK, - CORRIDORCOMBAT_WRW_CHANGEPOSTURE_STAND, - CORRIDORCOMBAT_WRW_DUCKED, - CORRIDORCOMBAT_WRW_DUCKED_FIRING, - CORRIDORCOMBAT_WRW_STAND, - CORRIDORCOMBAT_WRW_STAND_FIRING, - CORRIDORCOMBAT_WRW_HOLD_POSITION, - CORRIDORCOMBAT_WRW_SUCCESS, - CORRIDORCOMBAT_WRW_FAILED - } corridorCombatStates_t; - - //------------------------------------ - // Parameters - //------------------------------------ - private: - str _movementAnim; - str _torsoAnim; - str _fireAnim; - str _preFireAnim; - str _postFireAnim; - float _postureChangeChance; - float _maxDistance; - float _retreatDistance; - float _threatDistance; - float _fireTimeMin; - float _fireTimeMax; - float _pauseTimeMin; - float _pauseTimeMax; - - //------------------------------------- - // Internal Functionality - //------------------------------------- - protected: - void transitionToState ( corridorCombatStates_t state ); - void setInternalState ( corridorCombatStates_t state , const str &stateName ); - void init ( Actor &self ); - void think (); - void updateEnemy (); - void setTorsoAnim (); - - bool checkShouldDuck (); - bool checkShouldStand (); - bool checkShouldRetreat (); - - void setupRotate(); - BehaviorReturnCode_t evaluateRotate(); - - void setupStateFindNode (); - BehaviorReturnCode_t evaluateStateFindNode (); - void failureStateFindNode ( const str& failureReason ); - - void setupStateMoveToNode (); - BehaviorReturnCode_t evaluateStateMoveToNode (); - void failureStateMoveToNode ( const str& failureReason ); - - void setupStateBackPedal (); - BehaviorReturnCode_t evaluateStateBackPedal (); - void failureStateBackPedal ( const str& failureReason ); - - void setupStateFindBetterNode (); - BehaviorReturnCode_t evaluateStateFindBetterNode (); - void failureStateFindBetterNode ( const str& failureReason ); - - void setupStateMoveToBetterNode (); - BehaviorReturnCode_t evaluateStateMoveToBetterNode (); - void failureStateMoveToBetterNode ( const str& failureReason ); - - void setupStateChangePostureDuck (); - BehaviorReturnCode_t evaluateStateChangePostureDuck (); - void failureStateChangePostureDuck ( const str& failureReason ); - - void setupStateChangePostureStand (); - BehaviorReturnCode_t evaluateStateChangePostureStand (); - void failureStateChangePostureStand ( const str& failureReason ); - - void setupStateDucked (); - BehaviorReturnCode_t evaluateStateDucked (); - void failureStateDucked ( const str& failureReason ); - - void setupStateFireDucked (); - BehaviorReturnCode_t evaluateStateFireDucked (); - void failureStateFireDucked ( const str& failureReason ); - - void setupStateFirePauseDucked (); - BehaviorReturnCode_t evaluateStateFirePauseDucked (); - void failureStateFirePauseDucked ( const str& failureReason ); - - void setupStateStanding (); - BehaviorReturnCode_t evaluateStateStanding (); - void failureStateStanding ( const str& failureReason ); - - void setupStateFireStanding (); - BehaviorReturnCode_t evaluateStateFireStanding (); - void failureStateFireStanding ( const str& failureReason ); - - void setupStateFirePauseStanding (); - BehaviorReturnCode_t evaluateStateFirePauseStanding (); - void failureStateFirePauseStanding ( const str& failureReason ); - - void setupStateHoldPosition (); - BehaviorReturnCode_t evaluateStateHoldPosition (); - void failureStateHoldPosition ( const str& failureReason ); - - - //------------------------------------- - // Public Interface - //------------------------------------- - public: - CLASS_PROTOTYPE( CorridorCombatWithRangedWeapon ); - - CorridorCombatWithRangedWeapon(); - ~CorridorCombatWithRangedWeapon(); - - void SetArgs ( Event *ev ); - void AnimDone ( Event *ev ); - void PostureDone ( Event *ev ); - - void Begin ( Actor &self ); - BehaviorReturnCode_t Evaluate ( Actor &self ); - void End ( Actor &self ); - - - void SetMovementAnim( const str& movementAnim ) { _movementAnim = movementAnim; } - const str& GetMovementAnim() { return _movementAnim; } - - void SetTorsoAnim( const str& torsoAnim ) { _torsoAnim = torsoAnim; } - const str& GetTorsoAnim() { return _torsoAnim; } - - void SetFireAnim( const str& fireAnim ) { _fireAnim = fireAnim; } - const str& GetFireAnim() { return _fireAnim; } - - void SetPreFireAnim( const str& preFireAnim ) { _preFireAnim = preFireAnim; } - const str& GetPreFireAnim() { return _preFireAnim; } - - void SetPostFireAnim( const str& postFireAnim ) { _postFireAnim = postFireAnim; } - const str& GetPostFireAnim() { return _postFireAnim; } - - void SetPostureChangeChance( float chance ) { _postureChangeChance = chance; } - float GetPostureChangeChance() { return _postureChangeChance; } - - void SetMaxDistance( float maxDistance ) { _maxDistance = maxDistance; } - float GetMaxDistance() { return _maxDistance; } - - void SetRetreatDistance( float retreatDistance ) { _retreatDistance = retreatDistance; } - float GetRetreatDistance() { return _retreatDistance; } - - void SetThreatDistance( float threatDistance ) { _threatDistance = threatDistance; } - float GetThreatDistance() { return _threatDistance; } - - void SetFireTimeMin( float fireTimeMin ) { _fireTimeMin = fireTimeMin; } - float GetFireTimeMin() { return _fireTimeMin; } - - void SetFireTimeMax( float fireTimeMax ) { _fireTimeMax = fireTimeMax; } - float GetFireTimeMax() { return _fireTimeMax; } - - void SetPauseTimeMin( float pauseTimeMin ) { _pauseTimeMin = pauseTimeMin; } - float GetPauseTimeMin() { return _pauseTimeMin; } - - void SetPauseTimeMax( float pauseTimeMax ) { _pauseTimeMax = pauseTimeMax; } - float GetPauseTimeMax() { return _pauseTimeMax; } - - virtual void Archive ( Archiver &arc ); - - static bool CanExecute( float maxDistance , Actor &self ); - - //------------------------------------- - // Components - //------------------------------------- - private: - GotoPoint _gotoPoint; - FireWeapon _fireWeapon; - MoveRandomDirection _moveRandomDir; - RotateToEntity _rotate; - - - //------------------------------------- - // Member Variables - //------------------------------------- - private: - corridorCombatStates_t _state; - HelperNodePtr _node; - Actor *_self; - EntityPtr _currentEnemy; - bool _finishedPostureTransition; - float _nextFireTime; - float _nextPauseTime; - float _holdPositionTime; - float _enemyUpdateTime; - - static const float NODE_RADIUS; - - - }; - - -inline void CorridorCombatWithRangedWeapon::Archive( Archiver &arc ) -{ - Behavior::Archive ( arc ); - - // - // Archive Parameters - // - arc.ArchiveString ( &_movementAnim ); - arc.ArchiveString ( &_torsoAnim ); - arc.ArchiveString ( &_fireAnim ); - arc.ArchiveString ( &_preFireAnim ); - arc.ArchiveString ( &_postFireAnim ); - arc.ArchiveFloat ( &_postureChangeChance ); - arc.ArchiveFloat ( &_maxDistance ); - arc.ArchiveFloat ( &_retreatDistance ); - arc.ArchiveFloat ( &_threatDistance ); - arc.ArchiveFloat ( &_fireTimeMin ); - arc.ArchiveFloat ( &_fireTimeMax ); - arc.ArchiveFloat ( &_pauseTimeMin ); - arc.ArchiveFloat ( &_pauseTimeMax ); - - - // - // Archive Components - // - arc.ArchiveObject ( &_gotoPoint ); - arc.ArchiveObject ( &_fireWeapon ); - arc.ArchiveObject ( &_moveRandomDir ); - arc.ArchiveObject ( &_rotate ); - - // - // Archive Member Variables - // - ArchiveEnum ( _state, corridorCombatStates_t); - arc.ArchiveSafePointer ( &_node ); - arc.ArchiveObjectPointer( ( Class ** )&_self ); - arc.ArchiveSafePointer ( &_currentEnemy ); - arc.ArchiveBool ( &_finishedPostureTransition ); - arc.ArchiveFloat ( &_nextFireTime ); - arc.ArchiveFloat ( &_nextPauseTime ); - arc.ArchiveFloat ( &_holdPositionTime ); - arc.ArchiveFloat ( &_enemyUpdateTime ); - -} - - -#endif /* __CORRIDORCOMBAT_WITH_RANGEDWEAPON_HPP__ */ +//----------------------------------------------------------------------------- +// +// $Logfile:: /Code/DLLs/game/corridorCombatWithRangedWeapon.hpp $ +// $Revision:: 169 $ +// $Author:: sketcher $ +// $Date:: 4/26/02 2:22p $ +// +// Copyright (C) 2002 by Ritual Entertainment, Inc. +// All rights reserved. +// +// This source may not be distributed and/or modified without +// expressly written permission by Ritual Entertainment, Inc. +// +// +// DESCRIPTION: +// CooridorCombatWithRangedWeapon Behavior Definition +// +//-------------------------------------------------------------------------------- + +//============================== +// Forward Declarations +//============================== +class CorridorCombatWithRangedWeapon; + +#ifndef __CORRIDORCOMBAT_WITH_RANGEDWEAPON_HPP__ +#define __CORRIDORCOMBAT_WITH_RANGEDWEAPON_HPP__ + +#include "behavior.h" +#include "behaviors_general.h" + +//------------------------- CLASS ------------------------------ +// +// Name: CooridorCombatWithRangedWeapon +// Base Class: Behavior +// +// Description: +// +// Method of Use: Called From State Machine +//-------------------------------------------------------------- +class CorridorCombatWithRangedWeapon : public Behavior { + public: + //------------------------------------ + // States + //------------------------------------ + typedef enum { + CORRIDORCOMBAT_WRW_FINDNODE, + CORRIDORCOMBAT_WRW_MOVETONODE, + CORRIDORCOMBAT_WRW_BACKPEDAL, + CORRIDORCOMBAT_WRW_FINDBETTERNODE, + CORRIDORCOMBAT_WRW_MOVETOBETTERNODE, + CORRIDORCOMBAT_WRW_CHANGEPOSTURE_DUCK, + CORRIDORCOMBAT_WRW_CHANGEPOSTURE_STAND, + CORRIDORCOMBAT_WRW_DUCKED, + CORRIDORCOMBAT_WRW_DUCKED_FIRING, + CORRIDORCOMBAT_WRW_STAND, + CORRIDORCOMBAT_WRW_STAND_FIRING, + CORRIDORCOMBAT_WRW_HOLD_POSITION, + CORRIDORCOMBAT_WRW_SUCCESS, + CORRIDORCOMBAT_WRW_FAILED + } corridorCombatStates_t; + + //------------------------------------- + // Public Interface + //------------------------------------- + CLASS_PROTOTYPE(CorridorCombatWithRangedWeapon); + + CorridorCombatWithRangedWeapon(); + ~CorridorCombatWithRangedWeapon(); + + void SetArgs(Event* ev); + void AnimDone(Event* ev); + void PostureDone(Event* ev); + + void Begin(Actor& self); + BehaviorReturnCode_t Evaluate(Actor& self); + void End(Actor& self); + + + void SetMovementAnim(const str& movementAnim) { _movementAnim = movementAnim; } + const str& GetMovementAnim() { return _movementAnim; } + + void SetTorsoAnim(const str& torsoAnim) { _torsoAnim = torsoAnim; } + const str& GetTorsoAnim() { return _torsoAnim; } + + void SetFireAnim(const str& fireAnim) { _fireAnim = fireAnim; } + const str& GetFireAnim() { return _fireAnim; } + + void SetPreFireAnim(const str& preFireAnim) { _preFireAnim = preFireAnim; } + const str& GetPreFireAnim() { return _preFireAnim; } + + void SetPostFireAnim(const str& postFireAnim) { _postFireAnim = postFireAnim; } + const str& GetPostFireAnim() { return _postFireAnim; } + + void SetPostureChangeChance(float chance) { _postureChangeChance = chance; } + float GetPostureChangeChance() { return _postureChangeChance; } + + void SetMaxDistance(float maxDistance) { _maxDistance = maxDistance; } + float GetMaxDistance() { return _maxDistance; } + + void SetRetreatDistance(float retreatDistance) { _retreatDistance = retreatDistance; } + float GetRetreatDistance() { return _retreatDistance; } + + void SetThreatDistance(float threatDistance) { _threatDistance = threatDistance; } + float GetThreatDistance() { return _threatDistance; } + + void SetFireTimeMin(float fireTimeMin) { _fireTimeMin = fireTimeMin; } + float GetFireTimeMin() { return _fireTimeMin; } + + void SetFireTimeMax(float fireTimeMax) { _fireTimeMax = fireTimeMax; } + float GetFireTimeMax() { return _fireTimeMax; } + + void SetPauseTimeMin(float pauseTimeMin) { _pauseTimeMin = pauseTimeMin; } + float GetPauseTimeMin() { return _pauseTimeMin; } + + void SetPauseTimeMax(float pauseTimeMax) { _pauseTimeMax = pauseTimeMax; } + float GetPauseTimeMax() { return _pauseTimeMax; } + + virtual void Archive(Archiver& arc); + + static bool CanExecute(float maxDistance, Actor& self); + + protected: + //------------------------------------- + // Internal Functionality + //------------------------------------- + void transitionToState(corridorCombatStates_t state); + void setInternalState(corridorCombatStates_t state, const str &stateName); + void init(Actor &self); + void think(); + void updateEnemy(); + void setTorsoAnim(); + + bool checkShouldDuck(); + bool checkShouldStand(); + bool checkShouldRetreat(); + + void setupRotate(); + BehaviorReturnCode_t evaluateRotate(); + + void setupStateFindNode(); + BehaviorReturnCode_t evaluateStateFindNode(); + void failureStateFindNode(const str& failureReason); + + void setupStateMoveToNode(); + BehaviorReturnCode_t evaluateStateMoveToNode(); + void failureStateMoveToNode(const str& failureReason); + + void setupStateBackPedal(); + BehaviorReturnCode_t evaluateStateBackPedal(); + void failureStateBackPedal(const str& failureReason); + + void setupStateFindBetterNode(); + BehaviorReturnCode_t evaluateStateFindBetterNode(); + void failureStateFindBetterNode(const str& failureReason); + + void setupStateMoveToBetterNode(); + BehaviorReturnCode_t evaluateStateMoveToBetterNode(); + void failureStateMoveToBetterNode(const str& failureReason); + + void setupStateChangePostureDuck(); + BehaviorReturnCode_t evaluateStateChangePostureDuck(); + void failureStateChangePostureDuck(const str& failureReason); + + void setupStateChangePostureStand(); + BehaviorReturnCode_t evaluateStateChangePostureStand(); + void failureStateChangePostureStand(const str& failureReason); + + void setupStateDucked(); + BehaviorReturnCode_t evaluateStateDucked(); + void failureStateDucked(const str& failureReason); + + void setupStateFireDucked(); + BehaviorReturnCode_t evaluateStateFireDucked(); + void failureStateFireDucked(const str& failureReason); + + void setupStateFirePauseDucked(); + BehaviorReturnCode_t evaluateStateFirePauseDucked(); + void failureStateFirePauseDucked(const str& failureReason); + + void setupStateStanding(); + BehaviorReturnCode_t evaluateStateStanding(); + void failureStateStanding(const str& failureReason); + + void setupStateFireStanding(); + BehaviorReturnCode_t evaluateStateFireStanding(); + void failureStateFireStanding(const str& failureReason); + + void setupStateFirePauseStanding(); + BehaviorReturnCode_t evaluateStateFirePauseStanding(); + void failureStateFirePauseStanding(const str& failureReason); + + void setupStateHoldPosition(); + BehaviorReturnCode_t evaluateStateHoldPosition(); + void failureStateHoldPosition(const str& failureReason); + + private: + //------------------------------------ + // Parameters + //------------------------------------ + str _movementAnim; + str _torsoAnim; + str _fireAnim; + str _preFireAnim; + str _postFireAnim; + float _postureChangeChance; + float _maxDistance; + float _retreatDistance; + float _threatDistance; + float _fireTimeMin; + float _fireTimeMax; + float _pauseTimeMin; + float _pauseTimeMax; + + //------------------------------------- + // Components + //------------------------------------- + GotoPoint _gotoPoint; + FireWeapon _fireWeapon; + MoveRandomDirection _moveRandomDir; + RotateToEntity _rotate; + + + //------------------------------------- + // Member Variables + //------------------------------------- + corridorCombatStates_t _state; + HelperNodePtr _node; + Actor* _self; + EntityPtr _currentEnemy; + bool _finishedPostureTransition; + float _nextFireTime; + float _nextPauseTime; + float _holdPositionTime; + float _enemyUpdateTime; + + static const float NODE_RADIUS; +}; + + +inline void CorridorCombatWithRangedWeapon::Archive(Archiver& arc) { + Behavior::Archive(arc); + + // + // Archive Parameters + // + arc.ArchiveString(&_movementAnim); + arc.ArchiveString(&_torsoAnim); + arc.ArchiveString(&_fireAnim); + arc.ArchiveString(&_preFireAnim); + arc.ArchiveString(&_postFireAnim); + arc.ArchiveFloat(&_postureChangeChance); + arc.ArchiveFloat(&_maxDistance); + arc.ArchiveFloat(&_retreatDistance); + arc.ArchiveFloat(&_threatDistance); + arc.ArchiveFloat(&_fireTimeMin); + arc.ArchiveFloat(&_fireTimeMax); + arc.ArchiveFloat(&_pauseTimeMin); + arc.ArchiveFloat(&_pauseTimeMax); + + + // + // Archive Components + // + arc.ArchiveObject(&_gotoPoint); + arc.ArchiveObject(&_fireWeapon); + arc.ArchiveObject(&_moveRandomDir); + arc.ArchiveObject(&_rotate); + + // + // Archive Member Variables + // + ArchiveEnum(_state, corridorCombatStates_t); + arc.ArchiveSafePointer(&_node); + arc.ArchiveObjectPointer((Class **)&_self); + arc.ArchiveSafePointer(&_currentEnemy); + arc.ArchiveBool(&_finishedPostureTransition); + arc.ArchiveFloat(&_nextFireTime); + arc.ArchiveFloat(&_nextPauseTime); + arc.ArchiveFloat(&_holdPositionTime); + arc.ArchiveFloat(&_enemyUpdateTime); + +} + + +#endif /* __CORRIDORCOMBAT_WITH_RANGEDWEAPON_HPP__ */