mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
VGUI: reverse engineer and rework CEngineVGui vftable
This commit is contained in:
parent
c09e6d6948
commit
02a0088deb
121
src/public/vgui/ienginevgui.h
Normal file
121
src/public/vgui/ienginevgui.h
Normal file
@ -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
|
@ -4,11 +4,15 @@ add_module( "lib" "vgui" "vpc" ${FOLDER_CONTEXT} TRUE TRUE )
|
|||||||
start_sources()
|
start_sources()
|
||||||
|
|
||||||
add_sources( SOURCE_GROUP "Runtime"
|
add_sources( SOURCE_GROUP "Runtime"
|
||||||
"vgui.h"
|
|
||||||
"vgui_baseui_interface.cpp"
|
"vgui_baseui_interface.cpp"
|
||||||
"vgui_baseui_interface.h"
|
"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"
|
add_sources( SOURCE_GROUP "Debug"
|
||||||
"vgui_debugpanel.cpp"
|
"vgui_debugpanel.cpp"
|
||||||
"vgui_debugpanel.h"
|
"vgui_debugpanel.h"
|
||||||
@ -16,7 +20,7 @@ add_sources( SOURCE_GROUP "Debug"
|
|||||||
"vgui_fpspanel.h"
|
"vgui_fpspanel.h"
|
||||||
)
|
)
|
||||||
|
|
||||||
add_sources( SOURCE_GROUP "vgui_controls"
|
add_sources( SOURCE_GROUP "Controls"
|
||||||
"vgui_controls/RichText.cpp"
|
"vgui_controls/RichText.cpp"
|
||||||
"vgui_controls/RichText.h"
|
"vgui_controls/RichText.h"
|
||||||
)
|
)
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Purpose:
|
// 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);
|
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
|
void VEngineVGui::Detour(const bool bAttach) const
|
||||||
{
|
{
|
||||||
DetourSetup(&CEngineVGui__Paint, &CEngineVGui::Paint, bAttach);
|
DetourSetup(&CEngineVGui__Paint, &CEngineVGui::VPaint, bAttach);
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
@ -1,83 +1,79 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
#include "public/vgui/ienginevgui.h"
|
||||||
#include <engine/server/sv_main.h>
|
#include <engine/server/sv_main.h>
|
||||||
#include <vguimatsurface/MatSystemSurface.h>
|
#include <vguimatsurface/MatSystemSurface.h>
|
||||||
#include "inputsystem/iinputsystem.h"
|
#include "inputsystem/iinputsystem.h"
|
||||||
|
|
||||||
enum class PaintMode_t
|
abstract_class IEngineVGuiInternal : public IEngineVGui
|
||||||
{
|
|
||||||
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
|
|
||||||
{
|
{
|
||||||
public:
|
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)
|
virtual bool Key_Event(const InputEvent_t& event) = 0;
|
||||||
{
|
virtual bool StartFixed_Event(const InputEvent_t& event) = 0;
|
||||||
int index = 11;
|
virtual bool StartMapped_Event(const InputEvent_t& event) = 0;
|
||||||
CallVFunc<void>(index, this, progress);
|
|
||||||
}
|
virtual void Unknown5() = 0;
|
||||||
void EnabledProgressBarForNextLoad(void)
|
virtual void Unknown6() = 0;
|
||||||
{
|
|
||||||
int index = 31;
|
virtual void Paint(const PaintMode_t mode) = 0;
|
||||||
CallVFunc<void>(index, this);
|
|
||||||
}
|
virtual void Unknown7() = 0; // NullSub
|
||||||
void ShowErrorMessage(void)
|
virtual void Unknown8() = 0; // NullSub
|
||||||
{
|
virtual void Unknown9() = 0; // NullSub
|
||||||
int index = 35;
|
|
||||||
CallVFunc<void>(index, this);
|
// level loading
|
||||||
}
|
virtual void OnLevelLoadingStarted(const char* const levelName) = 0;
|
||||||
void HideLoadingPlaque(void)
|
virtual void OnLevelLoadingFinished() = 0;
|
||||||
{
|
|
||||||
int index = 36;
|
virtual void EnabledProgressBarForNextLoad() = 0;
|
||||||
CallVFunc<void>(index, this);
|
|
||||||
}
|
virtual void Unknown10() = 0; // something with load movies?
|
||||||
bool ShouldPause(void)
|
virtual void Unknown11() = 0;
|
||||||
{
|
virtual void Unknown12() = 0;
|
||||||
int index = 37;
|
|
||||||
return CallVFunc<bool>(index, this);
|
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 ===================================================================================================================================================== */
|
/* ==== 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__RenderStart)(CMatSystemSurface* pMatSystemSurface);
|
||||||
inline void*(*CEngineVGui__RenderEnd)(void);
|
inline void*(*CEngineVGui__RenderEnd)(void);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user