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.

129 lines
2.9 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. // $NoKeywords: $
  6. //=============================================================================//
  7. #ifndef DODCLASSMENU_H
  8. #define DODCLASSMENU_H
  9. #ifdef _WIN32
  10. #pragma once
  11. #endif
  12. #include <classmenu.h>
  13. #include <vgui_controls/EditablePanel.h>
  14. #include <filesystem.h>
  15. #include <dod_shareddefs.h>
  16. #include "cbase.h"
  17. #include "dod_gamerules.h"
  18. #include "dodmenubackground.h"
  19. #include "dodbutton.h"
  20. #include "imagemouseoverbutton.h"
  21. #include "IconPanel.h"
  22. #include <vgui_controls/CheckButton.h>
  23. using namespace vgui;
  24. #define NUM_CLASSES 6
  25. class CDODClassMenu : public CClassMenu
  26. {
  27. private:
  28. DECLARE_CLASS_SIMPLE( CDODClassMenu, CClassMenu );
  29. public:
  30. CDODClassMenu(IViewPort *pViewPort);
  31. virtual void Update( void );
  32. virtual Panel *CreateControlByName( const char *controlName );
  33. virtual void OnTick( void );
  34. virtual void PaintBackground( void );
  35. virtual void OnKeyCodePressed(KeyCode code);
  36. virtual void SetVisible( bool state );
  37. MESSAGE_FUNC_CHARPTR( OnShowPage, "ShowPage", page );
  38. virtual void ShowPanel(bool bShow);
  39. void UpdateNumClassLabel( void );
  40. virtual int GetTeamNumber( void ) = 0;
  41. #ifdef REFRESH_CLASSMENU_TOOL
  42. MESSAGE_FUNC( OnRefreshClassMenu, "refresh_classes" );
  43. #endif
  44. MESSAGE_FUNC_PTR( OnSuicideOptionChanged, "CheckButtonChecked", panel );
  45. private:
  46. CDODClassInfoPanel *m_pClassInfoPanel;
  47. CDODMenuBackground *m_pBackground;
  48. CheckButton *m_pSuicideOption;
  49. CImageMouseOverButton<CDODClassInfoPanel> *m_pInitialButton;
  50. int m_iActivePlayerClass;
  51. int m_iLastPlayerClassCount;
  52. int m_iLastClassLimit;
  53. ButtonCode_t m_iClassMenuKey;
  54. vgui::Label *m_pClassNumLabel[NUM_CLASSES];
  55. vgui::Label *m_pClassFullLabel[NUM_CLASSES];
  56. };
  57. //-----------------------------------------------------------------------------
  58. // Purpose: Draws the U.S. class menu
  59. //-----------------------------------------------------------------------------
  60. class CDODClassMenu_Allies : public CDODClassMenu
  61. {
  62. private:
  63. DECLARE_CLASS_SIMPLE( CDODClassMenu_Allies, CDODClassMenu );
  64. public:
  65. CDODClassMenu_Allies(IViewPort *pViewPort) : BaseClass(pViewPort)
  66. {
  67. LoadControlSettings( "Resource/UI/ClassMenu_Allies.res" );
  68. }
  69. virtual const char *GetName( void )
  70. {
  71. return PANEL_CLASS_ALLIES;
  72. }
  73. virtual int GetTeamNumber( void )
  74. {
  75. return TEAM_ALLIES;
  76. }
  77. };
  78. //-----------------------------------------------------------------------------
  79. // Purpose: Draws the Wermacht class menu
  80. //-----------------------------------------------------------------------------
  81. class CDODClassMenu_Axis : public CDODClassMenu
  82. {
  83. private:
  84. DECLARE_CLASS_SIMPLE( CDODClassMenu_Axis, CDODClassMenu );
  85. public:
  86. CDODClassMenu_Axis(IViewPort *pViewPort) : BaseClass(pViewPort)
  87. {
  88. LoadControlSettings( "Resource/UI/ClassMenu_Axis.res" );
  89. }
  90. virtual const char *GetName( void )
  91. {
  92. return PANEL_CLASS_AXIS;
  93. }
  94. virtual int GetTeamNumber( void )
  95. {
  96. return TEAM_AXIS;
  97. }
  98. };
  99. #endif // DODCLASSMENU_H