//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: TF-specific things to vote on // //============================================================================= #ifndef TF_VOTEISSUES_H #define TF_VOTEISSUES_H #ifdef _WIN32 #pragma once #endif #include "vote_controller.h" class CTFPlayer; //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- class CBaseTFIssue : public CBaseIssue { // Overrides to BaseIssue standard to this mod. public: CBaseTFIssue(const char *typeString) : CBaseIssue(typeString) { } }; //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- class CRestartGameIssue : public CBaseTFIssue { public: CRestartGameIssue() : CBaseTFIssue( "RestartGame" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_RestartGame") virtual void ExecuteCommand( void ) OVERRIDE; virtual bool IsEnabled( void ) OVERRIDE; virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE; virtual const char *GetDisplayString( void ) OVERRIDE; virtual void ListIssueDetails( CBasePlayer *forWhom ) OVERRIDE; virtual const char *GetVotePassedString( void ) OVERRIDE; }; //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- class CKickIssue : public CBaseTFIssue { public: CKickIssue() : CBaseTFIssue( "Kick" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_Kick") virtual void ExecuteCommand( void ) OVERRIDE; virtual bool IsEnabled( void ) OVERRIDE; virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE; virtual const char *GetDisplayString( void ) OVERRIDE; virtual void ListIssueDetails( CBasePlayer *pForWhom ) OVERRIDE; virtual const char *GetVotePassedString( void ) OVERRIDE; virtual bool IsTeamRestrictedVote( void ) OVERRIDE { return true; } virtual void OnVoteFailed( int iEntityHoldingVote ) OVERRIDE; virtual void OnVoteStarted( void ) OVERRIDE; virtual const char *GetDetailsString( void ) OVERRIDE; virtual bool NeedsPermissionFromGC( void ) OVERRIDE; private: void Init( void ); bool CreateVoteDataFromDetails( const char *pszDetails ); void NotifyGCAdHocKick( bool bKickedSuccessfully ); void PrintLogData( void ); CSteamID m_steamIDVoteCaller; CSteamID m_steamIDVoteTarget; char m_szTargetPlayerName[MAX_PLAYER_NAME_LENGTH]; uint32 m_unKickReason; }; //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- class CChangeLevelIssue : public CBaseTFIssue { public: CChangeLevelIssue() : CBaseTFIssue( "ChangeLevel" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_ChangeLevel") virtual void ExecuteCommand( void ) OVERRIDE; virtual bool IsEnabled( void ) OVERRIDE; virtual bool CanTeamCallVote( int iTeam ) const OVERRIDE; virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE; virtual const char *GetDisplayString( void ) OVERRIDE; virtual void ListIssueDetails( CBasePlayer *pForWhom ) OVERRIDE; virtual const char *GetVotePassedString( void ) OVERRIDE; virtual const char *GetDetailsString( void ) OVERRIDE; virtual bool IsYesNoVote( void ) OVERRIDE; }; //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- class CNextLevelIssue : public CBaseTFIssue { public: CNextLevelIssue() : CBaseTFIssue( "NextLevel" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_NextLevel") virtual void ExecuteCommand( void ) OVERRIDE; virtual bool IsEnabled( void ) OVERRIDE; virtual bool CanTeamCallVote( int iTeam ) const OVERRIDE; virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE; virtual const char *GetDisplayString( void ) OVERRIDE; virtual void ListIssueDetails( CBasePlayer *pForWhom ) OVERRIDE; virtual const char *GetVotePassedString( void ) OVERRIDE; virtual const char *GetDetailsString( void ) OVERRIDE; virtual bool IsYesNoVote( void ) OVERRIDE; virtual int GetNumberVoteOptions( void ) OVERRIDE; virtual bool GetVoteOptions( CUtlVector &vecNames ) OVERRIDE; virtual float GetQuorumRatio( void ) OVERRIDE; private: CUtlVector m_IssueOptions; }; //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- class CExtendLevelIssue : public CBaseTFIssue { public: CExtendLevelIssue() : CBaseTFIssue( "ExtendLevel" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_ExtendLevel") virtual void ExecuteCommand( void ) OVERRIDE; virtual bool IsEnabled( void ) OVERRIDE; virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE; virtual const char *GetDisplayString( void ) OVERRIDE; virtual void ListIssueDetails( CBasePlayer *pForWhom ) OVERRIDE; virtual const char *GetVotePassedString( void ) OVERRIDE; virtual float GetQuorumRatio( void ) OVERRIDE; }; //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- class CScrambleTeams : public CBaseTFIssue { public: CScrambleTeams() : CBaseTFIssue( "ScrambleTeams" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_ScrambleTeams") virtual void ExecuteCommand( void ) OVERRIDE; virtual bool IsEnabled( void ) OVERRIDE; virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE; virtual const char *GetDisplayString( void ) OVERRIDE; virtual void ListIssueDetails( CBasePlayer *pForWhom ) OVERRIDE; virtual const char *GetVotePassedString( void ) OVERRIDE; }; //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- class CMannVsMachineChangeChallengeIssue : public CBaseTFIssue { public: CMannVsMachineChangeChallengeIssue() : CBaseTFIssue( "ChangeMission" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_ChangeMission") virtual void ExecuteCommand( void ) OVERRIDE; virtual bool IsEnabled( void ) OVERRIDE; virtual bool CanTeamCallVote( int iTeam ) const OVERRIDE; virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE; virtual const char *GetDisplayString( void ) OVERRIDE; virtual void ListIssueDetails( CBasePlayer *pForWhom ) OVERRIDE; virtual const char *GetVotePassedString( void ) OVERRIDE; virtual const char *GetDetailsString( void ) OVERRIDE; virtual bool IsYesNoVote( void ) OVERRIDE; virtual int GetNumberVoteOptions( void ) OVERRIDE; private: CUtlVector m_IssueOptions; }; //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- class CEnableTemporaryHalloweenIssue : public CBaseTFIssue { public: CEnableTemporaryHalloweenIssue() : CBaseTFIssue( "Eternaween" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_Eternaween") virtual void ExecuteCommand( void ) OVERRIDE; virtual void OnVoteFailed( int iEntityHoldingVote ) OVERRIDE; virtual bool IsYesNoVote( void ) OVERRIDE { return true; } virtual bool IsEnabled( void ) OVERRIDE { return false; } // we'll manually set up this vote when an item gets used virtual const char *GetDisplayString( void ) OVERRIDE { return "#TF_vote_eternaween"; } virtual const char *GetVotePassedString( void ) OVERRIDE { return "#TF_vote_passed_eternaween"; } virtual bool BRecordVoteFailureEventForEntity( int iVoteCallingEntityIndex ) const OVERRIDE { return true; } virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE; virtual void ListIssueDetails( CBasePlayer *forWhom ) OVERRIDE; }; //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- class CTeamAutoBalanceIssue : public CBaseTFIssue { public: CTeamAutoBalanceIssue() : CBaseTFIssue( "TeamAutoBalance" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_TeamAutoBalance") virtual const char *GetTypeStringLocalized( void ) OVERRIDE; virtual void ExecuteCommand( void ) OVERRIDE; virtual bool IsEnabled( void ) OVERRIDE; virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE; virtual const char *GetDisplayString( void ) OVERRIDE; virtual void ListIssueDetails( CBasePlayer *forWhom ) OVERRIDE; virtual const char *GetVotePassedString( void ) OVERRIDE; virtual float GetQuorumRatio( void ) OVERRIDE; }; //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- class CClassLimitsIssue : public CBaseTFIssue { public: CClassLimitsIssue() : CBaseTFIssue( "ClassLimits" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_ClassLimits") virtual const char *GetTypeStringLocalized( void ) OVERRIDE; virtual void ExecuteCommand( void ) OVERRIDE; virtual bool IsEnabled( void ) OVERRIDE; virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE; virtual const char *GetDisplayString( void ) OVERRIDE; virtual void ListIssueDetails( CBasePlayer *forWhom ) OVERRIDE; virtual const char *GetVotePassedString( void ) OVERRIDE; virtual const char *GetDetailsString( void ) OVERRIDE; private: CUtlString m_sRetString; }; //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- class CPauseGameIssue : public CBaseTFIssue { public: CPauseGameIssue() : CBaseTFIssue( "PauseGame" ) {} // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_PauseGame") virtual void ExecuteCommand( void ) OVERRIDE; virtual bool IsEnabled( void ) OVERRIDE; virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE; virtual const char *GetDisplayString( void ) OVERRIDE; virtual void ListIssueDetails( CBasePlayer *forWhom ) OVERRIDE; virtual const char *GetVotePassedString( void ) OVERRIDE; virtual const char *GetDetailsString( void ) OVERRIDE; private: CUtlString m_sRetString; }; static const char* g_pszVoteKickString = "#TF_Vote_kicked"; #endif // TF_VOTEISSUES_H