diff --git a/cl_dll/ammo.cpp b/cl_dll/ammo.cpp index 68b0314ef4..f4c2e1cddb 100644 --- a/cl_dll/ammo.cpp +++ b/cl_dll/ammo.cpp @@ -1192,7 +1192,7 @@ client_sprite_t *GetSpriteList( client_sprite_t *pList, const char *psz, int iRe while( i-- ) { - if( ( !strcmp( psz, p->szName ) ) && ( p->iRes == iRes ) ) + if( p->iRes == iRes && !strcmp( psz, p->szName )) return p; p++; } diff --git a/cl_dll/cl_util.h b/cl_dll/cl_util.h index e13c344f80..8a2d86edc7 100644 --- a/cl_dll/cl_util.h +++ b/cl_dll/cl_util.h @@ -71,6 +71,8 @@ inline struct cvar_s *CVAR_CREATE( const char *cv, const char *val, const int fl // Use this to set any co-ords in 640x480 space #define XRES(x) ( (int)( float(x) * ( (float)ScreenWidth / 640.0f ) + 0.5f ) ) #define YRES(y) ( (int)( float(y) * ( (float)ScreenHeight / 480.0f ) + 0.5f ) ) +#define XRES_HD(x) ( (int)( float(x) * Q_max(1.f, (float)ScreenWidth / 1280.f ))) +#define YRES_HD(y) ( (int)( float(y) * Q_max(1.f, (float)ScreenHeight / 720.f ))) // use this to project world coordinates to screen coordinates #define XPROJECT(x) ( ( 1.0f + (x) ) * ScreenWidth * 0.5f ) diff --git a/cl_dll/death.cpp b/cl_dll/death.cpp index 606b64050c..0ecfaa8073 100644 --- a/cl_dll/death.cpp +++ b/cl_dll/death.cpp @@ -96,6 +96,17 @@ int CHudDeathNotice::Draw( float flTime ) { int x, y, r, g, b; + int gap = 20; + + const wrect_t& sprite = gHUD.GetSpriteRect(m_HUD_d_skull); + gap = sprite.bottom - sprite.top; + + SCREENINFO screenInfo; + + screenInfo.iSize = sizeof(SCREENINFO); + gEngfuncs.pfnGetScreenInfo(&screenInfo); + gap = Q_max( gap, screenInfo.iCharHeight ); + for( int i = 0; i < MAX_DEATHNOTICES; i++ ) { if( rgDeathNoticeList[i].iId == 0 ) @@ -119,10 +130,10 @@ int CHudDeathNotice::Draw( float flTime ) #endif { // Draw the death notice - y = YRES( DEATHNOTICE_TOP ) + 2 + ( 20 * i ); //!!! + y = YRES( DEATHNOTICE_TOP ) + 2 + ( gap * i ); //!!! int id = ( rgDeathNoticeList[i].iId == -1 ) ? m_HUD_d_skull : rgDeathNoticeList[i].iId; - x = ScreenWidth - ConsoleStringLen( rgDeathNoticeList[i].szVictim ) - ( gHUD.GetSpriteRect(id).right - gHUD.GetSpriteRect(id).left ); + x = ScreenWidth - ConsoleStringLen( rgDeathNoticeList[i].szVictim ) - ( gHUD.GetSpriteRect(id).right - gHUD.GetSpriteRect(id).left ) - 4; if( !rgDeathNoticeList[i].iSuicide ) { @@ -131,7 +142,7 @@ int CHudDeathNotice::Draw( float flTime ) // Draw killers name if( rgDeathNoticeList[i].KillerColor ) DrawSetTextColor( rgDeathNoticeList[i].KillerColor[0], rgDeathNoticeList[i].KillerColor[1], rgDeathNoticeList[i].KillerColor[2] ); - x = 5 + DrawConsoleString( x, y, rgDeathNoticeList[i].szKiller ); + x = 5 + DrawConsoleString( x, y + 4, rgDeathNoticeList[i].szKiller ); } r = 255; g = 80; b = 0; @@ -151,7 +162,7 @@ int CHudDeathNotice::Draw( float flTime ) { if( rgDeathNoticeList[i].VictimColor ) DrawSetTextColor( rgDeathNoticeList[i].VictimColor[0], rgDeathNoticeList[i].VictimColor[1], rgDeathNoticeList[i].VictimColor[2] ); - x = DrawConsoleString( x, y, rgDeathNoticeList[i].szVictim ); + x = DrawConsoleString( x, y + 4, rgDeathNoticeList[i].szVictim ); } } } diff --git a/cl_dll/hud_spectator.cpp b/cl_dll/hud_spectator.cpp index 180c4f275d..0e9d440f80 100644 --- a/cl_dll/hud_spectator.cpp +++ b/cl_dll/hud_spectator.cpp @@ -657,10 +657,10 @@ int CHudSpectator::Draw( float flTime ) // check if name would be in inset window if( m_pip->value != INSET_OFF ) { - if( m_vPlayerPos[i][0] > XRES( m_OverviewData.insetWindowX ) && - m_vPlayerPos[i][1] > YRES( m_OverviewData.insetWindowY ) && - m_vPlayerPos[i][0] < XRES( m_OverviewData.insetWindowX + m_OverviewData.insetWindowWidth ) && - m_vPlayerPos[i][1] < YRES( m_OverviewData.insetWindowY + m_OverviewData.insetWindowHeight) ) + if( m_vPlayerPos[i][0] > XRES_HD( m_OverviewData.insetWindowX ) && + m_vPlayerPos[i][1] > YRES_HD( m_OverviewData.insetWindowY ) && + m_vPlayerPos[i][0] < XRES_HD( m_OverviewData.insetWindowX + m_OverviewData.insetWindowWidth ) && + m_vPlayerPos[i][1] < YRES_HD( m_OverviewData.insetWindowY + m_OverviewData.insetWindowHeight) ) continue; } diff --git a/cl_dll/input_goldsource.cpp b/cl_dll/input_goldsource.cpp index 80a0ab5e34..d3517b2881 100644 --- a/cl_dll/input_goldsource.cpp +++ b/cl_dll/input_goldsource.cpp @@ -1592,7 +1592,7 @@ void GoldSourceInput::IN_Init (void) { ignoreNextDelta = false; m_filter = gEngfuncs.pfnRegisterVariable ( "m_filter","0", FCVAR_ARCHIVE ); - sensitivity = gEngfuncs.pfnRegisterVariable ( "sensitivity","3", FCVAR_ARCHIVE ); // user mouse sensitivity setting. + sensitivity = gEngfuncs.pfnRegisterVariable ( "sensitivity","3", FCVAR_ARCHIVE | FCVAR_FILTERSTUFFTEXT ); // user mouse sensitivity setting. in_joystick = gEngfuncs.pfnRegisterVariable ( "joystick","0", FCVAR_ARCHIVE ); joy_name = gEngfuncs.pfnRegisterVariable ( "joyname", "joystick", 0 ); diff --git a/cl_dll/input_xash3d.cpp b/cl_dll/input_xash3d.cpp index ba5b14fd99..4f2ea39f14 100644 --- a/cl_dll/input_xash3d.cpp +++ b/cl_dll/input_xash3d.cpp @@ -280,7 +280,7 @@ void FWGSInput::IN_Shutdown( void ) // Register cvars and reset data void FWGSInput::IN_Init( void ) { - sensitivity = gEngfuncs.pfnRegisterVariable( "sensitivity", "3", FCVAR_ARCHIVE ); + sensitivity = gEngfuncs.pfnRegisterVariable( "sensitivity", "3", FCVAR_ARCHIVE | FCVAR_FILTERSTUFFTEXT ); in_joystick = gEngfuncs.pfnRegisterVariable( "joystick", "0", FCVAR_ARCHIVE ); cl_laddermode = gEngfuncs.pfnRegisterVariable( "cl_laddermode", "2", FCVAR_ARCHIVE ); ac_forwardmove = ac_sidemove = rel_yaw = rel_pitch = 0; diff --git a/cl_dll/menu.cpp b/cl_dll/menu.cpp index 45147e78e4..3332a509b0 100644 --- a/cl_dll/menu.cpp +++ b/cl_dll/menu.cpp @@ -87,6 +87,11 @@ int CHudMenu::Draw( float flTime ) return 1; #endif + SCREENINFO screenInfo; + + screenInfo.iSize = sizeof( SCREENINFO ); + gEngfuncs.pfnGetScreenInfo( &screenInfo ); + // draw the menu, along the left-hand side of the screen // count the number of newlines int nlc = 0; @@ -96,15 +101,17 @@ int CHudMenu::Draw( float flTime ) nlc++; } + int nFontHeight = Q_max(12, screenInfo.iCharHeight); + // center it - int y = ( ScreenHeight / 2 ) - ( ( nlc / 2 ) * 12 ) - 40; // make sure it is above the say text + int y = ( ScreenHeight / 2 ) - ( ( nlc / 2 ) * nFontHeight ) - (3 * nFontHeight + nFontHeight / 3); // make sure it is above the say text int x = 20; i = 0; while( i < MAX_MENU_STRING && g_szMenuString[i] != '\0' ) { gHUD.DrawHudString( x, y, 320, g_szMenuString + i, 255, 255, 255 ); - y += 12; + y += nFontHeight; while( i < MAX_MENU_STRING && g_szMenuString[i] != '\0' && g_szMenuString[i] != '\n' ) i++; diff --git a/cl_dll/vgui_SpectatorPanel.cpp b/cl_dll/vgui_SpectatorPanel.cpp index 2d78b93280..df04a0cc57 100644 --- a/cl_dll/vgui_SpectatorPanel.cpp +++ b/cl_dll/vgui_SpectatorPanel.cpp @@ -37,11 +37,11 @@ extern "C" void DLLEXPORT HUD_ChatInputPosition( int *x, int *y ) { if ( gHUD.m_Spectator.m_pip->value == INSET_OFF ) { - *y = YRES( PANEL_HEIGHT ); + *y = YRES_HD( PANEL_HEIGHT ); } else { - *y = YRES( gHUD.m_Spectator.m_OverviewData.insetWindowHeight + 5 ); + *y = YRES_HD( gHUD.m_Spectator.m_OverviewData.insetWindowHeight + 5 ); } } } @@ -101,15 +101,15 @@ void SpectatorPanel::Initialize() SchemeHandle_t hSmallScheme = pSchemes->getSchemeHandle( "Team Info Text" ); - m_TopBorder = new CTransparentPanel( 64, 0, 0, ScreenWidth, YRES( PANEL_HEIGHT ) ); + m_TopBorder = new CTransparentPanel( 64, 0, 0, ScreenWidth, YRES_HD( PANEL_HEIGHT ) ); m_TopBorder->setParent( this ); - m_BottomBorder = new CTransparentPanel( 64, 0, ScreenHeight - YRES( 32 ), ScreenWidth, YRES( PANEL_HEIGHT ) ); + m_BottomBorder = new CTransparentPanel( 64, 0, ScreenHeight - YRES_HD( PANEL_HEIGHT ), ScreenWidth, YRES_HD( PANEL_HEIGHT ) ); m_BottomBorder->setParent( this ); setPaintBackgroundEnabled( false ); - m_ExtraInfo = new Label( "Extra Info", 0, 0, wide, YRES( PANEL_HEIGHT ) ); + m_ExtraInfo = new Label( "Extra Info", 0, 0, wide, YRES_HD( PANEL_HEIGHT ) ); m_ExtraInfo->setParent( m_TopBorder ); m_ExtraInfo->setFont( pSchemes->getFont( hSmallScheme ) ); @@ -120,24 +120,24 @@ void SpectatorPanel::Initialize() m_TimerImage = new CImageLabel( "timer", 0, 0, 14, 14 ); m_TimerImage->setParent( m_TopBorder ); - m_TopBanner = new CImageLabel( "banner", 0, 0, XRES( BANNER_WIDTH ), YRES( BANNER_HEIGHT ) ); + m_TopBanner = new CImageLabel( "banner", 0, 0, XRES_HD( BANNER_WIDTH ), YRES_HD( BANNER_HEIGHT ) ); m_TopBanner->setParent( this ); - m_CurrentTime = new Label( "00:00", 0, 0, wide, YRES( PANEL_HEIGHT ) ); + m_CurrentTime = new Label( "00:00", 0, 0, wide, YRES_HD( PANEL_HEIGHT ) ); m_CurrentTime->setParent( m_TopBorder ); m_CurrentTime->setFont( pSchemes->getFont( hSmallScheme ) ); m_CurrentTime->setPaintBackgroundEnabled( false ); m_CurrentTime->setFgColor( 143, 143, 54, 0 ); m_CurrentTime->setContentAlignment( vgui::Label::a_west ); - m_Separator = new Panel( 0, 0, XRES( 64 ), YRES( 96 ) ); + m_Separator = new Panel( 0, 0, XRES_HD( 64 ), YRES_HD( 96 ) ); m_Separator->setParent( m_TopBorder ); m_Separator->setFgColor( 59, 58, 34, 48 ); m_Separator->setBgColor( 59, 58, 34, 48 ); for( int j = 0; j < TEAM_NUMBER; j++ ) { - m_TeamScores[j] = new Label( " ", 0, 0, wide, YRES( PANEL_HEIGHT ) ); + m_TeamScores[j] = new Label( " ", 0, 0, wide, YRES_HD( PANEL_HEIGHT ) ); m_TeamScores[j]->setParent( m_TopBorder ); m_TeamScores[j]->setFont( pSchemes->getFont( hSmallScheme ) ); m_TeamScores[j]->setPaintBackgroundEnabled( false ); @@ -147,8 +147,8 @@ void SpectatorPanel::Initialize() } // Initialize command buttons. -// m_OptionButton = new ColorButton( CHudTextMessage::BufferedLocaliseTextString( "#SPECT_OPTIONS" ), XRES(15), YRES(6), XRES(OPTIONS_BUTTON_X), YRES(20), false, false ); - m_OptionButton = new DropDownButton( CHudTextMessage::BufferedLocaliseTextString( "#SPECT_OPTIONS" ), XRES(15), YRES(6), XRES(OPTIONS_BUTTON_X), YRES(20), false, false ); +// m_OptionButton = new ColorButton( CHudTextMessage::BufferedLocaliseTextString( "#SPECT_OPTIONS" ), XRES_HD(15), YRES_HD(6), XRES_HD(OPTIONS_BUTTON_X), YRES_HD(20), false, false ); + m_OptionButton = new DropDownButton( CHudTextMessage::BufferedLocaliseTextString( "#SPECT_OPTIONS" ), XRES_HD(15), YRES_HD(6), XRES_HD(OPTIONS_BUTTON_X), YRES_HD(20), false, false ); m_OptionButton->setParent( m_BottomBorder ); m_OptionButton->setContentAlignment( vgui::Label::a_center ); m_OptionButton->setBoundKey( (char)255 ); // special no bound to avoid leading spaces in name @@ -158,7 +158,7 @@ void SpectatorPanel::Initialize() m_OptionButton->setUnArmedColor( 143, 143, 54, 0 ); m_OptionButton->setArmedColor( 194, 202, 54, 0 ); - m_CamButton = new DropDownButton( CHudTextMessage::BufferedLocaliseTextString( "#CAM_OPTIONS" ), ScreenWidth - ( XRES ( CAMOPTIONS_BUTTON_X ) + 15 ), YRES(6), XRES ( CAMOPTIONS_BUTTON_X ), YRES(20), false, false ); + m_CamButton = new DropDownButton( CHudTextMessage::BufferedLocaliseTextString( "#CAM_OPTIONS" ), ScreenWidth - ( XRES_HD( CAMOPTIONS_BUTTON_X ) + 15 ), YRES_HD(6), XRES_HD ( CAMOPTIONS_BUTTON_X ), YRES_HD(20), false, false ); m_CamButton->setParent( m_BottomBorder ); m_CamButton->setContentAlignment( vgui::Label::a_center ); m_CamButton->setBoundKey( (char)255 ); // special no bound to avoid leading spaces in name @@ -168,8 +168,8 @@ void SpectatorPanel::Initialize() m_CamButton->setUnArmedColor( 143, 143, 54, 0 ); m_CamButton->setArmedColor( 194, 202, 54, 0 ); -// m_PrevPlayerButton= new ColorButton("<", XRES( 15 + OPTIONS_BUTTON_X + 15 ), YRES(6), XRES(24), YRES(20), false, false ); - m_PrevPlayerButton= new CImageButton("arrowleft", XRES( 15 + OPTIONS_BUTTON_X + 15 ), YRES(6), XRES(24), YRES(20), false, false ); +// m_PrevPlayerButton= new ColorButton("<", XRES_HD( 15 + OPTIONS_BUTTON_X + 15 ), YRES_HD(6), XRES_HD(24), YRES_HD(20), false, false ); + m_PrevPlayerButton= new CImageButton("arrowleft", XRES_HD( 15 + OPTIONS_BUTTON_X + 15 ), YRES_HD(6), XRES_HD(24), YRES_HD(20), false, false ); m_PrevPlayerButton->setParent( m_BottomBorder ); m_PrevPlayerButton->setContentAlignment( vgui::Label::a_center ); m_PrevPlayerButton->setBoundKey( (char)255 ); // special no bound to avoid leading spaces in name @@ -179,8 +179,8 @@ void SpectatorPanel::Initialize() m_PrevPlayerButton->setUnArmedColor( 143, 143, 54, 0 ); m_PrevPlayerButton->setArmedColor( 194, 202, 54, 0 ); -// m_NextPlayerButton= new ColorButton(">", (ScreenWidth - (XRES ( CAMOPTIONS_BUTTON_X ) + 15)) - XRES ( 24 + 15 ), YRES(6), XRES(24), YRES(20),false, false ); - m_NextPlayerButton= new CImageButton("arrowright", (ScreenWidth - (XRES ( CAMOPTIONS_BUTTON_X ) + 15)) - XRES ( 24 + 15 ), YRES(6), XRES(24), YRES(20),false, false ); +// m_NextPlayerButton= new ColorButton(">", (ScreenWidth - (XRES_HD ( CAMOPTIONS_BUTTON_X ) + 15)) - XRES_HD ( 24 + 15 ), YRES_HD(6), XRES_HD(24), YRES_HD(20),false, false ); + m_NextPlayerButton= new CImageButton("arrowright", (ScreenWidth - (XRES_HD ( CAMOPTIONS_BUTTON_X ) + 15)) - XRES_HD ( 24 + 15 ), YRES_HD(6), XRES_HD(24), YRES_HD(20),false, false ); m_NextPlayerButton->setParent( m_BottomBorder ); m_NextPlayerButton->setContentAlignment( vgui::Label::a_center ); m_NextPlayerButton->setBoundKey( (char)255 ); // special no bound to avoid leading spaces in name @@ -191,10 +191,10 @@ void SpectatorPanel::Initialize() m_NextPlayerButton->setArmedColor( 194, 202, 54, 0 ); // Initialize the bottom title. - float flLabelSize = ( ( ScreenWidth - ( XRES ( CAMOPTIONS_BUTTON_X ) + 15 ) ) - XRES( 24 + 15 ) ) - XRES( ( 15 + OPTIONS_BUTTON_X + 15 ) + 38 ); + float flLabelSize = ( ( ScreenWidth - ( XRES_HD ( CAMOPTIONS_BUTTON_X ) + 15 ) ) - XRES_HD( 24 + 15 ) ) - XRES_HD( ( 15 + OPTIONS_BUTTON_X + 15 ) + 38 ); m_BottomMainButton = new DropDownButton("Spectator Bottom", - XRES( ( 15 + OPTIONS_BUTTON_X + 15 ) + 31 ), YRES(6), flLabelSize, YRES(20), + XRES_HD( ( 15 + OPTIONS_BUTTON_X + 15 ) + 31 ), YRES_HD(6), flLabelSize, YRES_HD(20), false, false ); m_BottomMainButton->setParent(m_BottomBorder); @@ -211,7 +211,7 @@ void SpectatorPanel::Initialize() m_BottomMainLabel = new Label("Spectator Bottom", - XRES( ( 15 + OPTIONS_BUTTON_X + 15 ) + 31 ), YRES(6), flLabelSize, YRES(20)); + XRES_HD( ( 15 + OPTIONS_BUTTON_X + 15 ) + 31 ), YRES_HD(6), flLabelSize, YRES_HD(20)); m_BottomMainLabel->setParent( m_BottomBorder ); m_BottomMainLabel->setPaintBackgroundEnabled( false ); @@ -220,7 +220,7 @@ void SpectatorPanel::Initialize() m_BottomMainLabel->setBorder( NULL ); m_BottomMainLabel->setVisible(false); - m_InsetViewButton = new ColorButton( "", XRES( 2 ), YRES( 2 ), XRES( 240 ), YRES( 180 ), false, false ); + m_InsetViewButton = new ColorButton( "", XRES_HD( 2 ), YRES_HD( 2 ), XRES_HD( 240 ), YRES_HD( 180 ), false, false ); m_InsetViewButton->setParent( this ); m_InsetViewButton->setBoundKey( (char)255 ); m_InsetViewButton->addActionSignal( new CSpectatorHandler_Command( this, SPECTATOR_PANEL_CMD_TOGGLE_INSET ) ); @@ -257,11 +257,11 @@ void SpectatorPanel::ShowMenu( bool isVisible ) m_BottomMainButton->setVisible(false); m_BottomMainLabel->getSize( iLabelSizeX, iLabelSizeY ); - m_BottomMainLabel->setPos( ( ScreenWidth / 2 ) - ( iLabelSizeX / 2 ), YRES( 6 ) ); + m_BottomMainLabel->setPos( ( ScreenWidth / 2 ) - ( iLabelSizeX / 2 ), YRES_HD( 6 ) ); } else { - m_BottomMainButton->setPos( XRES( ( 15 + OPTIONS_BUTTON_X + 15 ) + 31 ), YRES(6) ); + m_BottomMainButton->setPos( XRES_HD( ( 15 + OPTIONS_BUTTON_X + 15 ) + 31 ), YRES_HD(6) ); m_BottomMainLabel->setVisible(false); m_BottomMainButton->setVisible(true); } @@ -328,18 +328,18 @@ void SpectatorPanel::EnableInsetView(bool isEnabled) if( isEnabled ) { // short black bar to see full inset - m_TopBorder->setBounds( XRES( offset ), 0, XRES(640 - offset ), YRES( PANEL_HEIGHT ) ); + m_TopBorder->setBounds( XRES_HD( offset ), 0, XRES_HD(640 - offset ), YRES_HD( PANEL_HEIGHT ) ); if( gEngfuncs.IsSpectateOnly() ) { m_TopBanner->setVisible( true ); - m_TopBanner->setPos( XRES( offset ), 0 ); + m_TopBanner->setPos( XRES_HD( offset ), 0 ); } else m_TopBanner->setVisible( false ); - m_InsetViewButton->setBounds( XRES( x -1 ), YRES( y ), - XRES( wide +2), YRES( tall ) ); + m_InsetViewButton->setBounds( XRES_HD( x -1 ), YRES_HD( y ), + XRES_HD( wide +2), YRES_HD( tall ) ); m_InsetViewButton->setVisible( true ); } else @@ -354,7 +354,7 @@ void SpectatorPanel::EnableInsetView(bool isEnabled) else m_TopBanner->setVisible( false ); - m_TopBorder->setBounds( 0, 0, ScreenWidth, YRES( PANEL_HEIGHT ) ); + m_TopBorder->setBounds( 0, 0, ScreenWidth, YRES_HD( PANEL_HEIGHT ) ); m_InsetViewButton->setVisible( false ); } @@ -393,28 +393,28 @@ void SpectatorPanel::Update() m_ExtraInfo->getTextSize( iTextWidth, iTextHeight ); m_CurrentTime->getTextSize( iTimeWidth, iTimeHeight ); - iTimeWidth += XRES ( SEPERATOR_WIDTH*2 + 1 ); // +timer icon + iTimeWidth += XRES_HD ( SEPERATOR_WIDTH*2 + 1 ); // +timer icon iTimeWidth += ( SEPERATOR_WIDTH-(iTimeWidth%SEPERATOR_WIDTH) ); if( iTimeWidth > iTextWidth ) iTextWidth = iTimeWidth; - int xPos = ScreenWidth - ( iTextWidth + XRES ( SEPERATOR_WIDTH + offset ) ); + int xPos = ScreenWidth - ( iTextWidth + XRES_HD ( SEPERATOR_WIDTH + offset ) ); - m_ExtraInfo->setBounds( xPos, YRES( SEPERATOR_HEIGHT ), iTextWidth, iTextHeight ); + m_ExtraInfo->setBounds( xPos, YRES_HD( SEPERATOR_HEIGHT ), iTextWidth, iTextHeight ); - m_TimerImage->setBounds( xPos, YRES( SEPERATOR_HEIGHT ) + iTextHeight , XRES(SEPERATOR_WIDTH*2 + 1), YRES(SEPERATOR_HEIGHT + 1) ); + m_TimerImage->setBounds( xPos, YRES_HD( SEPERATOR_HEIGHT ) + iTextHeight , XRES_HD(SEPERATOR_WIDTH*2 + 1), YRES_HD(SEPERATOR_HEIGHT + 1) ); - m_CurrentTime->setBounds( xPos + XRES ( SEPERATOR_WIDTH*2 + 1 ), YRES( SEPERATOR_HEIGHT ) + iTextHeight , iTimeWidth, iTimeHeight ); + m_CurrentTime->setBounds( xPos + XRES_HD ( SEPERATOR_WIDTH*2 + 1 ), YRES_HD( SEPERATOR_HEIGHT ) + iTextHeight , iTimeWidth, iTimeHeight ); - m_Separator->setPos( ScreenWidth - ( iTextWidth + XRES ( 2*SEPERATOR_WIDTH+SEPERATOR_WIDTH/2+offset ) ) , YRES( 5 ) ); - m_Separator->setSize( XRES( 1 ), PANEL_HEIGHT - 10 ); + m_Separator->setPos( ScreenWidth - ( iTextWidth + XRES_HD ( 2*SEPERATOR_WIDTH+SEPERATOR_WIDTH/2+offset ) ) , YRES_HD( 5 ) ); + m_Separator->setSize( XRES_HD( 1 ), PANEL_HEIGHT - 10 ); for( j = 0; j < TEAM_NUMBER; j++ ) { int iwidth, iheight; m_TeamScores[j]->getTextSize( iwidth, iheight ); - m_TeamScores[j]->setBounds( ScreenWidth - ( iTextWidth + XRES ( 2*SEPERATOR_WIDTH+2*SEPERATOR_WIDTH/2+offset ) + iwidth ), YRES( SEPERATOR_HEIGHT ) + ( iheight * j ), iwidth, iheight ); + m_TeamScores[j]->setBounds( ScreenWidth - ( iTextWidth + XRES_HD ( 2*SEPERATOR_WIDTH+2*SEPERATOR_WIDTH/2+offset ) + iwidth ), YRES_HD( SEPERATOR_HEIGHT ) + ( iheight * j ), iwidth, iheight ); } } diff --git a/cl_dll/view.cpp b/cl_dll/view.cpp index 4138929640..bdaaab340d 100644 --- a/cl_dll/view.cpp +++ b/cl_dll/view.cpp @@ -1496,10 +1496,10 @@ void V_CalcSpectatorRefdef( struct ref_params_s * pparams ) { // second renderer cycle, inset window // set inset parameters - pparams->viewport[0] = XRES( gHUD.m_Spectator.m_OverviewData.insetWindowX ); // change viewport to inset window - pparams->viewport[1] = YRES( gHUD.m_Spectator.m_OverviewData.insetWindowY ); - pparams->viewport[2] = XRES( gHUD.m_Spectator.m_OverviewData.insetWindowWidth ); - pparams->viewport[3] = YRES( gHUD.m_Spectator.m_OverviewData.insetWindowHeight ); + pparams->viewport[0] = XRES_HD( gHUD.m_Spectator.m_OverviewData.insetWindowX ); // change viewport to inset window + pparams->viewport[1] = YRES_HD( gHUD.m_Spectator.m_OverviewData.insetWindowY ); + pparams->viewport[2] = XRES_HD( gHUD.m_Spectator.m_OverviewData.insetWindowWidth ); + pparams->viewport[3] = YRES_HD( gHUD.m_Spectator.m_OverviewData.insetWindowHeight ); pparams->nextView = 0; // on further view // override some settings in certain modes @@ -1611,7 +1611,7 @@ void V_Init( void ) v_centerspeed = gEngfuncs.pfnRegisterVariable( "v_centerspeed","500", 0 ); cl_bobcycle = gEngfuncs.pfnRegisterVariable( "cl_bobcycle","0.8", 0 );// best default for my experimental gun wag (sjb) - cl_bob = gEngfuncs.pfnRegisterVariable( "cl_bob","0.01", 0 );// best default for my experimental gun wag (sjb) + cl_bob = gEngfuncs.pfnRegisterVariable( "cl_bob","0.01", FCVAR_ARCHIVE );// best default for my experimental gun wag (sjb) cl_bobup = gEngfuncs.pfnRegisterVariable( "cl_bobup","0.5", 0 ); cl_waterdist = gEngfuncs.pfnRegisterVariable( "cl_waterdist","4", 0 ); cl_chasedist = gEngfuncs.pfnRegisterVariable( "cl_chasedist","112", 0 ); diff --git a/common/cvardef.h b/common/cvardef.h index 1d55f7ca89..4ab46a5057 100644 --- a/common/cvardef.h +++ b/common/cvardef.h @@ -26,6 +26,10 @@ #define FCVAR_PRINTABLEONLY (1<<7) // This cvar's string cannot contain unprintable characters ( e.g., used for player name etc ). #define FCVAR_UNLOGGED (1<<8) // If this is a FCVAR_SERVER, don't log changes to the log file / console if we are creating a log #define FCVAR_NOEXTRAWHITEPACE (1<<9) // strip trailing/leading white space from this cvar +#define FCVAR_PRIVILEGED (1<<10) // Not queryable/settable by unprivileged sources +#define FCVAR_FILTERSTUFFTEXT (1<<11) // Not queryable/settable if unprivileged and filterstufftext is enabled +#define FCVAR_FILTERCHARS (1<<12) // This cvar's string will be filtered for 'bad' characters (e.g. ';', '\n') +#define FCVAR_NOBADPATHS (1<<13) // This cvar's string cannot contain file paths that are above the current directory typedef struct cvar_s { diff --git a/dlls/game.cpp b/dlls/game.cpp index 140728fb64..6fc752f169 100644 --- a/dlls/game.cpp +++ b/dlls/game.cpp @@ -57,10 +57,11 @@ cvar_t multibyte_only = { "mp_multibyte_only", "0", FCVAR_SERVER }; cvar_t mp_chattime = { "mp_chattime","10", FCVAR_SERVER }; // Engine Cvars -cvar_t *g_psv_gravity = NULL; -cvar_t *g_psv_aim = NULL; -cvar_t *g_footsteps = NULL; -cvar_t *g_enable_cheats = NULL; +cvar_t *g_psv_gravity; +cvar_t *g_psv_aim; +cvar_t *g_psv_allow_autoaim; +cvar_t *g_footsteps; +cvar_t *g_enable_cheats; cvar_t *g_psv_developer; @@ -468,6 +469,7 @@ void GameDLLInit( void ) { g_psv_gravity = CVAR_GET_POINTER( "sv_gravity" ); g_psv_aim = CVAR_GET_POINTER( "sv_aim" ); + g_psv_allow_autoaim = CVAR_GET_POINTER( "sv_allow_autoaim" ); g_footsteps = CVAR_GET_POINTER( "mp_footsteps" ); g_psv_developer = CVAR_GET_POINTER( "developer" ); diff --git a/dlls/game.h b/dlls/game.h index 8a0f6d3425..bb8449061c 100644 --- a/dlls/game.h +++ b/dlls/game.h @@ -49,6 +49,7 @@ extern cvar_t sv_busters; // Engine Cvars extern cvar_t *g_psv_gravity; extern cvar_t *g_psv_aim; +extern cvar_t *g_psv_allow_autoaim; extern cvar_t *g_footsteps; extern cvar_t *g_enable_cheats; diff --git a/dlls/multiplay_gamerules.cpp b/dlls/multiplay_gamerules.cpp index f1de0ffbb2..d7d3f1ad8d 100644 --- a/dlls/multiplay_gamerules.cpp +++ b/dlls/multiplay_gamerules.cpp @@ -1306,7 +1306,8 @@ int ReloadMapCycleFile( const char *filename, mapcycle_t *cycle ) if( com_token[0] == '\0' ) break; - strcpy( szMap, com_token ); + strncpy( szMap, com_token, sizeof( szMap ) - 1 ); + szMap[sizeof( szMap ) - 1] = '\0'; // Any more tokens on this line? if( COM_TokenWaiting( pFileList ) ) @@ -1316,7 +1317,8 @@ int ReloadMapCycleFile( const char *filename, mapcycle_t *cycle ) if( com_token[0] != '\0' ) { hasbuffer = 1; - strcpy( szBuffer, com_token ); + strncpy( szBuffer, com_token, sizeof( szBuffer ) - 1 ); + szBuffer[sizeof( szBuffer ) - 1] = '\0'; } } diff --git a/dlls/nodes.cpp b/dlls/nodes.cpp index 42ff240496..28fc7144f7 100644 --- a/dlls/nodes.cpp +++ b/dlls/nodes.cpp @@ -1587,7 +1587,7 @@ void CNodeEnt::Spawn( void ) if( WorldGraph.m_cNodes >= MAX_NODES ) { - ALERT( at_aiconsole, "cNodes > MAX_NODES\n" ); + ALERT( at_aiconsole, "cNodes >= MAX_NODES\n" ); return; } diff --git a/dlls/nodes.h b/dlls/nodes.h index cb19aeb844..becfd07bc8 100644 --- a/dlls/nodes.h +++ b/dlls/nodes.h @@ -216,7 +216,7 @@ class CGraph inline CNode &Node( int i ) { #if _DEBUG - if ( !m_pNodes || i < 0 || i > m_cNodes ) + if ( !m_pNodes || i < 0 || i >= m_cNodes ) ALERT( at_error, "Bad Node!\n" ); #endif return m_pNodes[i]; @@ -225,7 +225,7 @@ class CGraph inline CLink &Link( int i ) { #if _DEBUG - if ( !m_pLinkPool || i < 0 || i > m_cLinks ) + if ( !m_pLinkPool || i < 0 || i >= m_cLinks ) ALERT( at_error, "Bad link!\n" ); #endif return m_pLinkPool[i]; diff --git a/dlls/player.cpp b/dlls/player.cpp index 034a2cf564..7664d34d53 100644 --- a/dlls/player.cpp +++ b/dlls/player.cpp @@ -2815,7 +2815,7 @@ edict_t *EntSelectSpawnPoint( CBaseEntity *pPlayer ) nNumRandomSpawnsToTry = 0; CBaseEntity* pEnt = 0; - while( ( pEnt = UTIL_FindEntityByClassname( 0, "info_player_deathmatch" ))) + while( ( pEnt = UTIL_FindEntityByClassname( pEnt, "info_player_deathmatch" ))) nNumRandomSpawnsToTry++; } @@ -4362,7 +4362,7 @@ Vector CBasePlayer::GetAutoaimVector( float flDelta ) // m_vecAutoAim = m_vecAutoAim * 0.99; // Don't send across network if sv_aim is 0 - if( g_psv_aim->value != 0 ) + if( g_psv_aim->value && g_psv_allow_autoaim && g_psv_allow_autoaim->value ) { if( m_vecAutoAim.x != m_lastx || m_vecAutoAim.y != m_lasty ) { @@ -4388,7 +4388,7 @@ Vector CBasePlayer::AutoaimDeflection( Vector &vecSrc, float flDist, float flDel edict_t *bestent; TraceResult tr; - if( g_psv_aim->value == 0 ) + if( !( g_psv_aim->value && g_psv_allow_autoaim && g_psv_allow_autoaim->value )) { m_fOnTarget = FALSE; return g_vecZero; diff --git a/dlls/scripted.cpp b/dlls/scripted.cpp index 9071eebb2a..fa3e6ef704 100644 --- a/dlls/scripted.cpp +++ b/dlls/scripted.cpp @@ -1064,7 +1064,6 @@ void CScriptedSentence::DelayThink( void ) BOOL CScriptedSentence::AcceptableSpeaker( CBaseToggle *pTarget ) { - CBaseMonster *pMonster; EHANDLE hTarget; if( pTarget ) @@ -1073,7 +1072,7 @@ BOOL CScriptedSentence::AcceptableSpeaker( CBaseToggle *pTarget ) if( hTarget != 0 ) { - CBaseMonster *pMonster = (CBaseMonster*)( (CBaseEntity*)hTarget ); + CBaseMonster* pMonster = (CBaseMonster*)( (CBaseEntity*)hTarget ); if( pev->spawnflags & SF_SENTENCE_FOLLOWERS ) { if( pMonster->m_hTargetEnt == 0 || !pMonster->m_hTargetEnt->IsPlayer() )