Simplified a whole bunch of GUI stuff

Basic, albeit mathematically lame angle correction for p_ weapons
This commit is contained in:
Marco Cawthorne 2017-06-26 11:12:16 +02:00
parent 79fa38562a
commit f19f73ffc8
16 changed files with 123 additions and 169 deletions

View file

@ -63,8 +63,8 @@ void CSQC_DrawChat( void ) {
}
for ( int i = 0; i < CHAT_LINES; i++ ) {
drawstring( vChatPos + '1 1', sMSGBuffer[ i ], '8 8 0', '0 0 0', VGUI_WINDOW_FGALPHA, 0 );
drawstring( vChatPos, sMSGBuffer[ i ], '8 8 0', vHUDColor, 1, DRAWFLAG_ADDITIVE );
drawstring( vChatPos + '1 1', sMSGBuffer[ i ], '8 8', '0 0 0', VGUI_WINDOW_FGALPHA, 0 );
drawstring( vChatPos, sMSGBuffer[ i ], '8 8', vHUDColor, 1, DRAWFLAG_ADDITIVE );
vChatPos_y += 12;
}
}
@ -101,8 +101,8 @@ void CSQC_DrawCenterprint( void ) {
vCenterPrintPos_y = ( vVideoResolution_y / 2 ) - ( fCenterPrintLines - 4 );
for ( int i = 0; i < ( fCenterPrintLines ); i++ ) {
vCenterPrintPos_x = ( vVideoResolution_x / 2 ) - ( stringwidth( sCenterPrintBuffer[ i ], FALSE ) / 2 );
drawstring( vCenterPrintPos + '1 1', sCenterPrintBuffer[ i ], '8 8 0', '0 0 0', fCenterPrintAlpha, 0 );
drawstring( vCenterPrintPos, sCenterPrintBuffer[ i ], '8 8 0', vHUDColor, fCenterPrintAlpha, DRAWFLAG_ADDITIVE );
drawstring( vCenterPrintPos + '1 1', sCenterPrintBuffer[ i ], '8 8', '0 0 0', fCenterPrintAlpha, 0 );
drawstring( vCenterPrintPos, sCenterPrintBuffer[ i ], '8 8', vHUDColor, fCenterPrintAlpha, DRAWFLAG_ADDITIVE );
vCenterPrintPos_y += 8;
}
}

View file

@ -293,14 +293,14 @@ void HUD_DrawMoney( void ) {
// If the alpha/color effect is active, draw the money twice in their varying alphas/colors
if ( fMoneyAlphaEffect > 0 ) {
fMoneyAlphaEffect -= frametime * 0.5;
drawsubpic( vMoneyPos, '18 25 0', HUD_NUMFILE_LAYER, [ NUMSIZE_X * 8, NUMSIZE_Y * 1], [ NUMSIZE_X * 0.75, NUMSIZE_Y ], vMoneyColorEffect, fMoneyAlphaEffect, DRAWFLAG_ADDITIVE );
drawsubpic( vMoneyPos, '18 25 0', HUD_NUMFILE_LAYER, [ NUMSIZE_X * 8, NUMSIZE_Y * 1], [ NUMSIZE_X * 0.75, NUMSIZE_Y ], vHUDColor, HUD_ALPHA - ( fMoneyAlphaEffect * 0.5 ), DRAWFLAG_ADDITIVE );
drawsubpic( vMoneyPos, '18 25', HUD_NUMFILE_LAYER, [ NUMSIZE_X * 8, NUMSIZE_Y * 1], [ NUMSIZE_X * 0.75, NUMSIZE_Y ], vMoneyColorEffect, fMoneyAlphaEffect, DRAWFLAG_ADDITIVE );
drawsubpic( vMoneyPos, '18 25', HUD_NUMFILE_LAYER, [ NUMSIZE_X * 8, NUMSIZE_Y * 1], [ NUMSIZE_X * 0.75, NUMSIZE_Y ], vHUDColor, HUD_ALPHA - ( fMoneyAlphaEffect * 0.5 ), DRAWFLAG_ADDITIVE );
// Draw the +/- symbols depending on whether or not we made or lost money
if ( fMoneyDifference < 0 ) {
drawsubpic( vMoneyPos + '0 -32 0', '18 23 0', HUD_NUMFILE_LAYER, [ 0.8671875, 0.09765625], [ 0.0703125, 0.08984375 ], vMoneyColorEffect, fMoneyAlphaEffect, DRAWFLAG_ADDITIVE );
drawsubpic( vMoneyPos + '0 -32 0', '18 23', HUD_NUMFILE_LAYER, [ 0.8671875, 0.09765625], [ 0.0703125, 0.08984375 ], vMoneyColorEffect, fMoneyAlphaEffect, DRAWFLAG_ADDITIVE );
} else {
drawsubpic( vMoneyPos + '0 -32 0', '13 23 0', HUD_NUMFILE_LAYER, [ 0.8203125, 0.09765625], [ 0.05078125, 0.08984375 ], vMoneyColorEffect, fMoneyAlphaEffect, DRAWFLAG_ADDITIVE );
drawsubpic( vMoneyPos + '0 -32 0', '13 23', HUD_NUMFILE_LAYER, [ 0.8203125, 0.09765625], [ 0.05078125, 0.08984375 ], vMoneyColorEffect, fMoneyAlphaEffect, DRAWFLAG_ADDITIVE );
}
// Shift the numbers for reverse drawing
@ -348,13 +348,13 @@ void HUD_DrawAmmo( void ) {
vector vAmmoMagPos = [ vVideoResolution_x - 142, vVideoResolution_y - 42 ];
HUD_DrawNums( getstatf( STAT_CURRENT_MAG ), vAmmoMagPos, fAmmoAlpha, vHUDColor );
drawsubpic( [vVideoResolution_x - 118, vVideoResolution_y - 42], '3 25 0', HUD_NUMFILE_LAYER, [0.9375, 0], [ 0.01171875, 0.09765625 ], vHUDColor, fAmmoAlpha, DRAWFLAG_ADDITIVE );
drawsubpic( [vVideoResolution_x - 118, vVideoResolution_y - 42], '3 25', HUD_NUMFILE_LAYER, [0.9375, 0], [ 0.01171875, 0.09765625 ], vHUDColor, fAmmoAlpha, DRAWFLAG_ADDITIVE );
vector vAmmoCalPos = [ vVideoResolution_x - 64, vVideoResolution_y - 42 ];
HUD_DrawNums( getstatf( STAT_CURRENT_CALIBER ), vAmmoCalPos, fAmmoAlpha, vHUDColor );
// Caliber icon
drawsubpic( vVideoResolution - '42 42 0', '24 24 0', HUD_NUMFILE_LAYER, vHUDCalPos[ wptTable[ getstatf( STAT_ACTIVEWEAPON ) ].iCaliber ], [ NUMSIZE_X, NUMSIZE_X ], vHUDColor, fAmmoAlpha, DRAWFLAG_ADDITIVE );
drawsubpic( vVideoResolution - '42 42', '24 24', HUD_NUMFILE_LAYER, vHUDCalPos[ wptTable[ getstatf( STAT_ACTIVEWEAPON ) ].iCaliber ], [ NUMSIZE_X, NUMSIZE_X ], vHUDColor, fAmmoAlpha, DRAWFLAG_ADDITIVE );
fOldMag = getstatf( STAT_CURRENT_MAG );
fOldCal = getstatf( STAT_CURRENT_CALIBER );
}
@ -362,7 +362,6 @@ void HUD_DrawAmmo( void ) {
void HUD_DrawProgressBar( void ) {
vector vSize = '540 16';
vector vMainPos;
vector v1, v2, v3;
if ( getstatf( STAT_PROGRESS ) > 0 ) {
vMainPos_x = ( vVideoResolution_x / 2 ) - (vSize_x / 2);
@ -370,23 +369,15 @@ void HUD_DrawProgressBar( void ) {
// Draw the background
vector vBar = vSize;
vBar_x = 536 * getstatf( STAT_PROGRESS );
vBar_y = 13;
drawfill( vMainPos + '1 1 0', vBar, vHUDColor, 1, DRAWFLAG_ADDITIVE );
// Draw the outline START
v1_x = vMainPos_x + vSize_x;
v1_y = vMainPos_y;
drawline( 1.0, vMainPos - '1 0 0', v1, vHUDColor, 1, DRAWFLAG_ADDITIVE );
v2_x = vMainPos_x;
v2_y = vMainPos_y + vSize_y;
drawline( 1.0, vMainPos, v2, vHUDColor, 1, DRAWFLAG_ADDITIVE );
vBar_x = 538 * getstatf( STAT_PROGRESS );
vBar_y = 14;
drawfill( vMainPos + '1 1', vBar, vHUDColor, 1, DRAWFLAG_ADDITIVE );
v3 = vMainPos + vSize;
drawline( 1.0, v1, v3, vHUDColor, 1, DRAWFLAG_ADDITIVE );
drawline( 1.0, v2, v3, vHUDColor, 1, DRAWFLAG_ADDITIVE );
// Draw the outline END
drawfill( vMainPos, [vSize_x, 1], vHUDColor, 1.0f ); // Top
drawfill( [vMainPos_x, vMainPos_y + vSize_y], [vSize_x, 1], vHUDColor, 1.0f ); // Bottom
drawfill( vMainPos, [1, vSize_y], vHUDColor, 1.0f ); // Left
drawfill( [vMainPos_x + vSize_x, vMainPos_y], [1, vSize_y + 1], vHUDColor, 1.0f ); // Right
}
}

View file

@ -102,15 +102,15 @@ void HUD_DrawOrbituaries( void ) {
vOrbPos_x = vVideoResolution_x - ( orbBuffer[ i ].fOffset1 + orbBuffer[ i ].fOffset2 + orbBuffer[ i ].fOffset3 ) - 16;
// Draw the attacker's name, shadow first
drawstring( vOrbPos + '1 1', orbBuffer[ i ].sAttacker, '8 8 0', '0 0 0', VGUI_WINDOW_FGALPHA, 0 );
drawstring( vOrbPos, orbBuffer[ i ].sAttacker, '8 8 0', orbBuffer[ i ].vColor1, VGUI_WINDOW_FGALPHA, 0 );
drawstring( vOrbPos + '1 1', orbBuffer[ i ].sAttacker, '8 8', '0 0 0', VGUI_WINDOW_FGALPHA, 0 );
drawstring( vOrbPos, orbBuffer[ i ].sAttacker, '8 8', orbBuffer[ i ].vColor1, VGUI_WINDOW_FGALPHA, 0 );
// Draw the weapon icon
drawsubpic( vOrbPos + [ orbBuffer[ i ].fOffset1, 0 ], wpIconTable[ orbBuffer[ i ].fWeapon ].vSize * 256, wpIconTable[ orbBuffer[ i ].fWeapon ].sSprite, wpIconTable[ orbBuffer[ i ].fWeapon ].vOrigin, wpIconTable[ orbBuffer[ i ].fWeapon ].vSize, '1 0.5 0', 1, DRAWFLAG_ADDITIVE );
// Draw the victim's name, shadow first again
drawstring( vOrbPos + [ orbBuffer[ i ].fOffset2 + orbBuffer[ i ].fOffset1, 0 ] + '1 1', orbBuffer[ i ].sVictim, '8 8 0', '0 0', VGUI_WINDOW_FGALPHA, 0 );
drawstring( vOrbPos + [ orbBuffer[ i ].fOffset2 + orbBuffer[ i ].fOffset1, 0 ], orbBuffer[ i ].sVictim, '8 8 0', orbBuffer[ i ].vColor2, VGUI_WINDOW_FGALPHA, 0 );
drawstring( vOrbPos + [ orbBuffer[ i ].fOffset2 + orbBuffer[ i ].fOffset1, 0 ] + '1 1', orbBuffer[ i ].sVictim, '8 8', '0 0', VGUI_WINDOW_FGALPHA, 0 );
drawstring( vOrbPos + [ orbBuffer[ i ].fOffset2 + orbBuffer[ i ].fOffset1, 0 ], orbBuffer[ i ].sVictim, '8 8', orbBuffer[ i ].vColor2, VGUI_WINDOW_FGALPHA, 0 );
vOrbPos_y += 18;
}
}

View file

@ -144,9 +144,9 @@ void VGUI_BuyMenu_WeaponButton( float fWeapon ) {
if ( wptTable[ fWeapon ].iPrice <= getstatf( STAT_MONEY ) ) {
if ( VGUI_Button( vguiWeaponTable[ fWeapon ].sName, VGUI_BuyMenu_BuyWeapon, vVGUIButtonPos, '264 24 0' ) == TRUE ) {
drawpic( vVGUIWindowPos + '328 116', vguiWeaponTable[ fWeapon ].sImage, '256 64', '1 1 1', 1 );
VGUI_Text( sprintf( _("BUY_PRICETAG"), wptTable[ fWeapon ].iPrice ), vVGUIWindowPos + '328 250', '8 8 0', FONT_DEFAULT );
VGUI_Text( sprintf( _("BUY_CALIBER"), wptTable[ fWeapon ].iCaliber ), vVGUIWindowPos + '328 260', '8 8 0', FONT_DEFAULT );
VGUI_Text( sprintf( _("BUY_RPM"), ( wptTable[ fWeapon ].fAttackFinished) * 3600 ), vVGUIWindowPos + '328 270', '8 8 0', FONT_DEFAULT );
VGUI_Text( sprintf( _("BUY_PRICETAG"), wptTable[ fWeapon ].iPrice ), vVGUIWindowPos + '328 250', '8 8', FONT_DEFAULT );
VGUI_Text( sprintf( _("BUY_CALIBER"), wptTable[ fWeapon ].iCaliber ), vVGUIWindowPos + '328 260', '8 8', FONT_DEFAULT );
VGUI_Text( sprintf( _("BUY_RPM"), ( wptTable[ fWeapon ].fAttackFinished) * 3600 ), vVGUIWindowPos + '328 270', '8 8', FONT_DEFAULT );
}
} else {
VGUI_FakeButton( vguiWeaponTable[ fWeapon ].sName, vVGUIButtonPos, '264 24 0' );
@ -168,7 +168,7 @@ void VGUI_BuyMenu_EquipmentButton( float fID ) {
if ( eqptTable[ fID ].iPrice <= getstatf( STAT_MONEY ) ) {
if ( VGUI_Button( vguiEquipmentTable[ fID ].sName, VGUI_BuyMenu_BuyEquipment, vVGUIButtonPos, '180 24 0' ) == TRUE ) {
drawpic( vVGUIWindowPos + '290 116', vguiEquipmentTable[ fID ].sImage, '256 64', '1 1 1', 1 );
VGUI_Text( sprintf( _("BUY_PRICETAG"), eqptTable[ fID ].iPrice ) , vVGUIWindowPos + '256 250', '8 8 0', FONT_DEFAULT );
VGUI_Text( sprintf( _("BUY_PRICETAG"), eqptTable[ fID ].iPrice ) , vVGUIWindowPos + '256 250', '8 8', FONT_DEFAULT );
}
} else {
VGUI_FakeButton( vguiEquipmentTable[ fID ].sName, vVGUIButtonPos, '180 24 0' );

View file

@ -25,12 +25,12 @@ void VGUI_MessageOfTheDay( vector vPos ) {
fVGUI_Display = VGUI_TEAMSELECT;
}
VGUI_Text( serverkey( "hostname" ), vPos + '16 64 0', '16 16 0', FONT_16 );
VGUI_Text( serverkey( "hostname" ), vPos + '16 64 0', '16 16', FONT_16 );
vector vTextPos = vPos + '16 116 0';
for ( int i = 0; i < 25; i++ ) {
VGUI_Text( sMOTDString[ i ], vTextPos, '8 8 0', FONT_DEFAULT );
VGUI_Text( sMOTDString[ i ], vTextPos, '8 8', FONT_DEFAULT );
vTextPos_y += 10;
}

View file

@ -52,116 +52,79 @@ float VGUI_CheckMouse( vector vPos, vector vReg ) {
}
// Draws window with outline, border and title
void VGUI_Window( string sTitle, vector vPos, vector vSize ) {
vector v1, v2, v3;
void VGUI_Window( string sTitle, vector vPosition, vector vSize ) {
// Draw the background
drawfill( vPos, vSize, VGUI_WINDOW_BGCOLOR, VGUI_WINDOW_BGALPHA );
drawfill( vPosition, vSize, VGUI_WINDOW_BGCOLOR, VGUI_WINDOW_BGALPHA );
// Draw the outline START
v1_x = vPos_x + vSize_x;
v1_y = vPos_y + 1;
drawline( 1.0, vPos, v1, vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
v2_x = vPos_x;
v2_y = vPos_y + vSize_y;
drawline( 1.0, vPos, v2, vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
v3 = vPos + vSize;
drawline( 1.0, v1 - '1 0', v3 - '1 0', vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
drawline( 1.0, v2, v3, vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
// Draw the outline END
// Sides
drawfill( vPosition, [vSize_x, 1], vVGUIColor, VGUI_WINDOW_FGALPHA );
drawfill( [vPosition_x, vPosition_y + vSize_y - 1], [vSize_x, 1], vVGUIColor, VGUI_WINDOW_FGALPHA );
drawfill( vPosition, [1, vSize_y], vVGUIColor, VGUI_WINDOW_FGALPHA );
drawfill( [vPosition_x + vSize_x - 1, vPosition_y], [1, vSize_y], vVGUIColor, VGUI_WINDOW_FGALPHA );
// Draw the window title
CSQC_DrawText( vPos + '16 16 0', sTitle, '16 16 0', vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE, FONT_16 );
drawline( 1.0, vPos + '0 48 0', v1 + '0 48 0', vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
CSQC_DrawText( vPosition + '16 16', sTitle, '16 16', vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE, FONT_DEFAULT );
drawfill( vPosition + '0 48', [vSize_x, 1], vVGUIColor, VGUI_WINDOW_FGALPHA );
}
// Draws window with outline, border and title
void VGUI_WindowSmall( string sTitle, vector vPos, vector vSize ) {
vector v1, v2, v3;
void VGUI_WindowSmall( string sTitle, vector vPosition, vector vSize ) {
// Draw the background
drawfill( vPos, vSize, VGUI_WINDOW_BGCOLOR, VGUI_WINDOW_BGALPHA );
drawfill( vPosition, vSize, VGUI_WINDOW_BGCOLOR, VGUI_WINDOW_BGALPHA );
// Draw the outline START
v1_x = vPos_x + vSize_x;
v1_y = vPos_y + 1;
drawline( 1.0, vPos, v1, vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
v2_x = vPos_x;
v2_y = vPos_y + vSize_y;
drawline( 1.0, vPos, v2, vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
v3 = vPos + vSize;
drawline( 1.0, v1 - '1 0', v3 - '1 0', vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
drawline( 1.0, v2, v3, vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
// Draw the outline END
// Sides
drawfill( vPosition, [vSize_x, 1], vVGUIColor, VGUI_WINDOW_FGALPHA );
drawfill( [vPosition_x, vPosition_y + vSize_y - 1], [vSize_x, 1], vVGUIColor, VGUI_WINDOW_FGALPHA );
drawfill( vPosition, [1, vSize_y], vVGUIColor, VGUI_WINDOW_FGALPHA );
drawfill( [vPosition_x + vSize_x - 1, vPosition_y], [1, vSize_y], vVGUIColor, VGUI_WINDOW_FGALPHA );
// Draw the window title
CSQC_DrawText( vPos + '8 8 0', sTitle, '8 8 0', vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE, FONT_16 );
drawline( 1.0, vPos + '0 24 0', v1 + '0 24 0', vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
CSQC_DrawText( vPosition + '8 8', sTitle, '8 8', vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE, FONT_DEFAULT );
drawfill( vPosition + '0 24', [vSize_x, 1], vVGUIColor, VGUI_WINDOW_FGALPHA );
}
// Draws a button, returns whether or not a mouse is hovering over it (for inheritance' sake)
float VGUI_Button( string sLabel, void() vFunction, vector vPos, vector vSize ) {
vector v1, v2, v3, v4;
float VGUI_Button( string sLabel, void() vFunction, vector vPosition, vector vSize ) {
vector vLabelPos;
// Draw the outline START
v1_x = vPos_x + vSize_x;
v1_y = vPos_y + 1;
drawline( 1.0, vPos, v1, vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
v2_x = vPos_x;
v2_y = vPos_y + vSize_y;
drawline( 1.0, vPos, v2, vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
v3 = vPos + vSize;
drawline( 1.0, v1 - '1 0', v3 - '1 0', vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
drawline( 1.0, v2, v3, vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
// Draw the outline END
drawfill( vPosition, [vSize_x, 1], vVGUIColor, VGUI_WINDOW_FGALPHA );
drawfill( [vPosition_x, vPosition_y + vSize_y - 1], [vSize_x, 1], vVGUIColor, VGUI_WINDOW_FGALPHA );
drawfill( vPosition, [1, vSize_y], vVGUIColor, VGUI_WINDOW_FGALPHA );
drawfill( [vPosition_x + vSize_x - 1, vPosition_y], [1, vSize_y], vVGUIColor, VGUI_WINDOW_FGALPHA );
// Draw the button label
v4_x = vPos_x + 16;
v4_y = vPos_y + ( ( vSize_y / 2 ) - 4 );
vLabelPos_x = vPosition_x + 16;
vLabelPos_y = vPosition_y + ( ( vSize_y / 2 ) - 4 );
if( VGUI_CheckMouse( vPos, vSize ) ) {
if( VGUI_CheckMouse( vPosition, vSize ) ) {
if ( fMouseClick == TRUE ) {
vFunction();
fMouseClick = FALSE;
}
CSQC_DrawText( v4, sLabel, '8 8 0', vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE, FONT_DEFAULT );
drawline( 1.0, v4 + '0 10 0', v4 + '0 10 0' + [ (strlen( sLabel ) * 8 ), 0 ], vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
CSQC_DrawText( vLabelPos, sLabel, '8 8', vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE, FONT_DEFAULT );
drawfill( vLabelPos + '0 10 0', [(strlen( sLabel ) * 8 ), 1], vVGUIColor, VGUI_WINDOW_FGALPHA );
return TRUE;
} else {
CSQC_DrawText( v4, sLabel, '8 8 0', vVGUIColor * 0.8, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE, FONT_DEFAULT );
CSQC_DrawText( vLabelPos, sLabel, '8 8', vVGUIColor * 0.8, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE, FONT_DEFAULT );
}
return FALSE;
}
void VGUI_FakeButton( string sLabel, vector vPos, vector vSize ) {
vector v1, v2, v3, v4;
void VGUI_FakeButton( string sLabel, vector vPosition, vector vSize ) {
vector vLabelPos;
// Draw the outline START
v1_x = vPos_x + vSize_x;
v1_y = vPos_y + 1;
drawline( 1.0, vPos, v1, vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
v2_x = vPos_x;
v2_y = vPos_y + vSize_y;
drawline( 1.0, vPos, v2, vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
v3 = vPos + vSize;
drawline( 1.0, v1 - '1 0', v3 - '1 0', vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
drawline( 1.0, v2, v3, vVGUIColor, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE );
// Draw the outline END
drawfill( vPosition, [vSize_x, 1], vVGUIColor, VGUI_WINDOW_FGALPHA );
drawfill( [vPosition_x, vPosition_y + vSize_y - 1], [vSize_x, 1], vVGUIColor, VGUI_WINDOW_FGALPHA );
drawfill( vPosition, [1, vSize_y], vVGUIColor, VGUI_WINDOW_FGALPHA );
drawfill( [vPosition_x + vSize_x - 1, vPosition_y], [1, vSize_y], vVGUIColor, VGUI_WINDOW_FGALPHA );
// Draw the button label
v4_x = vPos_x + 16;
v4_y = vPos_y + ( ( vSize_y / 2 ) - 4 );
CSQC_DrawText( v4, sLabel, '8 8 0', vVGUIColor * 0.5, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE, FONT_DEFAULT );
vLabelPos_x = vPosition_x + 16;
vLabelPos_y = vPosition_y + ( ( vSize_y / 2 ) - 4 );
CSQC_DrawText( vLabelPos, sLabel, '8 8', vVGUIColor * 0.5, VGUI_WINDOW_FGALPHA, DRAWFLAG_ADDITIVE, FONT_DEFAULT );
}
// Wrapper for simple VGUI Text labels

View file

@ -57,7 +57,7 @@ float fRadioResponses[ VGUIRADIO_RESPONSES ] = {
};
void VGUI_Radio_DrawCommand( float fIndex, float fMessage, vector vPos ) {
VGUI_Text( sprintf( "%d) %s", fIndex + 1, sRadioChat[ fMessage ] ), vPos, '8 8 0', FONT_DEFAULT );
VGUI_Text( sprintf( "%d) %s", fIndex + 1, sRadioChat[ fMessage ] ), vPos, '8 8', FONT_DEFAULT );
if ( fInputKeyCode == ( fIndex + 49 ) ) {
sendevent( "RadioMessage", "f", fMessage );
@ -110,7 +110,7 @@ void VGUI_Radio_Draw( void ) {
}
vPos_y += 20;
VGUI_Text( sprintf( "0) %s", _("VGUI_BACK") ), vPos, '8 8 0', FONT_DEFAULT );
VGUI_Text( sprintf( "0) %s", _("VGUI_BACK") ), vPos, '8 8', FONT_DEFAULT );
if ( fInputKeyCode == 48 ) {
fVGUI_Display = VGUI_NONE;

View file

@ -52,25 +52,25 @@ vector VGUI_Scores_DrawTeam( vector vPos, float fTeam ) {
}
if ( getplayerkeyvalue( i, "*dead" ) == "1" ) {
CSQC_DrawText( vNewPos + '38 0', sprintf( _("SCORE_DEAD"), getplayerkeyvalue( i, "name" ) ), '8 8 0', vColor, 1, 0, FONT_DEFAULT );
CSQC_DrawText( vNewPos + '38 0', sprintf( _("SCORE_DEAD"), getplayerkeyvalue( i, "name" ) ), '8 8', vColor, 1, 0, FONT_DEFAULT );
} else if ( getplayerkeyvalue( i, "*dead" ) == "2" ) {
CSQC_DrawText( vNewPos + '38 0', sprintf( _("SCORE_VIP"), getplayerkeyvalue( i, "name" ) ), '8 8 0', vColor, 1, 0, FONT_DEFAULT );
CSQC_DrawText( vNewPos + '38 0', sprintf( _("SCORE_VIP"), getplayerkeyvalue( i, "name" ) ), '8 8', vColor, 1, 0, FONT_DEFAULT );
} else {
CSQC_DrawText( vNewPos + '38 0', getplayerkeyvalue( i, "name" ), '8 8 0', vColor, 1, 0, FONT_DEFAULT );
CSQC_DrawText( vNewPos + '38 0', getplayerkeyvalue( i, "name" ), '8 8', vColor, 1, 0, FONT_DEFAULT );
}
// Spectators don't have stats worth caring about
if ( fTeam != TEAM_SPECTATOR ) {
VGUI_RightText( vNewPos + '320 0', getplayerkeyvalue( i, INFOKEY_P_FRAGS ), '8 8 0', vColor, FONT_DEFAULT );
VGUI_RightText( vNewPos + '384 0', getplayerkeyvalue( i, "*deaths" ), '8 8 0', vColor, FONT_DEFAULT );
VGUI_RightText( vNewPos + '320 0', getplayerkeyvalue( i, INFOKEY_P_FRAGS ), '8 8', vColor, FONT_DEFAULT );
VGUI_RightText( vNewPos + '384 0', getplayerkeyvalue( i, "*deaths" ), '8 8', vColor, FONT_DEFAULT );
}
VGUI_RightText( vNewPos + '456 0', getplayerkeyvalue( i, INFOKEY_P_PING ), '8 8 0', vColor, FONT_DEFAULT );
VGUI_RightText( vNewPos + '456 0', getplayerkeyvalue( i, INFOKEY_P_PING ), '8 8', vColor, FONT_DEFAULT );
if ( getplayerkeyvalue( i, INFOKEY_P_VOIPSPEAKING ) == "0" ) {
VGUI_RightText( vNewPos + '508 0', "N", '8 8 0', '1 1 1', FONT_DEFAULT );
VGUI_RightText( vNewPos + '508 0', "N", '8 8', '1 1 1', FONT_DEFAULT );
} else {
VGUI_RightText( vNewPos + '508 0', "Y", '8 8 0', '1 1 1', FONT_DEFAULT );
VGUI_RightText( vNewPos + '508 0', "Y", '8 8', '1 1 1', FONT_DEFAULT );
}
vNewPos += '0 14';
@ -85,27 +85,26 @@ vector VGUI_Scores_DrawTeam( vector vPos, float fTeam ) {
// If we've got no spectators, don't draw them.
if ( ( fTeam != TEAM_SPECTATOR ) || ( fTeam == TEAM_SPECTATOR && iPlayerCount > 0 ) ) {
// The name/title of the team
CSQC_DrawText( vPos + '24 0', sScoreTeams[ fTeam ], '16 16 0', vColor, 1, 0, FONT_16 );
CSQC_DrawText( vPos + '24 0', sScoreTeams[ fTeam ], '16 16', vColor, 1, 0, FONT_16 );
drawline( 1.0, vPos + '19 24', vPos + '512 24 0', vColor, 1, 0 );
// Draw the amount of rounds we've von
if ( fTeam == TEAM_CT ) {
VGUI_RightText( vPos + '320 0', sprintf( "%i", getstati( STAT_WON_CT ) ), '16 16 0', vColor, FONT_16 );
VGUI_RightText( vPos + '320 0', sprintf( "%i", getstati( STAT_WON_CT ) ), '16 16', vColor, FONT_16 );
} else if ( fTeam == TEAM_T ) {
VGUI_RightText( vPos + '320 0', sprintf( "%i", getstati( STAT_WON_T ) ), '16 16 0', vColor, FONT_16 );
VGUI_RightText( vPos + '320 0', sprintf( "%i", getstati( STAT_WON_T ) ), '16 16', vColor, FONT_16 );
}
// Now we know the playercount, so let's calculate the position next to the Teamname String and print it
vector vCountPos = vPos + '24 6';
vCountPos_x += stringwidth( sScoreTeams[ fTeam ], FALSE, '16 16 0' ) + 8;
CSQC_DrawText( vCountPos, sprintf( _("SCORE_PLAYERS"), iPlayerCount ), '8 8 0', vColor, 1, 0, FONT_DEFAULT );
vCountPos_x += stringwidth( sScoreTeams[ fTeam ], FALSE, '16 16' ) + 8;
CSQC_DrawText( vCountPos, sprintf( _("SCORE_PLAYERS"), iPlayerCount ), '8 8', vColor, 1, 0, FONT_DEFAULT );
}
return vNewPos + '0 24';
}
void VGUI_Scores_Show( void ) {
vector vMainPos;
vector v1, v2, v3;
vector vSize;
vSize_x = 540;
@ -117,28 +116,20 @@ void VGUI_Scores_Show( void ) {
// Draw the background
drawfill( vMainPos, vSize, VGUI_WINDOW_BGCOLOR, VGUI_WINDOW_BGALPHA );
// Draw the outline START
v1_x = vMainPos_x + vSize_x;
v1_y = vMainPos_y + 1;
drawline( 1.0, vMainPos, v1, '0.35 0.35 0.35', 1, DRAWFLAG_NORMAL );
v2_x = vMainPos_x;
v2_y = vMainPos_y + vSize_y;
drawline( 1.0, vMainPos, v2, '0.35 0.35 0.35', 1, DRAWFLAG_NORMAL );
v3 = vMainPos + vSize;
drawline( 1.0, v1 - '1 0', v3 - '1 0', '0.35 0.35 0.35', 1, DRAWFLAG_NORMAL );
drawline( 1.0, v2, v3, '0.35 0.35 0.35', 1, DRAWFLAG_NORMAL );
// Draw the outline END
// Sides
drawfill( vMainPos, [vSize_x, 1], '0.35 0.35 0.35', 1.0f );
drawfill( [vMainPos_x, vMainPos_y + vSize_y - 1], [vSize_x, 1], '0.35 0.35 0.35', 1.0f );
drawfill( vMainPos, [1, vSize_y], '0.35 0.35 0.35', 1.0f );
drawfill( [vMainPos_x + vSize_x - 1, vMainPos_y], [1, vSize_y], '0.35 0.35 0.35', 1.0f );
// Server title
CSQC_DrawText( vMainPos + '24 13', serverkey( "hostname" ), '16 16 0', VGUI_WINDOW_FGCOLOR, 1, 0, FONT_16 );
CSQC_DrawText( vMainPos + '24 13', serverkey( "hostname" ), '16 16', VGUI_WINDOW_FGCOLOR, 1, 0, FONT_16 );
// Tabs like Score, Ping etc.
CSQC_DrawText( vMainPos + '280 32', _("SCORE_SCORE"), '8 8 0', VGUI_WINDOW_FGCOLOR, 1, 0, FONT_DEFAULT );
CSQC_DrawText( vMainPos + '336 32', _("SCORE_DEATHS"), '8 8 0', VGUI_WINDOW_FGCOLOR, 1, 0, FONT_DEFAULT );
CSQC_DrawText( vMainPos + '400 32', _("SCORE_LATENCY"), '8 8 0', VGUI_WINDOW_FGCOLOR, 1, 0, FONT_DEFAULT );
CSQC_DrawText( vMainPos + '472 32', _("SCORE_VOICE"), '8 8 0', VGUI_WINDOW_FGCOLOR, 1, 0, FONT_DEFAULT );
CSQC_DrawText( vMainPos + '280 32', _("SCORE_SCORE"), '8 8', VGUI_WINDOW_FGCOLOR, 1, 0, FONT_DEFAULT );
CSQC_DrawText( vMainPos + '336 32', _("SCORE_DEATHS"), '8 8', VGUI_WINDOW_FGCOLOR, 1, 0, FONT_DEFAULT );
CSQC_DrawText( vMainPos + '400 32', _("SCORE_LATENCY"), '8 8', VGUI_WINDOW_FGCOLOR, 1, 0, FONT_DEFAULT );
CSQC_DrawText( vMainPos + '472 32', _("SCORE_VOICE"), '8 8', VGUI_WINDOW_FGCOLOR, 1, 0, FONT_DEFAULT );
vector vOffset = VGUI_Scores_DrawTeam( vMainPos + '0 50', TEAM_CT );
vOffset = VGUI_Scores_DrawTeam( vOffset, TEAM_T );

View file

@ -47,16 +47,16 @@ void VGUI_DrawSpectatorHUD( void ) {
}
drawpic( [ vVideoResolution_x - 70, 20 ], "gfx/vgui/640_timer", '14 14', '1 1 1', 1 );
VGUI_RightText( [ vVideoResolution_x - 16, 23 ], sprintf( "%i:%i%i", iMinutes, iTens, iUnits ), '8 8 0', '0.56 0.56 0.21', FONT_DEFAULT );
VGUI_RightText( [ vVideoResolution_x - 16, 23 ], sprintf( "%i:%i%i", iMinutes, iTens, iUnits ), '8 8', '0.56 0.56 0.21', FONT_DEFAULT );
// Draw the money
CSQC_DrawText( [ vVideoResolution_x - 67, 6 ], "$", '8 8 0', '0.56 0.56 0.21', 1, 0, FONT_DEFAULT );
VGUI_RightText( [ vVideoResolution_x - 16, 6 ], sprintf( "%d", getstatf( STAT_MONEY ) ), '8 8 0', '0.56 0.56 0.21', FONT_DEFAULT );
CSQC_DrawText( [ vVideoResolution_x - 67, 6 ], "$", '8 8', '0.56 0.56 0.21', 1, 0, FONT_DEFAULT );
VGUI_RightText( [ vVideoResolution_x - 16, 6 ], sprintf( "%d", getstatf( STAT_MONEY ) ), '8 8', '0.56 0.56 0.21', FONT_DEFAULT );
// Seperator
drawfill( [ vVideoResolution_x - 85, 6 ], [ 2, 28 ], '0.56 0.56 0.21', 1 );
// Team Stats
VGUI_RightText( [ vVideoResolution_x - 96, 6 ], sprintf( _("VGUI_SPEC_TCOUNTER"), getstatf( STAT_WON_T ) ), '8 8 0', '0.56 0.56 0.21', FONT_DEFAULT );
VGUI_RightText( [ vVideoResolution_x - 96, 23 ], sprintf( _("VGUI_SPEC_CTCOUNTER"), getstatf( STAT_WON_CT ) ), '8 8 0', '0.56 0.56 0.21', FONT_DEFAULT );
VGUI_RightText( [ vVideoResolution_x - 96, 6 ], sprintf( _("VGUI_SPEC_TCOUNTER"), getstatf( STAT_WON_T ) ), '8 8', '0.56 0.56 0.21', FONT_DEFAULT );
VGUI_RightText( [ vVideoResolution_x - 96, 23 ], sprintf( _("VGUI_SPEC_CTCOUNTER"), getstatf( STAT_WON_CT ) ), '8 8', '0.56 0.56 0.21', FONT_DEFAULT );
}

View file

@ -119,11 +119,11 @@ void VGUI_TeamSelect_Main( vector vPos ) {
fVGUI_Display = VGUI_NONE;
}
VGUI_Text( sMapString[ 0 ], vPos + '16 64 0', '16 16 0', FONT_16);
VGUI_Text( sMapString[ 0 ], vPos + '16 64 0', '16 16', FONT_16);
vector vTextPos = vPos + '224 116 0';
for ( int i = 1; i < 35; i++ ) {
VGUI_Text( sMapString[ i ], vTextPos, '8 8 0', FONT_DEFAULT );
VGUI_Text( sMapString[ i ], vTextPos, '8 8', FONT_DEFAULT );
vTextPos_y += 10;
}
@ -144,12 +144,12 @@ void VGUI_TeamSelect_Button( float fNumber, void() vFunc, vector vPos, vector vS
if( VGUI_Button( sClassInfo[ 8 * fNumber ] , vFunc, vPos, vSize ) == TRUE ) {
drawpic( vVGUIWindowPos + '356 64', sClassInfo[ 8 * fNumber + 1 ], '128 256', '1 1 1', 1 );
VGUI_Text( sClassInfo[ 8 * fNumber + 2 ], vVGUIWindowPos + '232 336', '8 8 0', FONT_DEFAULT );
VGUI_Text( sClassInfo[ 8 * fNumber + 3 ], vVGUIWindowPos + '232 346', '8 8 0', FONT_DEFAULT );
VGUI_Text( sClassInfo[ 8 * fNumber + 4 ], vVGUIWindowPos + '232 356', '8 8 0', FONT_DEFAULT );
VGUI_Text( sClassInfo[ 8 * fNumber + 5 ], vVGUIWindowPos + '232 366', '8 8 0', FONT_DEFAULT );
VGUI_Text( sClassInfo[ 8 * fNumber + 6 ], vVGUIWindowPos + '232 376', '8 8 0', FONT_DEFAULT );
VGUI_Text( sClassInfo[ 8 * fNumber + 7 ], vVGUIWindowPos + '232 386', '8 8 0', FONT_DEFAULT );
VGUI_Text( sClassInfo[ 8 * fNumber + 2 ], vVGUIWindowPos + '232 336', '8 8', FONT_DEFAULT );
VGUI_Text( sClassInfo[ 8 * fNumber + 3 ], vVGUIWindowPos + '232 346', '8 8', FONT_DEFAULT );
VGUI_Text( sClassInfo[ 8 * fNumber + 4 ], vVGUIWindowPos + '232 356', '8 8', FONT_DEFAULT );
VGUI_Text( sClassInfo[ 8 * fNumber + 5 ], vVGUIWindowPos + '232 366', '8 8', FONT_DEFAULT );
VGUI_Text( sClassInfo[ 8 * fNumber + 6 ], vVGUIWindowPos + '232 376', '8 8', FONT_DEFAULT );
VGUI_Text( sClassInfo[ 8 * fNumber + 7 ], vVGUIWindowPos + '232 386', '8 8', FONT_DEFAULT );
}
}

View file

@ -59,7 +59,7 @@
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\TraceAttack.c" />
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Server\Triggers.c" />
</category>
<category name="Menu" expanded="no">
<category name="Menu" expanded="yes">
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\Defs.h" />
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\Draw.c" />
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\Header.c" />
@ -70,7 +70,7 @@
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\Objects.c" />
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Menu\progs.src" />
</category>
<category name="Shared" expanded="no">
<category name="Shared" expanded="yes">
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\Animations.c" />
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\BaseMelee.c" />
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\Effects.c" />
@ -112,7 +112,7 @@
</project>
<workspace version="Crimson Editor 3.60">
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Builtins.h" linenum="2247" placement="0:1:-1:-1:-4:-23:198:198:1046:676" />
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Client\HUD.c" linenum="15" placement="2:3:-1:-1:-4:-23:220:220:1072:702" />
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\Animations.c" linenum="10" placement="0:1:-1:-1:-4:-23:22:22:958:326" />
<localfile path="C:\Cygwin\home\eukara\Projects\FreeCS\Source\Shared\WeaponElites.c" linenum="10" placement="2:3:-1:-1:-4:-23:44:44:984:352" />
</workspace>

View file

@ -144,10 +144,10 @@ void Object_Frame( vector vPosition, vector vSize ) {
drawfill( vPosition, vSize, '0 0 0', 1.0f );
drawfill( vPosition, [vSize_x, 1], autocvar_menu_fgcolor, 1.0f ); // Top
drawfill( [vPosition_x, vPosition_y + vSize_y], [vSize_x, 1], autocvar_menu_fgcolor, 1.0f ); // Bottom
drawfill( [vPosition_x, vPosition_y + vSize_y - 1], [vSize_x, 1], autocvar_menu_fgcolor, 1.0f ); // Bottom
drawfill( vPosition, [1, vSize_y], autocvar_menu_fgcolor, 1.0f ); // Left
drawfill( [vPosition_x + vSize_x, vPosition_y], [1, vSize_y + 1], autocvar_menu_fgcolor, 1.0f ); // Right
drawfill( [vPosition_x + vSize_x - 1, vPosition_y], [1, vSize_y], autocvar_menu_fgcolor, 1.0f ); // Right
}
/*

View file

@ -264,8 +264,17 @@ void Animation_PlayerUpdate( void ) {
}
#ifdef CSQC
setorigin( self.eGunModel, self.origin );
self.eGunModel.angles = self.angles;
// Fix the angle (this is REALLY expensive, probably. But how else would one do it without skeletal objects?)
vector v1, v2;
self.eGunModel.angles = self.angles; // Set it to something consistent
gettaginfo( self, self.fWeaponBoneID ); // Updates the v_ globals for the player hand bone angle
v1 = vectoangles( v_right, v_up ); // Create angles from the v_ matrix
gettaginfo( self.eGunModel, self.eGunModel.fWeaponBoneID ); // Updates the v_ globals for the weapon hand bone angle
v2 = vectoangles( v_right, v_up );
self.eGunModel.angles = self.angles + ( v1 - v2 ); // The difference is applied
// Fix the origin
setorigin( self.eGunModel, self.origin ); // Set it to something consistent
vector vOffset = gettaginfo( self.eGunModel, self.eGunModel.fWeaponBoneID ) - gettaginfo( self, self.fWeaponBoneID );
setorigin( self.eGunModel, self.origin - vOffset );
#endif

Binary file not shown.

Binary file not shown.

Binary file not shown.