Added more convenient way to hide HUD elements from clientside VScript

This commit is contained in:
Blixibon
2022-10-30 13:30:02 -05:00
parent 2214301694
commit 6ceb808f93
3 changed files with 67 additions and 0 deletions

View File

@@ -143,6 +143,10 @@ CUtlVector< int > g_ScriptTextureIDs;
CUtlLinkedList< IScriptVGUIObject*, unsigned short > g_ScriptPanels;
// Used in hud.cpp to help scripts hide HUD elements
int g_iVScriptHideHUD = 0;
// Boundary is not checked in Surface, keep count manually to sanitise user input.
static int g_nFontCount = 0;
@@ -3403,6 +3407,9 @@ void CScriptVGUI::LevelShutdownPostEntity()
surface()->DestroyTextureID( g_ScriptTextureIDs[i] );
}
g_ScriptTextureIDs.Purge();
// Reset HUD hidden bits
g_iVScriptHideHUD = 0;
}
void CScriptVGUI::Shutdown()
@@ -3690,6 +3697,29 @@ vgui::HFont GetScriptFont( const char *name, bool proportional )
return script_surface.GetFont( name, proportional, NULL );
}
//-----------------------------------------------------------------------------
// Control which HUD elements on the screen are hidden.
//-----------------------------------------------------------------------------
static int ScriptGetHUDHiddenBits()
{
return g_iVScriptHideHUD;
}
static void ScriptSetHUDHiddenBits( int iBits )
{
g_iVScriptHideHUD = iBits;
}
static void ScriptAddHUDHiddenBits( int iBits )
{
g_iVScriptHideHUD |= iBits;
}
static void ScriptClearHUDHiddenBits( int iBits )
{
g_iVScriptHideHUD &= ~(iBits);
}
void RegisterScriptVGUI()
{
@@ -3702,6 +3732,11 @@ void RegisterScriptVGUI()
ScriptRegisterFunction( g_pScriptVM, ScreenToRay, "Get a ray from screen pixel position to world space." );
ScriptRegisterFunctionNamed( g_pScriptVM, ScriptScreenTransform, "ScreenTransform", "Get world position normalised in screen space. Return true if on screen." );
ScriptRegisterFunctionNamed( g_pScriptVM, ScriptGetHUDHiddenBits, "GetHUDHiddenBits", "Use with 'HIDEHUD_' constants." );
ScriptRegisterFunctionNamed( g_pScriptVM, ScriptSetHUDHiddenBits, "SetHUDHiddenBits", "Use with 'HIDEHUD_' constants." );
ScriptRegisterFunctionNamed( g_pScriptVM, ScriptAddHUDHiddenBits, "AddHUDHiddenBits", "Use with 'HIDEHUD_' constants." );
ScriptRegisterFunctionNamed( g_pScriptVM, ScriptClearHUDHiddenBits, "ClearHUDHiddenBits", "Use with 'HIDEHUD_' constants." );
g_pScriptVM->Run( g_Script_vgui_init );
g_pScriptVM->RegisterInstance( &script_surface, "surface" );