diff --git a/src/public/vgui/ienginevgui.h b/src/public/vgui/ienginevgui.h new file mode 100644 index 00000000..f5a85574 --- /dev/null +++ b/src/public/vgui/ienginevgui.h @@ -0,0 +1,121 @@ +//===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======// +// +// Purpose: +// +// $Workfile: $ +// $Date: $ +// $NoKeywords: $ +//===========================================================================// +#if !defined( IENGINEVGUI_H ) +#define IENGINEVGUI_H + +#ifdef _WIN32 +#pragma once +#endif + +//#include "interface.h" +#include "vgui/vgui.h" + +// Forward declarations. +namespace vgui +{ + class Panel; +}; + +// Todo: r5 seems to have the same number of enumerants, however the order is +// still unconfirmed! +enum VGuiPanel_t +{ + PANEL_ROOT = 0, + PANEL_GAMEUIDLL, // the console, game menu + PANEL_CLIENTDLL, + PANEL_TOOLS, + PANEL_INGAMESCREENS, + PANEL_GAMEDLL, + PANEL_CLIENTDLL_TOOLS, + PANEL_GAMEUIBACKGROUND, // the console background, shows under all other stuff in 3d engine view + PANEL_TRANSITIONEFFECT, + PANEL_STEAMOVERLAY, +}; + +// In-game panels are cropped to the current engine viewport size +enum PaintMode_t +{ + PAINT_UIPANELS = (1 << 0), + PAINT_INGAMEPANELS = (1 << 1), +}; + +// Might not be complete: +enum LevelLoadingProgress_e +{ + PROGRESS_INVALID = -2, + PROGRESS_DEFAULT = -1, + + PROGRESS_NONE, + PROGRESS_CHANGELEVEL, + PROGRESS_SPAWNSERVER, + PROGRESS_LOADWORLDMODEL, + PROGRESS_CRCMAP, + PROGRESS_CRCCLIENTDLL, + PROGRESS_CREATENETWORKSTRINGTABLES, + PROGRESS_PRECACHEWORLD, + PROGRESS_CLEARWORLD, + PROGRESS_LEVELINIT, + PROGRESS_PRECACHE, + PROGRESS_ACTIVATESERVER, + PROGRESS_BEGINCONNECT, + PROGRESS_SIGNONCHALLENGE, + PROGRESS_SIGNONCONNECT, + PROGRESS_SIGNONCONNECTED, + PROGRESS_PROCESSSERVERINFO, + PROGRESS_PROCESSSTRINGTABLE, + PROGRESS_SIGNONNEW, + PROGRESS_SENDCLIENTINFO, + PROGRESS_SENDSIGNONDATA, + PROGRESS_SIGNONSPAWN, + PROGRESS_CREATEENTITIES, + PROGRESS_FULLYCONNECTED, + PROGRESS_PRECACHELIGHTING, + PROGRESS_READYTOPLAY, + PROGRESS_HIGHESTITEM, // must be last item in list +}; + +abstract_class IEngineVGui +{ +public: + virtual ~IEngineVGui(void) { } + + virtual vgui::VPANEL GetPanel(const VGuiPanel_t type) = 0; + virtual vgui::VPANEL GetRootPanel(const VGuiPanel_t type) = 0; + + virtual void Unknown0() = 0; + virtual bool Unknown1() = 0; // ReturnFalse + + virtual bool IsGameUIVisible() = 0; + + virtual void ActivateGameUI() = 0; + virtual void HideGameUI() = 0; + + virtual void Simulate() = 0; + + virtual bool IsNotAllowedToHideGameUI() = 0; + + virtual void SetRuiFuncs(void* const ruiFuncsStruct) = 0; + + virtual void UpdateProgressBar(const LevelLoadingProgress_e progress) = 0; + virtual void Unknown3() = 0; + virtual void Unknown4() = 0; +}; + +#define VENGINE_VGUI_VERSION "VEngineVGui001" + +//#if defined(_STATIC_LINKED) && defined(CLIENT_DLL) +//namespace Client +//{ +// extern IEngineVGui* enginevgui; +//} +//#else +//extern IEngineVGui* enginevgui; +//#endif + +#endif // IENGINEVGUI_H diff --git a/src/vgui/vgui.h b/src/public/vgui/vgui.h similarity index 100% rename from src/vgui/vgui.h rename to src/public/vgui/vgui.h diff --git a/src/vgui/CMakeLists.txt b/src/vgui/CMakeLists.txt index 17f8d546..6c987121 100644 --- a/src/vgui/CMakeLists.txt +++ b/src/vgui/CMakeLists.txt @@ -4,11 +4,15 @@ add_module( "lib" "vgui" "vpc" ${FOLDER_CONTEXT} TRUE TRUE ) start_sources() add_sources( SOURCE_GROUP "Runtime" - "vgui.h" "vgui_baseui_interface.cpp" "vgui_baseui_interface.h" ) +add_sources( SOURCE_GROUP "Public" + "${ENGINE_SOURCE_DIR}/public/vgui/vgui.h" + "${ENGINE_SOURCE_DIR}/public/vgui/ienginevgui.h" +) + add_sources( SOURCE_GROUP "Debug" "vgui_debugpanel.cpp" "vgui_debugpanel.h" @@ -16,7 +20,7 @@ add_sources( SOURCE_GROUP "Debug" "vgui_fpspanel.h" ) -add_sources( SOURCE_GROUP "vgui_controls" +add_sources( SOURCE_GROUP "Controls" "vgui_controls/RichText.cpp" "vgui_controls/RichText.h" ) diff --git a/src/vgui/vgui_baseui_interface.cpp b/src/vgui/vgui_baseui_interface.cpp index 6d9d6842..3e2e5ada 100644 --- a/src/vgui/vgui_baseui_interface.cpp +++ b/src/vgui/vgui_baseui_interface.cpp @@ -15,7 +15,7 @@ //----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- -int CEngineVGui::Paint(CEngineVGui* thisptr, PaintMode_t mode) +int CEngineVGui::VPaint(CEngineVGui* const thisptr, const PaintMode_t mode) { int result = CEngineVGui__Paint(thisptr, mode); @@ -30,7 +30,7 @@ int CEngineVGui::Paint(CEngineVGui* thisptr, PaintMode_t mode) /////////////////////////////////////////////////////////////////////////////// void VEngineVGui::Detour(const bool bAttach) const { - DetourSetup(&CEngineVGui__Paint, &CEngineVGui::Paint, bAttach); + DetourSetup(&CEngineVGui__Paint, &CEngineVGui::VPaint, bAttach); } /////////////////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/src/vgui/vgui_baseui_interface.h b/src/vgui/vgui_baseui_interface.h index ed76daf9..b3c8b17b 100644 --- a/src/vgui/vgui_baseui_interface.h +++ b/src/vgui/vgui_baseui_interface.h @@ -1,83 +1,79 @@ #pragma once +#include "public/vgui/ienginevgui.h" #include #include #include "inputsystem/iinputsystem.h" -enum class PaintMode_t -{ - PAINT_UIPANELS = (1 << 0), - PAINT_INGAMEPANELS = (1 << 1), -}; - -// Might not be complete: -enum LevelLoadingProgress_e -{ - PROGRESS_INVALID = -2, - PROGRESS_DEFAULT = -1, - - PROGRESS_NONE, - PROGRESS_CHANGELEVEL, - PROGRESS_SPAWNSERVER, - PROGRESS_LOADWORLDMODEL, - PROGRESS_CRCMAP, - PROGRESS_CRCCLIENTDLL, - PROGRESS_CREATENETWORKSTRINGTABLES, - PROGRESS_PRECACHEWORLD, - PROGRESS_CLEARWORLD, - PROGRESS_LEVELINIT, - PROGRESS_PRECACHE, - PROGRESS_ACTIVATESERVER, - PROGRESS_BEGINCONNECT, - PROGRESS_SIGNONCHALLENGE, - PROGRESS_SIGNONCONNECT, - PROGRESS_SIGNONCONNECTED, - PROGRESS_PROCESSSERVERINFO, - PROGRESS_PROCESSSTRINGTABLE, - PROGRESS_SIGNONNEW, - PROGRESS_SENDCLIENTINFO, - PROGRESS_SENDSIGNONDATA, - PROGRESS_SIGNONSPAWN, - PROGRESS_CREATEENTITIES, - PROGRESS_FULLYCONNECTED, - PROGRESS_PRECACHELIGHTING, - PROGRESS_READYTOPLAY, - PROGRESS_HIGHESTITEM, // must be last item in list -}; - -class CEngineVGui +abstract_class IEngineVGuiInternal : public IEngineVGui { public: - static int Paint(CEngineVGui* thisptr, PaintMode_t mode); + virtual int Init() = 0; + virtual void Connect() = 0; + virtual void Shutdown() = 0; + virtual bool SetVGUIDirectories() = 0; + virtual bool IsInitialized() const = 0; + virtual CreateInterfaceFn GetGameUIFactory() = 0; - void UpdateProgressBar(LevelLoadingProgress_e progress) - { - int index = 11; - CallVFunc(index, this, progress); - } - void EnabledProgressBarForNextLoad(void) - { - int index = 31; - CallVFunc(index, this); - } - void ShowErrorMessage(void) - { - int index = 35; - CallVFunc(index, this); - } - void HideLoadingPlaque(void) - { - int index = 36; - CallVFunc(index, this); - } - bool ShouldPause(void) - { - int index = 37; - return CallVFunc(index, this); - } + virtual bool Key_Event(const InputEvent_t& event) = 0; + virtual bool StartFixed_Event(const InputEvent_t& event) = 0; + virtual bool StartMapped_Event(const InputEvent_t& event) = 0; + + virtual void Unknown5() = 0; + virtual void Unknown6() = 0; + + virtual void Paint(const PaintMode_t mode) = 0; + + virtual void Unknown7() = 0; // NullSub + virtual void Unknown8() = 0; // NullSub + virtual void Unknown9() = 0; // NullSub + + // level loading + virtual void OnLevelLoadingStarted(const char* const levelName) = 0; + virtual void OnLevelLoadingFinished() = 0; + + virtual void EnabledProgressBarForNextLoad() = 0; + + virtual void Unknown10() = 0; // something with load movies? + virtual void Unknown11() = 0; + virtual void Unknown12() = 0; + + virtual void ShowErrorMessage() = 0; + virtual void HideLoadingPlaque() = 0; + virtual bool ShouldPause() = 0; + + virtual void Unknown13() = 0; + virtual void Unknown14() = 0; + virtual void Unknown15() = 0; + virtual void Unknown16() = 0; + virtual void Unknown17() = 0; + virtual void Unknown18() = 0; + virtual void Unknown19() = 0; + virtual void Unknown20() = 0; + virtual void Unknown21() = 0; + virtual void Unknown22() = 0; + virtual void Unknown23() = 0; + + virtual void SetNotAllowedToHideGameUI(const bool bNotAllowedToHide) = 0; + virtual void SetNotAllowedToShowGameUI(const bool bNotAllowedToShow) = 0; + + virtual void Unknown24() = 0; + virtual void Unknown25() = 0; + virtual void Unknown26() = 0; + virtual void Unknown27() = 0; + virtual void Unknown28() = 0; + virtual void Unknown29() = 0; + virtual void Unknown30() = 0; + virtual void Unknown31() = 0; // NullSub +}; + +class CEngineVGui : public IEngineVGuiInternal +{ +public: + static int VPaint(CEngineVGui* const thisptr, const PaintMode_t mode); }; /* ==== CENGINEVGUI ===================================================================================================================================================== */ -inline int(*CEngineVGui__Paint)(CEngineVGui* thisptr, PaintMode_t mode); +inline int(*CEngineVGui__Paint)(CEngineVGui* const thisptr, const PaintMode_t mode); inline void*(*CEngineVGui__RenderStart)(CMatSystemSurface* pMatSystemSurface); inline void*(*CEngineVGui__RenderEnd)(void);