Wazanator

Untitled

May 2nd, 2014
356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.92 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. protected:
  24.     //VGUI overrides:
  25.     virtual void OnTick();
  26.     virtual void OnCommand(const char* pcCommand);
  27.  
  28. private:
  29.     //Other used VGUI control Elements:
  30.     ImagePanel *playerImage;
  31.  
  32.  
  33. };
  34. // Constuctor: Initializes the Panel
  35. CPlayerModelPanel::CPlayerModelPanel(vgui::VPANEL parent) : BaseClass(NULL, "PlayerModelPanel")
  36. {
  37.     SetParent(parent);
  38.  
  39.     SetKeyBoardInputEnabled(true);
  40.     SetMouseInputEnabled(true);
  41.  
  42.     SetProportional(false);
  43.     SetTitleBarVisible(true);
  44.     SetMinimizeButtonVisible(false);
  45.     SetMaximizeButtonVisible(false);
  46.     SetCloseButtonVisible(false);
  47.     SetSizeable(false);
  48.     SetMoveable(false);
  49.     SetVisible(true);
  50.  
  51.     SetScheme(vgui::scheme()->LoadSchemeFromFile("resource/SourceScheme.res", "SourceScheme"));
  52.     LoadControlSettings("resource/UI/playermodelpanel.res");
  53.     ivgui()->AddTickSignal(GetVPanel(), 100);
  54.  
  55.     //////////////////////////////////
  56.     //Create goodies to go on our panel
  57.     //////////////////////////////////
  58.     playerImage = new ImagePanel(this, "myPanel");
  59.     playerImage->SetImage(scheme()->GetImage("models/combine_soldier_prisonguard.vmt", false));
  60.  
  61.     Button* nextButton = new Button(this, "Button1", "Next");
  62.     Button* previousButton = new Button(this, "Button2", "Previous");
  63.     Button* selectButton = new Button(this, "Button3", "Select");
  64.     Button* cancelButton = new Button(this, "Button4", "Cancel");
  65.  
  66.     DevMsg("Player model panel has been constructed\n");
  67. }
  68.  
  69. class CPlayerModelPanelInterface : public IPlayerModelPanel
  70. {
  71. private:
  72.     CPlayerModelPanel *PlayerModelPanel;
  73. public:
  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.  
  104. //////////////////////////////////
  105. //Setting up toggle on/off command
  106. //////////////////////////////////
  107. ConVar cl_showplayermodelpanel("cl_showplayermodelpanel", "0", FCVAR_CLIENTDLL, "Sets the state of player model selection panel <state>");
  108.  
  109. void CPlayerModelPanel::OnTick()
  110. {
  111.     BaseClass::OnTick();
  112.     SetVisible(cl_showplayermodelpanel.GetBool());
  113. }
  114.  
  115.  
  116. CON_COMMAND(TogglePlayerModelPanel, "Toggles playermodelpanel on or off")
  117. {
  118.     cl_showplayermodelpanel.SetValue(!cl_showplayermodelpanel.GetBool());
  119.     PlayerModelPanel->Activate();
  120. };
  121.  
  122. //TurnOffCommand
  123. void CPlayerModelPanel::OnCommand(const char* pcCommand)
  124. {
  125.     if (!Q_stricmp(pcCommand, "turnoff"))
  126.         cl_showplayermodelpanel.SetValue(0);
  127.     if (!Q_stricmp(pcCommand, "modelSelect")) //Select buttons was pressed
  128.         setModel();
  129.     if (!Q_stricmp(pcCommand, "nextModel"))
  130.         updateModelSelection(0);
  131.     if (!Q_stricmp(pcCommand, "previousModel"))
  132.         updateModelSelection(1);
  133. }
  134.  
  135.  
  136. //////////////////////////////////
  137. //Update the image of the panel
  138. //////////////////////////////////
  139. void updateImage()
  140. {
  141.     switch (currentPlayerModel)
  142.     {
  143.     case 0:
  144.         playerImage->SetImage(scheme()->GetImage("models/combine_soldier_prisonguard.vmt", false));
  145.     case 1:
  146.         playerImage->SetImage(scheme()->GetImage("models/combine_soldier.vmt", false));
  147.     case 2:
  148.         playerImage->SetImage(scheme()->GetImage("models/combine_super_soldier.vmt", false));
  149.     default:
  150.         break;
  151.     }
  152. }
  153. //////////////////////////////////
  154. //Keep track of what model we are currently on
  155. //////////////////////////////////
  156. void updateModelSelection(int check)
  157. {
  158.     if (check == 0)
  159.     {
  160.         if (currentPlayerModel != MAX_PLAYERMODELS)
  161.             currentPlayerModel++;
  162.         else
  163.             currentPlayerModel = 0;
  164.     }
  165.     else if (check == 1)
  166.     {
  167.         if (currentPlayerModel != 0)
  168.             currentPlayerModel--;
  169.         else
  170.             currentPlayerModel = MAX_PLAYERMODELS;
  171.     }
  172.     else
  173.     {
  174.         currentPlayerModel = 0;
  175.     }
  176.     //Time to update the image panel
  177.     PlayerModelPanel->updateImage();
  178. }
  179.  
  180. void setModel()
  181. {
  182.     switch (currentPlayerModel)
  183.     {
  184.     case 0:
  185.         engine->ClientCmd("cl_playermodel models/combine_soldier_prisonguard.mdl");
  186.     case 1:
  187.         engine->ClientCmd("cl_playermodel models/combine_soldier.mdl");
  188.     case 2:
  189.         engine->ClientCmd("cl_playermodel models/combine_super_soldier.mdl");
  190.     default:
  191.         break;
  192.     }
  193. }
Advertisement
Add Comment
Please, Sign In to add comment