Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "cbase.h"
- #include "IPlayerModelPanel.h"
- using namespace vgui;
- #include <vgui/IVGui.h>
- #include <vgui_controls/Frame.h>
- #include <vgui_controls/ImagePanel.h>
- #include <vgui_controls/Button.h>
- const char *imagefilePath = "HELLO THERE IM THE DUMMY TEXT";
- int MAX_PLAYERMODELS = 2;
- int currentPlayerModel = 0;
- class CPlayerModelPanel : public vgui::Frame
- {
- DECLARE_CLASS_SIMPLE(CPlayerModelPanel, vgui::Frame);
- //CPlayerModelPanel : This Class / vgui::Frame : BaseClass
- CPlayerModelPanel(vgui::VPANEL parent); // Constructor
- ~CPlayerModelPanel(){}; // Destructor
- void updateImage();
- protected:
- //VGUI overrides:
- virtual void OnTick();
- virtual void OnCommand(const char* pcCommand);
- private:
- //Other used VGUI control Elements:
- };
- // Constuctor: Initializes the Panel
- CPlayerModelPanel::CPlayerModelPanel(vgui::VPANEL parent)
- : BaseClass(NULL, "PlayerModelPanel")
- {
- SetParent(parent);
- SetKeyBoardInputEnabled(true);
- SetMouseInputEnabled(true);
- SetProportional(false);
- SetTitleBarVisible(true);
- SetMinimizeButtonVisible(false);
- SetMaximizeButtonVisible(false);
- SetCloseButtonVisible(false);
- SetSizeable(false);
- SetMoveable(false);
- SetVisible(true);
- //Create goodies to go on our panel
- ImagePanel* playerImage = new ImagePanel(this, "myPanel");
- playerImage->SetImage(scheme()->GetImage("models/combine_soldier_prisonguard.vmt", false));
- Button* nextButton = new Button(this, "Button1", "Next");
- Button* previousButton = new Button(this, "Button2", "Previous");
- Button* selectButton = new Button(this, "Button3", "Select");
- Button* cancelButton = new Button(this, "Button4", "Cancel");
- SetScheme(vgui::scheme()->LoadSchemeFromFile("resource/SourceScheme.res", "SourceScheme"));
- LoadControlSettings("resource/UI/playermodelpanel.res");
- ivgui()->AddTickSignal(GetVPanel(), 100);
- DevMsg("Player model panel has been constructed\n");
- }
- class CPlayerModelPanelInterface : public IPlayerModelPanel
- {
- private:
- CPlayerModelPanel *PlayerModelPanel;
- public:
- CPlayerModelPanelInterface()
- {
- PlayerModelPanel = NULL;
- }
- void Create(vgui::VPANEL parent)
- {
- PlayerModelPanel = new CPlayerModelPanel(parent);
- }
- void Destroy()
- {
- if (PlayerModelPanel)
- {
- PlayerModelPanel->SetParent((vgui::Panel *)NULL);
- delete PlayerModelPanel;
- }
- }
- void Activate(void)
- {
- if (PlayerModelPanel)
- {
- PlayerModelPanel->Activate();
- }
- }
- };
- static CPlayerModelPanelInterface g_PlayerModelPanel;
- IPlayerModelPanel* PlayerModelPanel = (IPlayerModelPanel*)&g_PlayerModelPanel;
- //Setting up toggle on/off command
- ConVar cl_showplayermodelpanel("cl_showplayermodelpanel", "0", FCVAR_CLIENTDLL, "Sets the state of player model selection panel <state>");
- void CPlayerModelPanel::OnTick()
- {
- BaseClass::OnTick();
- SetVisible(cl_showplayermodelpanel.GetBool());
- }
- CON_COMMAND(TogglePlayerModelPanel, "Toggles playermodelpanel on or off")
- {
- cl_showplayermodelpanel.SetValue(!cl_showplayermodelpanel.GetBool());
- PlayerModelPanel->Activate();
- };
- //TurnOffCommand
- void CPlayerModelPanel::OnCommand(const char* pcCommand)
- {
- if (!Q_stricmp(pcCommand, "turnoff"))
- cl_showplayermodelpanel.SetValue(0);
- if (!Q_stricmp(pcCommand, "modelSelect")) //Select buttons was pressed
- setModel();
- if (!Q_stricmp(pcCommand, "nextModel"))
- updateModelSelection(0);
- if (!Q_stricmp(pcCommand, "previousModel"))
- updateModelSelection(1);
- }
- //Update the image of the panel
- void updateImage()
- {
- switch (currentPlayerModel)
- {
- case 0:
- playerImage->SetImage(scheme()->GetImage("models/combine_soldier_prisonguard.vmt", false));
- case 1:
- playerImage->SetImage(scheme()->GetImage("models/combine_soldier.vmt", false));
- case 2:
- playerImage->SetImage(scheme()->GetImage("models/combine_super_soldier.vmt", false));
- default:
- break;
- }
- }
- //Keep track of what model we are currently on
- void updateModelSelection(int check)
- {
- if (check == 0)
- {
- if (currentPlayerModel != MAX_PLAYERMODELS)
- currentPlayerModel++;
- else
- currentPlayerModel = 0;
- }
- else if (check == 1)
- {
- if (currentPlayerModel != 0)
- currentPlayerModel--;
- else
- currentPlayerModel = MAX_PLAYERMODELS;
- }
- else
- {
- currentPlayerModel = 0;
- }
- //Time to update the image panel
- PlayerModelPanel->updateImage();
- }
- void setModel()
- {
- switch (currentPlayerModel)
- {
- case 0:
- engine->ClientCmd("cl_playermodel models/combine_soldier_prisonguard.mdl");
- case 1:
- engine->ClientCmd("cl_playermodel models/combine_soldier.mdl");
- case 2:
- engine->ClientCmd("cl_playermodel models/combine_super_soldier.mdl");
- default:
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment