summaryrefslogtreecommitdiff
path: root/game/shared/tf/tf_logic_halloween_2014.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/shared/tf/tf_logic_halloween_2014.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'game/shared/tf/tf_logic_halloween_2014.h')
-rw-r--r--game/shared/tf/tf_logic_halloween_2014.h286
1 files changed, 286 insertions, 0 deletions
diff --git a/game/shared/tf/tf_logic_halloween_2014.h b/game/shared/tf/tf_logic_halloween_2014.h
new file mode 100644
index 0000000..e40ffab
--- /dev/null
+++ b/game/shared/tf/tf_logic_halloween_2014.h
@@ -0,0 +1,286 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Entities for use in the Robot Destruction TF2 game mode.
+//
+//=========================================================================//
+#ifndef TF_LOGIC_HALLOWEEN_2014_H
+#define TF_LOGIC_HALLOWEEN_2014_H
+
+#include "cbase.h"
+#include "tf_shareddefs.h"
+#ifdef GAME_DLL
+ #include "tf_player.h"
+#else
+ #include "c_tf_player.h"
+#endif
+
+
+#ifdef CLIENT_DLL
+ #define CTFMinigameLogic C_TFMinigameLogic
+ #define CTFMiniGame C_TFMiniGame
+ #define CTFHalloweenMinigame C_TFHalloweenMinigame
+ #define CTFHalloweenMinigame_FallingPlatforms C_TFHalloweenMinigame_FallingPlatforms
+#endif
+
+#define MINIGAME_INVALID -1
+
+DECLARE_AUTO_LIST( IMinigameAutoList );
+
+class CTFMiniGame : public CBaseEntity
+#ifdef GAME_DLL
+ , public CGameEventListener
+#endif
+ , public IMinigameAutoList
+{
+public:
+ enum EScoringType
+ {
+ SCORING_TYPE_POINTS = 0,
+ SCORING_TYPE_PLAYERS_ALIVE,
+
+ NUM_SCORING_TYPES
+ };
+
+ enum EMinigameType
+ {
+ MINIGAME_GENERIC = 0,
+ MINIGAME_HALLOWEEN2014_COLLECTION,
+ MINIGAME_HALLOWEEN2014_PLATFORMS,
+ MINIGAME_HALLOWEEN2014_SOCCER,
+ // don't change the order of these first three types because the TF_HALLOWEEN_DOOMSDAY_WIN_MINIROUNDS achievement depends on it
+
+ NUM_MINIGAME_TYPES
+ };
+
+ DECLARE_CLASS( CTFMiniGame, CBaseEntity )
+ DECLARE_NETWORKCLASS();
+
+#ifdef GAME_DLL
+ DECLARE_DATADESC();
+#endif
+
+ CTFMiniGame();
+
+#ifdef GAME_DLL
+ virtual void Spawn() OVERRIDE;
+ virtual void Precache() OVERRIDE;
+ virtual void FireGameEvent( IGameEvent * event ) OVERRIDE;
+ virtual int UpdateTransmitState() OVERRIDE { return SetTransmitState( FL_EDICT_ALWAYS ); }
+
+ void InputScoreTeamRed( inputdata_t &inputdata );
+ void InputScoreTeamBlue( inputdata_t &inputdata );
+ void InputChangeHudResFile( inputdata_t &inputdata );
+
+ virtual void ScorePointsForTeam( int nTeamNum, int nPoints );
+ virtual void TeleportAllPlayers();
+ virtual void OnTeleportPlayerToMinigame( CTFPlayer *pPlayer );
+ virtual void ReturnAllPlayers();
+ const char *GetTeamSpawnPointName( int nTeamNum ) const;
+ const bool AllowedInRandom() const { return m_bMinigameAllowedInRamdomPool; }
+ virtual void UpdateDeadPlayers( int nTeam, COutputEvent& eventWin, COutputEvent& eventAllDead, bool& bCanWin );
+ EMinigameType GetMinigameType() const { return m_eMinigameType; }
+ void SetAdvantagedTeam ( int iAdvantageTeam ) { m_iAdvantagedTeam = iAdvantageTeam; }
+#else
+ const char *GetResFile() const { return m_pszHudResFile; }
+ int GetMaxScore( void ) const { return m_nMaxScoreForMiniGame; }
+ int GetScoreForTeam( int nTeamNum ) const;
+#endif
+
+protected:
+
+#ifdef GAME_DLL
+ virtual void InternalHandleInputScore( inputdata_t &inputdata ){}
+ virtual void SuddenDeathTimeStartThink();
+
+ COutputEvent m_OnRedHitMaxScore;
+ COutputEvent m_OnBlueHitMaxScore;
+ COutputEvent m_OnTeleportToMinigame;
+ COutputEvent m_OnReturnFromMinigame;
+ COutputEvent m_OnAllRedDead;
+ COutputEvent m_OnAllBlueDead;
+ COutputEvent m_OnSuddenDeathStart;
+
+ const char *m_pszTeamSpawnPoint[ TF_TEAM_COUNT ];
+ bool m_bMinigameAllowedInRamdomPool;
+ bool m_bIsActive;
+ string_t m_iszHudResFile;
+ EMinigameType m_eMinigameType;
+ string_t m_iszYourTeamScoreSound;
+ string_t m_iszEnemyTeamScoreSound;
+ float m_flSuddenDeathTime; // -1: No sudden death, 0: In sudden death, >0: Sudden death time.
+ int m_iAdvantagedTeam;
+#endif
+
+ CNetworkString( m_pszHudResFile, MAX_PATH );
+ CNetworkVar( int, m_nMaxScoreForMiniGame );
+ CNetworkArray( int, m_nMinigameTeamScore, TF_TEAM_COUNT );
+ CNetworkVar( EScoringType, m_eScoringType );
+};
+
+
+class CTFHalloweenMinigame : public CTFMiniGame
+{
+ DECLARE_CLASS( CTFHalloweenMinigame, CTFMiniGame )
+ DECLARE_NETWORKCLASS();
+public:
+
+#ifdef GAME_DLL
+ CTFHalloweenMinigame();
+
+ DECLARE_DATADESC();
+
+ virtual void Spawn() OVERRIDE;
+ virtual void FireGameEvent( IGameEvent * event ) OVERRIDE;
+
+ virtual void TeleportAllPlayers() OVERRIDE;
+ virtual void OnTeleportPlayerToMinigame( CTFPlayer *pPlayer ) OVERRIDE;
+ virtual void ReturnAllPlayers() OVERRIDE;
+
+ void InputKartWinAnimationRed( inputdata_t &inputdata );
+ void InputKartWinAnimationBlue( inputdata_t &inputdata );
+ void InputKartLoseAnimationRed( inputdata_t &inputdata );
+ void InputKartLoseAnimationBlue( inputdata_t &inputdata );
+
+ void InputEnableSpawnBoss( inputdata_t &inputdata );
+ void InputDisableSpawnBoss( inputdata_t &inputdata );
+
+protected:
+ virtual void InternalHandleInputScore( inputdata_t &inputdata ) OVERRIDE;
+
+private:
+
+ void TeleportAllPlayersThink();
+
+ EHANDLE m_hBossSpawnPoint;
+ EHANDLE m_hHalloweenBoss;
+#endif // GAME_DLL
+};
+
+class CTFHalloweenMinigame_FallingPlatforms : public CTFHalloweenMinigame
+{
+ DECLARE_CLASS( CTFHalloweenMinigame_FallingPlatforms, CTFHalloweenMinigame )
+ DECLARE_NETWORKCLASS();
+public:
+
+#ifdef GAME_DLL
+ CTFHalloweenMinigame_FallingPlatforms();
+
+ DECLARE_DATADESC();
+
+ void InputChoosePlatform( inputdata_t &inputdata );
+ virtual void FireGameEvent( IGameEvent * event ) OVERRIDE;
+
+ COutputInt m_OutputSafePlatform;
+ COutputInt m_OutputRemovePlatform;
+
+private:
+ CCopyableUtlVector< int > m_vecRemainingPlatforms;
+#endif
+};
+
+class CTFMinigameLogic : public CBaseEntity
+{
+ DECLARE_CLASS( CTFMinigameLogic, CBaseEntity )
+ DECLARE_NETWORKCLASS();
+public:
+ CTFMinigameLogic();
+ virtual ~CTFMinigameLogic();
+
+ static CTFMinigameLogic* GetMinigameLogic() { return m_sMinigameLogic; }
+ CTFMiniGame *GetActiveMinigame() const { return m_hActiveMinigame; }
+#ifdef GAME_DLL
+ DECLARE_DATADESC();
+ virtual int UpdateTransmitState() OVERRIDE { return SetTransmitState( FL_EDICT_ALWAYS ); }
+
+ void InputReturnFromMinigame( inputdata_t &inputdata );
+ void InputTeleportToMinigame( inputdata_t &inputdata );
+ void InputSetAdvantageTeam( inputdata_t &inputdata );
+ void InputTeleportToRandomMinigame( inputdata_t &inputdata );
+#endif
+
+protected:
+
+ static CTFMinigameLogic* m_sMinigameLogic;
+
+#ifdef GAME_DLL
+
+ virtual void TeleportToMinigame( int nMiniGameIndex );
+ virtual void ReturnFromMinigame();
+
+ int m_iAdvantagedTeam;
+
+#endif
+ CNetworkHandle( CTFMiniGame, m_hActiveMinigame );
+};
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+class CTFHalloweenFortuneTeller : public CBaseAnimating
+#ifdef GAME_DLL
+ , public CGameEventListener
+#endif
+{
+ DECLARE_CLASS( CTFHalloweenFortuneTeller, CBaseAnimating );
+ DECLARE_DATADESC();
+
+ enum ETellerType
+ {
+ TELLER_TYPE_EVERYBODY = 0,
+ TELLER_TYPE_PERSONAL,
+
+ NUM_TELLER_TYPES
+ };
+
+public:
+ CTFHalloweenFortuneTeller();
+ ~CTFHalloweenFortuneTeller();
+
+ virtual void Spawn() OVERRIDE;
+ virtual void UpdateOnRemove() OVERRIDE;
+
+#ifdef GAME_DLL
+ void InputEnableFortuneTelling( inputdata_t & );
+ void InputDisableFortuneTelling( inputdata_t & );
+ void InputStartFortuneTelling( inputdata_t & );
+ void InputEndFortuneTelling( inputdata_t & );
+#endif // GAME_DLL
+
+protected:
+ virtual void Precache() OVERRIDE;
+
+#ifdef GAME_DLL
+ void FireGameEvent( IGameEvent* pEvent );
+ void UpdateFortuneTellerTime();
+ void PauseTimer();
+ void ResetTimer();
+
+ void StartFortuneWarning();
+ void StartFortuneTell();
+ void EndFortuneTell();
+ void TellFortune();
+ void ApplyFortuneEffect();
+ void StopTalkingAnim();
+ void DanceThink();
+ void SpeakThink();
+#endif // GAME_DLL
+
+private:
+#ifdef GAME_DLL
+ COutputEvent m_OnFortuneWarning;
+ COutputEvent m_OnFortuneTold;
+ COutputEvent m_OnFortuneCurse;
+ COutputEvent m_OnFortuneEnd;
+ class CConditionFortuneTellerEffect* m_pActiveFortune;
+
+ string_t m_iszRedTeleport;
+ string_t m_iszBlueTeleport;
+
+ bool m_bUseTimer;
+ bool m_bWasUsingTimer;
+ float m_flStartTime;
+ float m_flPauseTime;
+#endif // GAME_DLL
+};
+
+#endif // TF_LOGIC_HALLOWEEN_2014 \ No newline at end of file