mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
GetSoldierAboveGuyPositions:
- use max value so that animation and text do not overlap - lowered Y offset for crouched stance DrawSelectedUIAboveGuy: - reduce vertical gap if not showing health bars git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8805 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+48
-41
@@ -1520,7 +1520,7 @@ void GetArrowsBackground( )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GetSoldierAboveGuyPositions( SOLDIERTYPE *pSoldier, INT16 *psX, INT16 *psY, BOOLEAN fRadio )
|
void GetSoldierAboveGuyPositions(SOLDIERTYPE *pSoldier, INT16 *psX, INT16 *psY, BOOLEAN fRadio)
|
||||||
{
|
{
|
||||||
INT16 sMercScreenX, sMercScreenY;
|
INT16 sMercScreenX, sMercScreenY;
|
||||||
INT16 sOffsetX, sOffsetY;
|
INT16 sOffsetX, sOffsetY;
|
||||||
@@ -1529,53 +1529,55 @@ void GetSoldierAboveGuyPositions( SOLDIERTYPE *pSoldier, INT16 *psX, INT16 *psY,
|
|||||||
INT16 sTextBodyTypeYOffset = 62;
|
INT16 sTextBodyTypeYOffset = 62;
|
||||||
|
|
||||||
// Find XY, dims, offsets
|
// Find XY, dims, offsets
|
||||||
GetSoldierScreenPos( pSoldier, &sMercScreenX, &sMercScreenY );
|
GetSoldierScreenPos(pSoldier, &sMercScreenX, &sMercScreenY);
|
||||||
GetSoldierAnimOffsets( pSoldier, &sOffsetX, &sOffsetY );
|
GetSoldierAnimOffsets(pSoldier, &sOffsetX, &sOffsetY);
|
||||||
|
|
||||||
// OK, first thing to do is subtract offsets ( because GetSoldierScreenPos adds them... )
|
// OK, first thing to do is subtract offsets ( because GetSoldierScreenPos adds them... )
|
||||||
sMercScreenX -= sOffsetX;
|
sMercScreenX -= sOffsetX;
|
||||||
sMercScreenY -= sOffsetY;
|
sMercScreenY -= sOffsetY;
|
||||||
|
|
||||||
// Adjust based on stance
|
// Adjust based on stance
|
||||||
if ( ( gAnimControl[ pSoldier->usAnimState ].uiFlags & ANIM_NOMOVE_MARKER) )
|
/*if ((gAnimControl[pSoldier->usAnimState].uiFlags & ANIM_NOMOVE_MARKER))
|
||||||
{
|
{
|
||||||
ubAnimUseHeight = gAnimControl[ pSoldier->usAnimState ].ubHeight;
|
ubAnimUseHeight = gAnimControl[pSoldier->usAnimState].ubHeight;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ubAnimUseHeight = gAnimControl[ pSoldier->usAnimState ].ubEndHeight;
|
ubAnimUseHeight = gAnimControl[pSoldier->usAnimState].ubEndHeight;
|
||||||
}
|
}*/
|
||||||
switch ( ubAnimUseHeight )
|
|
||||||
|
// sevenfm: use max value so that animation and health string do not overlap
|
||||||
|
ubAnimUseHeight = max(gAnimControl[pSoldier->usAnimState].ubEndHeight, gAnimControl[pSoldier->usAnimState].ubHeight);
|
||||||
|
|
||||||
|
switch (ubAnimUseHeight)
|
||||||
{
|
{
|
||||||
case ANIM_STAND:
|
case ANIM_STAND:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ANIM_PRONE:
|
case ANIM_PRONE:
|
||||||
sStanceOffset = 25;
|
sStanceOffset = 25;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ANIM_CROUCH:
|
case ANIM_CROUCH:
|
||||||
sStanceOffset = 10;
|
//sStanceOffset = 10;
|
||||||
break;
|
// sevenfm: reduce gap between animation and text
|
||||||
|
sStanceOffset = 15;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adjust based on body type...
|
// Adjust based on body type...
|
||||||
switch( pSoldier->ubBodyType )
|
switch (pSoldier->ubBodyType)
|
||||||
{
|
{
|
||||||
case CROW:
|
case CROW:
|
||||||
|
sStanceOffset = 30;
|
||||||
sStanceOffset = 30;
|
break;
|
||||||
break;
|
case ROBOTNOWEAPON:
|
||||||
|
sStanceOffset = 30;
|
||||||
case ROBOTNOWEAPON:
|
break;
|
||||||
|
|
||||||
sStanceOffset = 30;
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// anv: passengers sit, but we want to display their names above vehicle
|
// anv: passengers sit, but we want to display their names above vehicle
|
||||||
if( pSoldier->flags.uiStatusFlags & ( SOLDIER_DRIVER | SOLDIER_PASSENGER ) )
|
if (pSoldier->flags.uiStatusFlags & (SOLDIER_DRIVER | SOLDIER_PASSENGER))
|
||||||
{
|
{
|
||||||
sStanceOffset = 0;
|
sStanceOffset = 0;
|
||||||
}
|
}
|
||||||
@@ -1583,44 +1585,43 @@ void GetSoldierAboveGuyPositions( SOLDIERTYPE *pSoldier, INT16 *psX, INT16 *psY,
|
|||||||
//sStanceOffset -= gpWorldLevelData[ pSoldier->sGridNo ].sHeight;
|
//sStanceOffset -= gpWorldLevelData[ pSoldier->sGridNo ].sHeight;
|
||||||
|
|
||||||
// Adjust based on level
|
// Adjust based on level
|
||||||
if ( pSoldier->pathing.bLevel == 1 && gsInterfaceLevel == 0 )
|
if (pSoldier->pathing.bLevel == 1 && gsInterfaceLevel == 0)
|
||||||
{
|
{
|
||||||
//sStanceOffset -= ROOF_LEVEL_HEIGHT;
|
//sStanceOffset -= ROOF_LEVEL_HEIGHT;
|
||||||
}
|
}
|
||||||
if ( pSoldier->pathing.bLevel == 0 && gsInterfaceLevel == 1 )
|
if (pSoldier->pathing.bLevel == 0 && gsInterfaceLevel == 1)
|
||||||
{
|
{
|
||||||
//sStanceOffset += ROOF_LEVEL_HEIGHT;
|
//sStanceOffset += ROOF_LEVEL_HEIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( pSoldier->ubProfile != NO_PROFILE )
|
if (pSoldier->ubProfile != NO_PROFILE)
|
||||||
{
|
{
|
||||||
if ( fRadio )
|
if (fRadio)
|
||||||
{
|
{
|
||||||
*psX = sMercScreenX - ( 80 / 2 ) - pSoldier->sLocatorOffX;
|
*psX = sMercScreenX - (80 / 2) - pSoldier->sLocatorOffX;
|
||||||
*psY = sMercScreenY - sTextBodyTypeYOffset + sStanceOffset;
|
*psY = sMercScreenY - sTextBodyTypeYOffset + sStanceOffset;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*psX = sMercScreenX - ( 80 / 2 ) - pSoldier->sLocatorOffX;
|
*psX = sMercScreenX - (80 / 2) - pSoldier->sLocatorOffX;
|
||||||
*psY = sMercScreenY - sTextBodyTypeYOffset + sStanceOffset;
|
*psY = sMercScreenY - sTextBodyTypeYOffset + sStanceOffset;
|
||||||
|
|
||||||
// OK, Check if we need to go below....
|
// OK, Check if we need to go below....
|
||||||
// Can do this 1) if displaying damge or 2 ) above screen
|
// Can do this 1) if displaying damage or 2 ) above screen
|
||||||
|
|
||||||
// If not a radio position, adjust if we are getting hit, to be lower!
|
// If not a radio position, adjust if we are getting hit, to be lower!
|
||||||
// If we are getting hit, lower them!
|
// If we are getting hit, lower them!
|
||||||
if ( pSoldier->flags.fDisplayDamage || *psY < gsVIEWPORT_WINDOW_START_Y )
|
if (pSoldier->flags.fDisplayDamage || *psY < gsVIEWPORT_WINDOW_START_Y)
|
||||||
{
|
{
|
||||||
*psX = sMercScreenX - ( 80 / 2 ) - pSoldier->sLocatorOffX;
|
*psX = sMercScreenX - (80 / 2) - pSoldier->sLocatorOffX;
|
||||||
*psY = sMercScreenY;
|
*psY = sMercScreenY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//Display Text!
|
//Display Text!
|
||||||
*psX = sMercScreenX - ( 80 / 2 ) - pSoldier->sLocatorOffX;
|
*psX = sMercScreenX - (80 / 2) - pSoldier->sLocatorOffX;
|
||||||
*psY = sMercScreenY - sTextBodyTypeYOffset + sStanceOffset;
|
*psY = sMercScreenY - sTextBodyTypeYOffset + sStanceOffset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1882,7 +1883,7 @@ void DrawSelectedUIAboveGuy( UINT16 usSoldierID )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Donot show if we are dead
|
// Do not show if we are dead
|
||||||
if ( ( pSoldier->flags.uiStatusFlags & SOLDIER_DEAD ) )
|
if ( ( pSoldier->flags.uiStatusFlags & SOLDIER_DEAD ) )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -1898,6 +1899,12 @@ void DrawSelectedUIAboveGuy( UINT16 usSoldierID )
|
|||||||
SOLDIERTYPE *pVehicle = GetSoldierStructureForVehicle( pSoldier->iVehicleId );
|
SOLDIERTYPE *pVehicle = GetSoldierStructureForVehicle( pSoldier->iVehicleId );
|
||||||
GetSoldierAboveGuyPositions( pVehicle, &sXPos, &sYPos, FALSE );
|
GetSoldierAboveGuyPositions( pVehicle, &sXPos, &sYPos, FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// sevenfm: reduce gap if not showing health bars
|
||||||
|
if (!gGameExternalOptions.ubShowHealthBarsOnHead)
|
||||||
|
{
|
||||||
|
sYPos += 10;
|
||||||
|
}
|
||||||
|
|
||||||
// Display name
|
// Display name
|
||||||
SetFont( TINYFONT1 );
|
SetFont( TINYFONT1 );
|
||||||
@@ -3534,7 +3541,7 @@ void DrawBarsInUIBox( SOLDIERTYPE *pSoldier , INT16 sXPos, INT16 sYPos, INT16 sW
|
|||||||
// Draw new size
|
// Draw new size
|
||||||
pDestBuf = LockVideoSurface( FRAME_BUFFER, &uiDestPitchBYTES );
|
pDestBuf = LockVideoSurface( FRAME_BUFFER, &uiDestPitchBYTES );
|
||||||
|
|
||||||
// region rysowania barow nad najemnikiem
|
// bar over merc drawing region
|
||||||
SetClippingRegionAndImageWidth( uiDestPitchBYTES, 0, gsVIEWPORT_WINDOW_START_Y, SCREEN_WIDTH, ( gsVIEWPORT_WINDOW_END_Y - gsVIEWPORT_WINDOW_START_Y ) );
|
SetClippingRegionAndImageWidth( uiDestPitchBYTES, 0, gsVIEWPORT_WINDOW_START_Y, SCREEN_WIDTH, ( gsVIEWPORT_WINDOW_END_Y - gsVIEWPORT_WINDOW_START_Y ) );
|
||||||
|
|
||||||
// sevenfm: draw background for alt bar
|
// sevenfm: draw background for alt bar
|
||||||
|
|||||||
Reference in New Issue
Block a user