Fix: skill display crashed and/or was badly aligned when selecting many traits (by cres)

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7253 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2014-06-02 17:21:23 +00:00
parent 6448b332ec
commit 8927918913
2 changed files with 9 additions and 10 deletions
+3 -3
View File
@@ -1889,7 +1889,7 @@ void DisplayCharStats(INT32 iId, INT32 iSlot)
for ( UINT8 ubCnt = 0; ubCnt < bNumSkillTraits; ubCnt++ )
{
if ( ubCnt >= 4 && bNumSkillTraits > 5 )
if ( ubCnt >= 3 && bNumSkillTraits > 4 )
{
fDisplayMoreTraits = TRUE;
swprintf( sString, L"%s\n", gzMercSkillTextNew[ ubTempSkillArray[ubCnt] ] );
@@ -1953,14 +1953,14 @@ void DisplayCharStats(INT32 iId, INT32 iSlot)
// if we have more skills than we can display, show "more" and create a tooltip box with the rest of them
if ( fDisplayMoreTraits )
{
swprintf( sString, L"%s", gzMercSkillTextNew[ 2 * NEWTRAIT_MERCSKILL_OFFSET_ALL + 1 ]); // display "More..."
swprintf( sString, L"%s", gzMercSkillTextNew[2 * NEWTRAIT_MERCSKILL_EXPERTOFFSET + 1] ); // display "More..."
FindFontRightCoordinates((INT16)(pPersonnelScreenPoints[19].x+(iSlot*TEXT_BOX_WIDTH)),0,TEXT_BOX_WIDTH-20,0,sString, PERS_FONT, &sX, &sY);
if( sX <= iMinimumX )
{
FindFontRightCoordinates((INT16)(pPersonnelScreenPoints[19].x+(iSlot*TEXT_BOX_WIDTH) + TEXT_BOX_WIDTH-20 +TEXT_DELTA_OFFSET),0,30,0,sString, PERS_FONT, &sX, &sY);
sX = (INT16)max( sX, iMinimumX );
}
sY = (INT16)(pPersonnelScreenPoints[19].y + 48);
sY = (INT16)(pPersonnelScreenPoints[19].y + 36);
mprintf(sX,sY,sString);
+6 -7
View File
@@ -1983,7 +1983,7 @@ void RemoveMapStatusBarsRegion( void )
void UpdateCharRegionHelpText( void )
{
CHAR16 sString[ 128 ], sTemp[ 20 ];
CHAR16 sString[ 256 ], sTemp[ 20 ];
CHAR16 pMoraleStr[ 128 ];
SOLDIERTYPE *pSoldier = NULL;
@@ -2000,8 +2000,7 @@ void UpdateCharRegionHelpText( void )
if ( AM_A_ROBOT( MercPtrs[ gCharactersList[ bSelectedInfoChar ].usSolID ] ) )
{
// robot (condition only)
swprintf( sString, L"%s: %d/%d",
pMapScreenStatusStrings[ 3 ], pSoldier->stats.bLife, pSoldier->stats.bLifeMax );
swprintf( sString, L"%s: %d/%d", pMapScreenStatusStrings[ 3 ], pSoldier->stats.bLife, pSoldier->stats.bLifeMax );
}
else if ( Menptr[ gCharactersList[ bSelectedInfoChar ].usSolID ].flags.uiStatusFlags & SOLDIER_VEHICLE )
{
@@ -2085,17 +2084,17 @@ void UpdateCharRegionHelpText( void )
// lets rearrange our skills to a temp array
// we also get the number of lines (skills) to be displayed
for ( UINT8 ubCnt = 1; ubCnt < NUM_SKILLTRAITS_NT; ubCnt++ )
for ( UINT8 ubCnt = 1; ubCnt < NUM_SKILLTRAITS_NT; ++ubCnt )
{
if ( ProfileHasSkillTrait( pSoldier->ubProfile, ubCnt ) == 2 )
{
ubTempSkillArray[bNumSkillTraits] = (ubCnt + NEWTRAIT_MERCSKILL_EXPERTOFFSET);
bNumSkillTraits++;
++bNumSkillTraits;
}
else if ( ProfileHasSkillTrait( pSoldier->ubProfile, ubCnt ) == 1 )
{
ubTempSkillArray[bNumSkillTraits] = ubCnt;
bNumSkillTraits++;
++bNumSkillTraits;
}
}
@@ -2136,6 +2135,7 @@ void UpdateCharRegionHelpText( void )
{
swprintf( sString, L"%s\n", gzMercSkillText[bSkill1] );
}
if( bSkill2 != 0 )
{
swprintf( sTemp, L"%s", gzMercSkillText[bSkill2] );
@@ -2163,7 +2163,6 @@ void UpdateCharRegionHelpText( void )
DisableButton( giMapContractButton );
}
if ( CanToggleSelectedCharInventory( ) )
{
// inventory