From f73ad0309c9eee1cd603d1d7e3f6906e2e62e3da Mon Sep 17 00:00:00 2001 From: hlstriker Date: Tue, 3 Dec 2013 21:10:25 +0000 Subject: [PATCH] - Fixed info_ff_goal not staying active if active_time was set to -1. - Fixed info_ff_goal being rendered while disabled. --- .../shared/ff/entities/ff_sh_base_ff_goal.cpp | 7 ++++- .../shared/ff/entities/ff_sh_base_ff_goal.h | 11 ++++---- .../shared/ff/entities/ff_sh_info_ff_goal.cpp | 26 ++++++++++++++++++- .../shared/ff/entities/ff_sh_info_ff_goal.h | 6 +++++ 4 files changed, 43 insertions(+), 7 deletions(-) diff --git a/mp/src/game/shared/ff/entities/ff_sh_base_ff_goal.cpp b/mp/src/game/shared/ff/entities/ff_sh_base_ff_goal.cpp index 26d70d26..9fe152de 100644 --- a/mp/src/game/shared/ff/entities/ff_sh_base_ff_goal.cpp +++ b/mp/src/game/shared/ff/entities/ff_sh_base_ff_goal.cpp @@ -362,7 +362,12 @@ void CFF_SH_BaseFFGoal::ActivateGoal() } // Start the deactivate timer. - if( m_fActiveTime ) + if( m_fActiveTime < 0.0f ) + { + // If they set the active_time to -1 we don't deactivate. + SetThink( NULL ); + } + else if( m_fActiveTime ) { SetThink( &CFF_SH_BaseFFGoal::DeactivateGoal ); SetNextThink( gpGlobals->curtime + m_fActiveTime ); diff --git a/mp/src/game/shared/ff/entities/ff_sh_base_ff_goal.h b/mp/src/game/shared/ff/entities/ff_sh_base_ff_goal.h index 09e9927b..11240430 100644 --- a/mp/src/game/shared/ff/entities/ff_sh_base_ff_goal.h +++ b/mp/src/game/shared/ff/entities/ff_sh_base_ff_goal.h @@ -96,17 +96,18 @@ private: CUtlVector> m_Criteria_GoalsAreDisabled; #ifdef GAME_DLL -private: - void Input_Enable( inputdata_t &inputdata ); - void Input_Disable( inputdata_t &inputdata ); - void Input_Activate( inputdata_t &inputdata ); - void Input_Inactivate( inputdata_t &inputdata ); +protected: + virtual void Input_Enable( inputdata_t &inputdata ); + virtual void Input_Disable( inputdata_t &inputdata ); + void Input_Activate( inputdata_t &inputdata ); + void Input_Inactivate( inputdata_t &inputdata ); COutputEvent m_Output_OnEnabled; COutputEvent m_Output_OnDisabled; COutputEvent m_Output_OnActive; COutputEvent m_Output_OnInactive; +private: string_t m_iszActivationSound; string_t m_iszResetSound; diff --git a/mp/src/game/shared/ff/entities/ff_sh_info_ff_goal.cpp b/mp/src/game/shared/ff/entities/ff_sh_info_ff_goal.cpp index 47548a11..d1ae95ef 100644 --- a/mp/src/game/shared/ff/entities/ff_sh_info_ff_goal.cpp +++ b/mp/src/game/shared/ff/entities/ff_sh_info_ff_goal.cpp @@ -46,6 +46,14 @@ void CFF_SH_InfoFFGoal::Spawn() } #ifdef GAME_DLL +void CFF_SH_InfoFFGoal::Activate() +{ + BaseClass::Activate(); + + if( !IsGoalEnabled() ) + AddEffects( EF_NODRAW ); +} + void CFF_SH_InfoFFGoal::OnTouching( CBaseEntity *pOther ) { BaseClass::OnTouching( pOther ); @@ -59,7 +67,23 @@ void CFF_SH_InfoFFGoal::ActivateGoal() void CFF_SH_InfoFFGoal::DeactivateGoal() { - RemoveEffects( EF_NODRAW ); + if( IsGoalEnabled() ) + RemoveEffects( EF_NODRAW ); + BaseClass::DeactivateGoal(); } + +void CFF_SH_InfoFFGoal::Input_Enable( inputdata_t &inputdata ) +{ + BaseClass::Input_Enable( inputdata ); + + if( !IsGoalActivated() ) + RemoveEffects( EF_NODRAW ); +} + +void CFF_SH_InfoFFGoal::Input_Disable( inputdata_t &inputdata ) +{ + BaseClass::Input_Disable( inputdata ); + AddEffects( EF_NODRAW ); +} #endif diff --git a/mp/src/game/shared/ff/entities/ff_sh_info_ff_goal.h b/mp/src/game/shared/ff/entities/ff_sh_info_ff_goal.h index 2f0d4deb..d6ddd874 100644 --- a/mp/src/game/shared/ff/entities/ff_sh_info_ff_goal.h +++ b/mp/src/game/shared/ff/entities/ff_sh_info_ff_goal.h @@ -34,6 +34,8 @@ public: virtual void Spawn( void ); #ifdef GAME_DLL + virtual void Activate( void ); + virtual void OnTouching( CBaseEntity *pOther ); virtual void ActivateGoal( void ); virtual void DeactivateGoal( void ); @@ -44,6 +46,10 @@ public: // We don't set this in the base_goal because so many other entities are derived from it. return SetTransmitState( FL_EDICT_ALWAYS ); } + +protected: + virtual void Input_Enable( inputdata_t &inputdata ); + virtual void Input_Disable( inputdata_t &inputdata ); #endif };