mirror of
https://github.com/1dot13/source.git
synced 2026-09-16 14:47:17 +02:00
If a gun's currently used ammotype has <numberOfBullets> > 1, display the gun damage in EDB in 'bullet damage X bullets fired' format, taking <multipleBulletDamageMultiplier> / <multipleBulletDamageDivisor> into account.
For more info, see http://thepit.ja-galaxy-forum.com/index.php?t=msg&th=20659&goto=353533&#msg_353533 git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8562 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -6365,6 +6365,101 @@ void DrawPropertyValueInColour( INT16 iValue, UINT8 ubNumLine, UINT8 ubNumRegion
|
|||||||
SetFontForeground( 6 );
|
SetFontForeground( 6 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DrawPropertyValueInColour_X( INT16 iValue, UINT8 numBullets, UINT8 ubNumLine, UINT8 ubNumRegion, BOOLEAN fComparisonMode, BOOLEAN fModifier, BOOLEAN fHigherBetter, UINT16 uiOverwriteColour = 0, BOOLEAN fPercentSign = FALSE )
|
||||||
|
{
|
||||||
|
static CHAR16 pStr[100];
|
||||||
|
INT16 usX, usY;
|
||||||
|
|
||||||
|
// Set Y coordinates
|
||||||
|
INT16 sTop = gItemDescGenRegions[ubNumLine][1].sTop;
|
||||||
|
INT16 sHeight = gItemDescGenRegions[ubNumLine][1].sBottom - sTop;
|
||||||
|
|
||||||
|
// Set X coordinates
|
||||||
|
INT16 sLeft = gItemDescGenRegions[ubNumLine][ubNumRegion].sLeft;
|
||||||
|
INT16 sWidth = gItemDescGenRegions[ubNumLine][ubNumRegion].sRight - sLeft;
|
||||||
|
|
||||||
|
SetFontForeground( 5 );
|
||||||
|
if ( !fComparisonMode && !fModifier )
|
||||||
|
{
|
||||||
|
if ( uiOverwriteColour )
|
||||||
|
SetFontForeground( uiOverwriteColour );
|
||||||
|
if ( iValue == 0 )
|
||||||
|
swprintf( pStr, L"--" );
|
||||||
|
else
|
||||||
|
swprintf( pStr, L"%d", iValue );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( iValue > 0 )
|
||||||
|
{
|
||||||
|
if ( fHigherBetter )
|
||||||
|
SetFontForeground( ITEMDESC_FONTPOSITIVE );
|
||||||
|
else
|
||||||
|
SetFontForeground( ITEMDESC_FONTNEGATIVE );
|
||||||
|
if ( uiOverwriteColour )
|
||||||
|
SetFontForeground( uiOverwriteColour );
|
||||||
|
swprintf( pStr, L"+%d", iValue );
|
||||||
|
}
|
||||||
|
else if ( iValue < 0 )
|
||||||
|
{
|
||||||
|
if ( fHigherBetter )
|
||||||
|
SetFontForeground( ITEMDESC_FONTNEGATIVE );
|
||||||
|
else
|
||||||
|
SetFontForeground( ITEMDESC_FONTPOSITIVE );
|
||||||
|
if ( uiOverwriteColour )
|
||||||
|
SetFontForeground( uiOverwriteColour );
|
||||||
|
swprintf( pStr, L"%d", iValue );
|
||||||
|
}
|
||||||
|
else if ( fModifier && fComparisonMode )
|
||||||
|
{
|
||||||
|
SetFontForeground( 5 );
|
||||||
|
if ( uiOverwriteColour )
|
||||||
|
SetFontForeground( uiOverwriteColour );
|
||||||
|
swprintf( pStr, L"=" );
|
||||||
|
}
|
||||||
|
else if ( fModifier )
|
||||||
|
{
|
||||||
|
SetFontForeground( 5 );
|
||||||
|
if ( uiOverwriteColour )
|
||||||
|
SetFontForeground( uiOverwriteColour );
|
||||||
|
swprintf( pStr, L"--" );
|
||||||
|
}
|
||||||
|
else if ( fComparisonMode )
|
||||||
|
{
|
||||||
|
SetFontForeground( 5 );
|
||||||
|
if ( uiOverwriteColour )
|
||||||
|
SetFontForeground( uiOverwriteColour );
|
||||||
|
swprintf( pStr, L"=" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( fPercentSign && wcscmp( pStr, L"--" ) != 0 && wcscmp( pStr, L"=" ) != 0 )
|
||||||
|
{
|
||||||
|
wcscat( pStr, L"%" );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( numBullets > 1)
|
||||||
|
{
|
||||||
|
swprintf( pStr, L"%sX%d", pStr, numBullets );
|
||||||
|
}
|
||||||
|
|
||||||
|
FindFontCenterCoordinates( sLeft, sTop, sWidth, sHeight, pStr, BLOCKFONT2, &usX, &usY );
|
||||||
|
|
||||||
|
if ( fPercentSign && wcscmp( pStr, L"--" ) != 0 && wcscmp( pStr, L"=" ) != 0 )
|
||||||
|
{
|
||||||
|
#ifdef CHINESE
|
||||||
|
wcscat( pStr, ChineseSpecString1 );
|
||||||
|
#else
|
||||||
|
wcscat( pStr, L"%" );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
mprintf( usX, usY, pStr );
|
||||||
|
|
||||||
|
// Reset font color
|
||||||
|
SetFontForeground( 6 );
|
||||||
|
}
|
||||||
|
|
||||||
void DrawPropertyTextInColour( CHAR16 pText[ 100 ], UINT8 ubNumLine, UINT8 ubNumRegion, UINT16 uiOverwriteColour = 0 )
|
void DrawPropertyTextInColour( CHAR16 pText[ 100 ], UINT8 ubNumLine, UINT8 ubNumRegion, UINT16 uiOverwriteColour = 0 )
|
||||||
{
|
{
|
||||||
static CHAR16 pStr[ 100 ];
|
static CHAR16 pStr[ 100 ];
|
||||||
@@ -6688,12 +6783,31 @@ void DrawWeaponValues( OBJECTTYPE * gpItemDescObject )
|
|||||||
|
|
||||||
if( !fComparisonMode )
|
if( !fComparisonMode )
|
||||||
{
|
{
|
||||||
// Print base value
|
// Flugente: if we use buckshot, display damage a bullet does times number of bullets
|
||||||
DrawPropertyValueInColour( iDamageValue, ubNumLine, 1, fComparisonMode, FALSE, TRUE );
|
if ( Item[gpItemDescObject->usItem].usItemClass == IC_GUN && AmmoTypes[( *gpItemDescObject )[0]->data.gun.ubGunAmmoType].numberOfBullets > 1 )
|
||||||
// Print modifier
|
{
|
||||||
DrawPropertyValueInColour( iDamageModifier, ubNumLine, 2, fComparisonMode, TRUE, TRUE );
|
UINT8 damage = (UINT8)( iDamageValue * AmmoTypes[( *gpItemDescObject )[0]->data.gun.ubGunAmmoType].multipleBulletDamageMultiplier / max( 1, AmmoTypes[( *gpItemDescObject )[0]->data.gun.ubGunAmmoType].multipleBulletDamageDivisor ) );
|
||||||
// Print final value
|
UINT8 finaldamage = (UINT8)( iFinalDamageValue * AmmoTypes[( *gpItemDescObject )[0]->data.gun.ubGunAmmoType].multipleBulletDamageMultiplier / max( 1, AmmoTypes[( *gpItemDescObject )[0]->data.gun.ubGunAmmoType].multipleBulletDamageDivisor ) );
|
||||||
DrawPropertyValueInColour( iFinalDamageValue, ubNumLine, 3, fComparisonMode, FALSE, TRUE, FONT_MCOLOR_WHITE );
|
|
||||||
|
// Print base value
|
||||||
|
DrawPropertyValueInColour_X( damage, AmmoTypes[( *gpItemDescObject )[0]->data.gun.ubGunAmmoType].numberOfBullets, ubNumLine, 1, fComparisonMode, FALSE, TRUE );
|
||||||
|
|
||||||
|
// Print modifier
|
||||||
|
DrawPropertyValueInColour( iDamageModifier, ubNumLine, 2, fComparisonMode, TRUE, TRUE );
|
||||||
|
|
||||||
|
// Print final value
|
||||||
|
DrawPropertyValueInColour_X( finaldamage, AmmoTypes[( *gpItemDescObject )[0]->data.gun.ubGunAmmoType].numberOfBullets, ubNumLine, 3, fComparisonMode, FALSE, TRUE, FONT_MCOLOR_WHITE );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DrawPropertyValueInColour( iDamageValue, ubNumLine, 1, fComparisonMode, FALSE, TRUE );
|
||||||
|
|
||||||
|
// Print modifier
|
||||||
|
DrawPropertyValueInColour( iDamageModifier, ubNumLine, 2, fComparisonMode, TRUE, TRUE );
|
||||||
|
|
||||||
|
// Print final value
|
||||||
|
DrawPropertyValueInColour( iFinalDamageValue, ubNumLine, 3, fComparisonMode, FALSE, TRUE, FONT_MCOLOR_WHITE );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user