Wazanator

playermodelmenu.cpp

Apr 20th, 2014
544
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.62 KB | None | 0 0
  1. #include "cbase.h"
  2. #include "IPlayerModelPanel.h"
  3. using namespace vgui;
  4.  
  5. #include <vgui/IVGui.h>
  6. #include <vgui_controls/Frame.h>
  7. #include <vgui_controls/ImagePanel.h>
  8. #include <vgui_controls/Button.h>
  9.  
  10. const char *imagefilePath = "HELLO THERE IM THE DUMMY TEXT";
  11. int MAX_PLAYERMODELS = 2;
  12. int currentPlayerModel = 0;
  13.  
  14.  
  15.  
  16. class CPlayerModelPanel : public vgui::Frame
  17. {
  18.     DECLARE_CLASS_SIMPLE(CPlayerModelPanel, vgui::Frame);
  19.     //CPlayerModelPanel : This Class / vgui::Frame : BaseClass
  20.  
  21.     CPlayerModelPanel(vgui::VPANEL parent);     // Constructor
  22.     ~CPlayerModelPanel(){};             // Destructor
  23.     void updateImage();
  24. protected:
  25.     //VGUI overrides:
  26.     virtual void OnTick();
  27.     virtual void OnCommand(const char* pcCommand);
  28.  
  29. private:
  30.     //Other used VGUI control Elements:
  31.    
  32.  
  33. };
  34. // Constuctor: Initializes the Panel
  35. CPlayerModelPanel::CPlayerModelPanel(vgui::VPANEL parent)
  36. : BaseClass(NULL, "PlayerModelPanel")
  37. {
  38.     SetParent(parent);
  39.  
  40.     SetKeyBoardInputEnabled(true);
  41.     SetMouseInputEnabled(true);
  42.  
  43.     SetProportional(false);
  44.     SetTitleBarVisible(true);
  45.     SetMinimizeButtonVisible(false);
  46.     SetMaximizeButtonVisible(false);
  47.     SetCloseButtonVisible(false);
  48.     SetSizeable(false);
  49.     SetMoveable(false);
  50.     SetVisible(true);
  51.     //Create goodies to go on our panel
  52.     ImagePanel* playerImage = new ImagePanel(this, "myPanel");
  53.     playerImage->SetImage(scheme()->GetImage("models/combine_soldier_prisonguard.vmt", false));
  54.     Button* nextButton = new Button(this, "Button1", "Next");
  55.     Button* previousButton = new Button(this, "Button2", "Previous");
  56.     Button* selectButton = new Button(this, "Button3", "Select");
  57.     Button* cancelButton = new Button(this, "Button4", "Cancel");
  58.  
  59.     SetScheme(vgui::scheme()->LoadSchemeFromFile("resource/SourceScheme.res", "SourceScheme"));
  60.  
  61.     LoadControlSettings("resource/UI/playermodelpanel.res");
  62.  
  63.     ivgui()->AddTickSignal(GetVPanel(), 100);
  64.  
  65.     DevMsg("Player model panel has been constructed\n");
  66. }
  67.  
  68. class CPlayerModelPanelInterface : public IPlayerModelPanel
  69. {
  70. private:
  71.     CPlayerModelPanel *PlayerModelPanel;
  72. public:
  73.    
  74.     CPlayerModelPanelInterface()
  75.     {
  76.         PlayerModelPanel = NULL;
  77.     }
  78.     void Create(vgui::VPANEL parent)
  79.     {
  80.         PlayerModelPanel = new CPlayerModelPanel(parent);
  81.        
  82.     }
  83.     void Destroy()
  84.     {
  85.         if (PlayerModelPanel)
  86.         {
  87.             PlayerModelPanel->SetParent((vgui::Panel *)NULL);
  88.             delete PlayerModelPanel;
  89.         }
  90.     }
  91.     void Activate(void)
  92.     {
  93.         if (PlayerModelPanel)
  94.         {
  95.             PlayerModelPanel->Activate();
  96.         }
  97.     }
  98.    
  99. };
  100. static CPlayerModelPanelInterface g_PlayerModelPanel;
  101. IPlayerModelPanel* PlayerModelPanel = (IPlayerModelPanel*)&g_PlayerModelPanel;
  102.  
  103. //Setting up toggle on/off command
  104. ConVar cl_showplayermodelpanel("cl_showplayermodelpanel", "0", FCVAR_CLIENTDLL, "Sets the state of player model selection panel <state>");
  105.  
  106. void CPlayerModelPanel::OnTick()
  107. {
  108.     BaseClass::OnTick();
  109.     SetVisible(cl_showplayermodelpanel.GetBool());
  110. }
  111.  
  112.  
  113. CON_COMMAND(TogglePlayerModelPanel, "Toggles playermodelpanel on or off")
  114. {
  115.     cl_showplayermodelpanel.SetValue(!cl_showplayermodelpanel.GetBool());
  116.     PlayerModelPanel->Activate();
  117. };
  118.  
  119. //TurnOffCommand
  120. void CPlayerModelPanel::OnCommand(const char* pcCommand)
  121. {
  122.     if (!Q_stricmp(pcCommand, "turnoff"))
  123.         cl_showplayermodelpanel.SetValue(0);
  124.     if (!Q_stricmp(pcCommand, "modelSelect")) //Select buttons was pressed
  125.         setModel();
  126.     if (!Q_stricmp(pcCommand, "nextModel"))
  127.         updateModelSelection(0);
  128.     if (!Q_stricmp(pcCommand, "previousModel"))
  129.         updateModelSelection(1);
  130. }
  131.  
  132. //Update the image of the panel
  133. void updateImage()
  134. {
  135.     switch (currentPlayerModel)
  136.     {
  137.     case 0:
  138.         playerImage->SetImage(scheme()->GetImage("models/combine_soldier_prisonguard.vmt", false));
  139.     case 1:
  140.         playerImage->SetImage(scheme()->GetImage("models/combine_soldier.vmt", false));
  141.     case 2:
  142.         playerImage->SetImage(scheme()->GetImage("models/combine_super_soldier.vmt", false));
  143.     default:
  144.         break;
  145.     }
  146. }
  147. //Keep track of what model we are currently on
  148. void updateModelSelection(int check)
  149. {
  150.     if (check == 0)
  151.     {
  152.         if (currentPlayerModel != MAX_PLAYERMODELS)
  153.             currentPlayerModel++;
  154.         else
  155.             currentPlayerModel = 0;
  156.     }
  157.     else if (check == 1)
  158.     {
  159.         if (currentPlayerModel != 0)
  160.             currentPlayerModel--;
  161.         else
  162.             currentPlayerModel = MAX_PLAYERMODELS;
  163.     }
  164.     else
  165.     {
  166.         currentPlayerModel = 0;
  167.     }
  168.     //Time to update the image panel
  169.     PlayerModelPanel->updateImage();
  170. }
  171.  
  172. void setModel()
  173. {
  174.     switch (currentPlayerModel)
  175.     {
  176.     case 0:
  177.         engine->ClientCmd("cl_playermodel models/combine_soldier_prisonguard.mdl");
  178.     case 1:
  179.         engine->ClientCmd("cl_playermodel models/combine_soldier.mdl");
  180.     case 2:
  181.         engine->ClientCmd("cl_playermodel models/combine_super_soldier.mdl");
  182.     default:
  183.         break;
  184.     }
  185. }
Advertisement
Add Comment
Please, Sign In to add comment