Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

260 lines
11 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose: TF-specific things to vote on
  4. //
  5. //=============================================================================
  6. #ifndef TF_VOTEISSUES_H
  7. #define TF_VOTEISSUES_H
  8. #ifdef _WIN32
  9. #pragma once
  10. #endif
  11. #include "vote_controller.h"
  12. class CTFPlayer;
  13. //-----------------------------------------------------------------------------
  14. // Purpose:
  15. //-----------------------------------------------------------------------------
  16. class CBaseTFIssue : public CBaseIssue
  17. {
  18. // Overrides to BaseIssue standard to this mod.
  19. public:
  20. CBaseTFIssue(const char *typeString) : CBaseIssue(typeString)
  21. {
  22. }
  23. };
  24. //-----------------------------------------------------------------------------
  25. // Purpose:
  26. //-----------------------------------------------------------------------------
  27. class CRestartGameIssue : public CBaseTFIssue
  28. {
  29. public:
  30. CRestartGameIssue() : CBaseTFIssue( "RestartGame" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_RestartGame")
  31. virtual void ExecuteCommand( void ) OVERRIDE;
  32. virtual bool IsEnabled( void ) OVERRIDE;
  33. virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE;
  34. virtual const char *GetDisplayString( void ) OVERRIDE;
  35. virtual void ListIssueDetails( CBasePlayer *forWhom ) OVERRIDE;
  36. virtual const char *GetVotePassedString( void ) OVERRIDE;
  37. };
  38. //-----------------------------------------------------------------------------
  39. // Purpose:
  40. //-----------------------------------------------------------------------------
  41. class CKickIssue : public CBaseTFIssue
  42. {
  43. public:
  44. CKickIssue() : CBaseTFIssue( "Kick" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_Kick")
  45. virtual void ExecuteCommand( void ) OVERRIDE;
  46. virtual bool IsEnabled( void ) OVERRIDE;
  47. virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE;
  48. virtual const char *GetDisplayString( void ) OVERRIDE;
  49. virtual void ListIssueDetails( CBasePlayer *pForWhom ) OVERRIDE;
  50. virtual const char *GetVotePassedString( void ) OVERRIDE;
  51. virtual bool IsTeamRestrictedVote( void ) OVERRIDE { return true; }
  52. virtual void OnVoteFailed( int iEntityHoldingVote ) OVERRIDE;
  53. virtual void OnVoteStarted( void ) OVERRIDE;
  54. virtual const char *GetDetailsString( void ) OVERRIDE;
  55. virtual bool NeedsPermissionFromGC( void ) OVERRIDE;
  56. private:
  57. void Init( void );
  58. bool CreateVoteDataFromDetails( const char *pszDetails );
  59. void NotifyGCAdHocKick( bool bKickedSuccessfully );
  60. void PrintLogData( void );
  61. CSteamID m_steamIDVoteCaller;
  62. CSteamID m_steamIDVoteTarget;
  63. char m_szTargetPlayerName[MAX_PLAYER_NAME_LENGTH];
  64. uint32 m_unKickReason;
  65. };
  66. //-----------------------------------------------------------------------------
  67. // Purpose:
  68. //-----------------------------------------------------------------------------
  69. class CChangeLevelIssue : public CBaseTFIssue
  70. {
  71. public:
  72. CChangeLevelIssue() : CBaseTFIssue( "ChangeLevel" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_ChangeLevel")
  73. virtual void ExecuteCommand( void ) OVERRIDE;
  74. virtual bool IsEnabled( void ) OVERRIDE;
  75. virtual bool CanTeamCallVote( int iTeam ) const OVERRIDE;
  76. virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE;
  77. virtual const char *GetDisplayString( void ) OVERRIDE;
  78. virtual void ListIssueDetails( CBasePlayer *pForWhom ) OVERRIDE;
  79. virtual const char *GetVotePassedString( void ) OVERRIDE;
  80. virtual const char *GetDetailsString( void ) OVERRIDE;
  81. virtual bool IsYesNoVote( void ) OVERRIDE;
  82. };
  83. //-----------------------------------------------------------------------------
  84. // Purpose:
  85. //-----------------------------------------------------------------------------
  86. class CNextLevelIssue : public CBaseTFIssue
  87. {
  88. public:
  89. CNextLevelIssue() : CBaseTFIssue( "NextLevel" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_NextLevel")
  90. virtual void ExecuteCommand( void ) OVERRIDE;
  91. virtual bool IsEnabled( void ) OVERRIDE;
  92. virtual bool CanTeamCallVote( int iTeam ) const OVERRIDE;
  93. virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE;
  94. virtual const char *GetDisplayString( void ) OVERRIDE;
  95. virtual void ListIssueDetails( CBasePlayer *pForWhom ) OVERRIDE;
  96. virtual const char *GetVotePassedString( void ) OVERRIDE;
  97. virtual const char *GetDetailsString( void ) OVERRIDE;
  98. virtual bool IsYesNoVote( void ) OVERRIDE;
  99. virtual int GetNumberVoteOptions( void ) OVERRIDE;
  100. virtual bool GetVoteOptions( CUtlVector <const char*> &vecNames ) OVERRIDE;
  101. virtual float GetQuorumRatio( void ) OVERRIDE;
  102. private:
  103. CUtlVector <const char *> m_IssueOptions;
  104. };
  105. //-----------------------------------------------------------------------------
  106. // Purpose:
  107. //-----------------------------------------------------------------------------
  108. class CExtendLevelIssue : public CBaseTFIssue
  109. {
  110. public:
  111. CExtendLevelIssue() : CBaseTFIssue( "ExtendLevel" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_ExtendLevel")
  112. virtual void ExecuteCommand( void ) OVERRIDE;
  113. virtual bool IsEnabled( void ) OVERRIDE;
  114. virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE;
  115. virtual const char *GetDisplayString( void ) OVERRIDE;
  116. virtual void ListIssueDetails( CBasePlayer *pForWhom ) OVERRIDE;
  117. virtual const char *GetVotePassedString( void ) OVERRIDE;
  118. virtual float GetQuorumRatio( void ) OVERRIDE;
  119. };
  120. //-----------------------------------------------------------------------------
  121. // Purpose:
  122. //-----------------------------------------------------------------------------
  123. class CScrambleTeams : public CBaseTFIssue
  124. {
  125. public:
  126. CScrambleTeams() : CBaseTFIssue( "ScrambleTeams" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_ScrambleTeams")
  127. virtual void ExecuteCommand( void ) OVERRIDE;
  128. virtual bool IsEnabled( void ) OVERRIDE;
  129. virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE;
  130. virtual const char *GetDisplayString( void ) OVERRIDE;
  131. virtual void ListIssueDetails( CBasePlayer *pForWhom ) OVERRIDE;
  132. virtual const char *GetVotePassedString( void ) OVERRIDE;
  133. };
  134. //-----------------------------------------------------------------------------
  135. // Purpose:
  136. //-----------------------------------------------------------------------------
  137. class CMannVsMachineChangeChallengeIssue : public CBaseTFIssue
  138. {
  139. public:
  140. CMannVsMachineChangeChallengeIssue() : CBaseTFIssue( "ChangeMission" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_ChangeMission")
  141. virtual void ExecuteCommand( void ) OVERRIDE;
  142. virtual bool IsEnabled( void ) OVERRIDE;
  143. virtual bool CanTeamCallVote( int iTeam ) const OVERRIDE;
  144. virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE;
  145. virtual const char *GetDisplayString( void ) OVERRIDE;
  146. virtual void ListIssueDetails( CBasePlayer *pForWhom ) OVERRIDE;
  147. virtual const char *GetVotePassedString( void ) OVERRIDE;
  148. virtual const char *GetDetailsString( void ) OVERRIDE;
  149. virtual bool IsYesNoVote( void ) OVERRIDE;
  150. virtual int GetNumberVoteOptions( void ) OVERRIDE;
  151. private:
  152. CUtlVector <const char *> m_IssueOptions;
  153. };
  154. //-----------------------------------------------------------------------------
  155. // Purpose:
  156. //-----------------------------------------------------------------------------
  157. class CEnableTemporaryHalloweenIssue : public CBaseTFIssue
  158. {
  159. public:
  160. CEnableTemporaryHalloweenIssue() : CBaseTFIssue( "Eternaween" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_Eternaween")
  161. virtual void ExecuteCommand( void ) OVERRIDE;
  162. virtual void OnVoteFailed( int iEntityHoldingVote ) OVERRIDE;
  163. virtual bool IsYesNoVote( void ) OVERRIDE { return true; }
  164. virtual bool IsEnabled( void ) OVERRIDE { return false; } // we'll manually set up this vote when an item gets used
  165. virtual const char *GetDisplayString( void ) OVERRIDE { return "#TF_vote_eternaween"; }
  166. virtual const char *GetVotePassedString( void ) OVERRIDE { return "#TF_vote_passed_eternaween"; }
  167. virtual bool BRecordVoteFailureEventForEntity( int iVoteCallingEntityIndex ) const OVERRIDE { return true; }
  168. virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE;
  169. virtual void ListIssueDetails( CBasePlayer *forWhom ) OVERRIDE;
  170. };
  171. //-----------------------------------------------------------------------------
  172. // Purpose:
  173. //-----------------------------------------------------------------------------
  174. class CTeamAutoBalanceIssue : public CBaseTFIssue
  175. {
  176. public:
  177. CTeamAutoBalanceIssue() : CBaseTFIssue( "TeamAutoBalance" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_TeamAutoBalance")
  178. virtual const char *GetTypeStringLocalized( void ) OVERRIDE;
  179. virtual void ExecuteCommand( void ) OVERRIDE;
  180. virtual bool IsEnabled( void ) OVERRIDE;
  181. virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE;
  182. virtual const char *GetDisplayString( void ) OVERRIDE;
  183. virtual void ListIssueDetails( CBasePlayer *forWhom ) OVERRIDE;
  184. virtual const char *GetVotePassedString( void ) OVERRIDE;
  185. virtual float GetQuorumRatio( void ) OVERRIDE;
  186. };
  187. //-----------------------------------------------------------------------------
  188. // Purpose:
  189. //-----------------------------------------------------------------------------
  190. class CClassLimitsIssue : public CBaseTFIssue
  191. {
  192. public:
  193. CClassLimitsIssue() : CBaseTFIssue( "ClassLimits" ) { } // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_ClassLimits")
  194. virtual const char *GetTypeStringLocalized( void ) OVERRIDE;
  195. virtual void ExecuteCommand( void ) OVERRIDE;
  196. virtual bool IsEnabled( void ) OVERRIDE;
  197. virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE;
  198. virtual const char *GetDisplayString( void ) OVERRIDE;
  199. virtual void ListIssueDetails( CBasePlayer *forWhom ) OVERRIDE;
  200. virtual const char *GetVotePassedString( void ) OVERRIDE;
  201. virtual const char *GetDetailsString( void ) OVERRIDE;
  202. private:
  203. CUtlString m_sRetString;
  204. };
  205. //-----------------------------------------------------------------------------
  206. // Purpose:
  207. //-----------------------------------------------------------------------------
  208. class CPauseGameIssue : public CBaseTFIssue
  209. {
  210. public:
  211. CPauseGameIssue() : CBaseTFIssue( "PauseGame" ) {} // This string will have "Vote_" glued onto the front for localization (i.e. "#Vote_PauseGame")
  212. virtual void ExecuteCommand( void ) OVERRIDE;
  213. virtual bool IsEnabled( void ) OVERRIDE;
  214. virtual bool CanCallVote( int iEntIndex, const char *pszDetails, vote_create_failed_t &nFailCode, int &nTime ) OVERRIDE;
  215. virtual const char *GetDisplayString( void ) OVERRIDE;
  216. virtual void ListIssueDetails( CBasePlayer *forWhom ) OVERRIDE;
  217. virtual const char *GetVotePassedString( void ) OVERRIDE;
  218. virtual const char *GetDetailsString( void ) OVERRIDE;
  219. private:
  220. CUtlString m_sRetString;
  221. };
  222. static const char* g_pszVoteKickString = "#TF_Vote_kicked";
  223. #endif // TF_VOTEISSUES_H