From 0171e60c208cce8f253041d3cb857d317ae84623 Mon Sep 17 00:00:00 2001 From: a1batross Date: Fri, 16 Sep 2016 22:47:16 +0300 Subject: [PATCH] Trying to Use convar_t on cvars created by CVAR_CREATE. Update submodules --- 3rdparty/regamelite | 2 +- 3rdparty/yapb | 2 +- cl_dll/hud/ammo.cpp | 31 ++++++++++++++++++------------ cl_dll/hud/menu.cpp | 41 +++++++++++++++++----------------------- cl_dll/hud/saytext.cpp | 2 +- cl_dll/include/hud/hud.h | 6 +++--- common/cvardef.h | 19 +++++++++++++++++++ 7 files changed, 61 insertions(+), 42 deletions(-) diff --git a/3rdparty/regamelite b/3rdparty/regamelite index 040e76a..9cda6e8 160000 --- a/3rdparty/regamelite +++ b/3rdparty/regamelite @@ -1 +1 @@ -Subproject commit 040e76a2181cc12130801397e423cd1d4a3e4276 +Subproject commit 9cda6e89a535533bc1110fe58cbcd636844b90fa diff --git a/3rdparty/yapb b/3rdparty/yapb index 4157fa3..f8650ae 160000 --- a/3rdparty/yapb +++ b/3rdparty/yapb @@ -1 +1 @@ -Subproject commit 4157fa3caff7a98bf797b729a8c8e203063c77e5 +Subproject commit f8650aebd58be6c004d34cde4bb142aca8cfbefb diff --git a/cl_dll/hud/ammo.cpp b/cl_dll/hud/ammo.cpp index 4778712..d90fd9d 100644 --- a/cl_dll/hud/ammo.cpp +++ b/cl_dll/hud/ammo.cpp @@ -19,6 +19,7 @@ // #include "hud.h" +#include "cvardef.h" #include "cl_util.h" #include "parsemsg.h" #include "pm_shared.h" @@ -354,9 +355,9 @@ int CHudAmmo::Init(void) m_pHud_DrawHistory_Time = CVAR_CREATE( "hud_drawhistory_time", HISTORY_DRAW_TIME, 0 ); m_pHud_FastSwitch = CVAR_CREATE( "hud_fastswitch", "0", FCVAR_ARCHIVE ); // controls whether or not weapons can be selected in one keypress CVAR_CREATE( "cl_observercrosshair", "1", 0 ); - m_pClCrosshairColor = CVAR_CREATE( "cl_crosshair_color", "50 250 50", FCVAR_ARCHIVE ); - m_pClCrosshairTranslucent = CVAR_CREATE( "cl_crosshair_translucent", "1", FCVAR_ARCHIVE ); - m_pClCrosshairSize = CVAR_CREATE( "cl_crosshair_size", "auto", FCVAR_ARCHIVE ); + m_pClCrosshairColor = (convar_t*)CVAR_CREATE( "cl_crosshair_color", "50 250 50", FCVAR_ARCHIVE ); + m_pClCrosshairTranslucent = (convar_t*)CVAR_CREATE( "cl_crosshair_translucent", "1", FCVAR_ARCHIVE ); + m_pClCrosshairSize = (convar_t*)CVAR_CREATE( "cl_crosshair_size", "auto", FCVAR_ARCHIVE ); m_pClDynamicCrosshair = CVAR_CREATE("cl_dynamiccrosshair", "1", FCVAR_ARCHIVE); m_iFlags = HUD_DRAW | HUD_THINK; //!!! @@ -367,8 +368,8 @@ int CHudAmmo::Init(void) m_cvarB = m_cvarR = m_cvarG = -1; m_iCurrentCrosshair = 0; - m_bAdditive = 1; - m_iCrosshairScaleBase = 1024; + m_bAdditive = true; + m_iCrosshairScaleBase = -1; m_bDrawCrosshair = true; gWR.Init(); @@ -1386,6 +1387,9 @@ void CHudAmmo::DrawCrosshair( float flTime ) void CHudAmmo::CalcCrosshairSize() { + if( !m_pClCrosshairSize->modified ) + return; + const char *size = m_pClCrosshairSize->string; if( !stricmp(size, "auto") ) @@ -1415,6 +1419,8 @@ void CHudAmmo::CalcCrosshairSize() { m_iCrosshairScaleBase = 640; } + + m_pClCrosshairSize->modified = false; return; } @@ -1437,17 +1443,18 @@ void CHudAmmo::CalcCrosshairDrawMode() void CHudAmmo::CalcCrosshairColor() { + if( !m_pClCrosshairColor->modified ) + return; + const char *colors = m_pClCrosshairColor->string; - int tempR; - int tempG; - int tempB; + sscanf( colors, "%d %d %d", &m_cvarR, &m_cvarG, &m_cvarB); - sscanf( colors, "%d %d %d", &tempR, &tempG, &tempB); + m_R = m_cvarR = bound( 0, m_cvarR, 255 ); + m_G = m_cvarG = bound( 0, m_cvarG, 255 ); + m_B = m_cvarB = bound( 0, m_cvarB, 255 ); - m_R = m_cvarR = bound( 0, tempR, 255 ); - m_G = m_cvarG = bound( 0, tempG, 255 ); - m_B = m_cvarB = bound( 0, tempB, 255 ); + m_pClCrosshairSize->modified = false; } // diff --git a/cl_dll/hud/menu.cpp b/cl_dll/hud/menu.cpp index a28d484..66afb9c 100644 --- a/cl_dll/hud/menu.cpp +++ b/cl_dll/hud/menu.cpp @@ -182,32 +182,25 @@ int CHudMenu :: MsgFunc_ShowMenu( const char *pszName, int iSize, void *pbuf ) // so execute it and exit if( _extended_menus->value != 0.0f ) { - if( !strcmp(menustring, "#RadioA") ) + if( !strncmp(menustring, "#Radio", 6 ) ) { - ShowVGUIMenu(MENU_RADIOA); - return 1; - } - else if( !strcmp(menustring, "#RadioB")) - { - ShowVGUIMenu(MENU_RADIOB); - return 1; - } - else if( !strcmp(menustring, "#RadioC")) - { - ShowVGUIMenu(MENU_RADIOC); - return 1; - } - else - { - // we just show touch screen numbers - ShowVGUIMenu(MENU_NUMERICAL_MENU); + if( menustring[6] == 'A' ) + { + ShowVGUIMenu(MENU_RADIOA); return 1; + } + else if( menustring[6] == 'B' ) + { + ShowVGUIMenu(MENU_RADIOB); return 1; + } + else if( menustring[6] == 'B' ) + { + ShowVGUIMenu(MENU_RADIOC); return 1; + } + else ShowVGUIMenu( MENU_NUMERICAL_MENU ); // we just show touch screen numbers } + else ShowVGUIMenu(MENU_NUMERICAL_MENU); } - else - { - // we just show touch screen numbers - ShowVGUIMenu(MENU_NUMERICAL_MENU); - } + else ShowVGUIMenu(MENU_NUMERICAL_MENU); if ( !m_fWaitingForMore ) // this is the start of a new menu { @@ -261,7 +254,7 @@ int CHudMenu::MsgFunc_AllowSpec(const char *pszName, int iSize, void *pbuf) { BufferReader reader( pszName, pbuf, iSize ); - m_bAllowSpec = !!reader.ReadByte(); + m_bAllowSpec = (bool)reader.ReadByte(); return 1; } diff --git a/cl_dll/hud/saytext.cpp b/cl_dll/hud/saytext.cpp index c474eb6..309db3a 100644 --- a/cl_dll/hud/saytext.cpp +++ b/cl_dll/hud/saytext.cpp @@ -190,9 +190,9 @@ CSimpleMap sayTextFmt[] = int CHudSayText :: MsgFunc_SayText( const char *pszName, int iSize, void *pbuf ) { BufferReader reader( pszName, pbuf, iSize ); + char szBuf[3][64] = { 0 }; int client_index = reader.ReadByte(); // the client who spoke the message - char szBuf[3][64]; strncpy( szBuf[0], reader.ReadString(), sizeof(szBuf[0])); strncpy( szBuf[1], reader.ReadString(), sizeof(szBuf[1])); strncpy( szBuf[2], reader.ReadString(), sizeof(szBuf[2])); diff --git a/cl_dll/include/hud/hud.h b/cl_dll/include/hud/hud.h index cac6ae4..4c74207 100644 --- a/cl_dll/include/hud/hud.h +++ b/cl_dll/include/hud/hud.h @@ -185,9 +185,9 @@ private: bool m_bDrawCrosshair; int m_iAmmoLastCheck; - cvar_t *m_pClCrosshairColor; - cvar_t *m_pClCrosshairTranslucent; - cvar_t *m_pClCrosshairSize; + convar_t *m_pClCrosshairColor; + convar_t *m_pClCrosshairTranslucent; + convar_t *m_pClCrosshairSize; cvar_t *m_pClDynamicCrosshair; cvar_t *m_pHud_FastSwitch; cvar_t *m_pHud_DrawHistory_Time; diff --git a/common/cvardef.h b/common/cvardef.h index 6b51c1f..ed1bddb 100644 --- a/common/cvardef.h +++ b/common/cvardef.h @@ -33,4 +33,23 @@ typedef struct cvar_s float value; struct cvar_s *next; } cvar_t; + + +// WARNING: Private structure from Xash3D Engine. Use with caution +typedef struct convar_s +{ + // this part shared with cvar_t + char *name; + char *string; + int flags; + float value; + struct convar_s *next; + + // this part unique for convar_t + int integer; // atoi( string ) + qboolean modified; // set each time the cvar is changed + char *reset_string; // cvar_restart will reset to this value + char *latched_string; // for CVAR_LATCH vars + char *description; // variable descrition info +} convar_t; #endif