Bugfixes (by Flugente)

- fixed a bug that caused wrong cursors to be dispalyed in NCTH
- fixed an oversight that caused the scope mode toggle not to be working
- corrected fortification cursor issues


git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5345 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2012-06-13 07:48:02 +00:00
parent 0749e468a4
commit 99d9567f35
6 changed files with 57 additions and 59 deletions
+11 -9
View File
@@ -4450,23 +4450,21 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier )
if ( pSoldier->pathing.bLevel == 0 ) if ( pSoldier->pathing.bLevel == 0 )
{ {
if ( IsFortificationPossibleAtGridNo( usMapPos, NULL ) )
{
return( TRUE );
}
if ( HasItemFlag( (&(pSoldier->inv[HANDPOS]))->usItem, (EMPTY_SANDBAG)) ) if ( HasItemFlag( (&(pSoldier->inv[HANDPOS]))->usItem, (EMPTY_SANDBAG)) )
{ {
// check if we have a shovel in our second hand // check if we have a shovel in our second hand
OBJECTTYPE* pShovelObj = &(pSoldier->inv[SECONDHANDPOS]); OBJECTTYPE* pShovelObj = &(pSoldier->inv[SECONDHANDPOS]);
if ( !pShovelObj || !(pShovelObj->exists()) || !HasItemFlag(pSoldier->inv[ SECONDHANDPOS ].usItem, (SHOVEL)) ) if ( pShovelObj && (pShovelObj->exists()) && HasItemFlag(pSoldier->inv[ SECONDHANDPOS ].usItem, (SHOVEL)) )
{ {
return( TRUE ); INT8 bOverTerrainType = GetTerrainType( usMapPos );
if( bOverTerrainType == FLAT_GROUND || bOverTerrainType == DIRT_ROAD || bOverTerrainType == LOW_GRASS )
{
return( TRUE );
}
} }
} }
else if ( HasItemFlag( (&(pSoldier->inv[HANDPOS]))->usItem, (SHOVEL)) )
if ( HasItemFlag( (&(pSoldier->inv[HANDPOS]))->usItem, (SHOVEL)) )
{ {
STRUCTURE* pStruct = FindStructure(usMapPos, STRUCTURE_GENERIC); STRUCTURE* pStruct = FindStructure(usMapPos, STRUCTURE_GENERIC);
@@ -4475,6 +4473,10 @@ BOOLEAN UIMouseOnValidAttackLocation( SOLDIERTYPE *pSoldier )
return( TRUE ); return( TRUE );
} }
} }
else if ( IsFortificationPossibleAtGridNo( usMapPos ) )
{
return( TRUE );
}
} }
return( FALSE ); return( FALSE );
+1 -3
View File
@@ -565,10 +565,8 @@ BOOLEAN IsRefuelableStructAtGridNo( INT32 sGridNo, UINT8 *pubID )
// Flugente: determine wether a fortification can be built on this position // Flugente: determine wether a fortification can be built on this position
BOOLEAN IsFortificationPossibleAtGridNo( INT32 sGridNo, UINT8 *pubID ) BOOLEAN IsFortificationPossibleAtGridNo( INT32 sGridNo )
{ {
GetMouseMapPos( &sGridNo );
INT8 bOverTerrainType = GetTerrainType( sGridNo ); INT8 bOverTerrainType = GetTerrainType( sGridNo );
if( bOverTerrainType == MED_WATER || bOverTerrainType == DEEP_WATER || bOverTerrainType == LOW_WATER ) if( bOverTerrainType == MED_WATER || bOverTerrainType == DEEP_WATER || bOverTerrainType == LOW_WATER )
return FALSE; return FALSE;
+1 -1
View File
@@ -38,7 +38,7 @@ BOOLEAN IsCutWireFenceAtGridNo( INT32 sGridNo );
BOOLEAN IsRepairableStructAtGridNo( INT32 sGridNo, UINT8 *pubID ); BOOLEAN IsRepairableStructAtGridNo( INT32 sGridNo, UINT8 *pubID );
BOOLEAN IsRefuelableStructAtGridNo( INT32 sGridNo, UINT8 *pubID ); BOOLEAN IsRefuelableStructAtGridNo( INT32 sGridNo, UINT8 *pubID );
BOOLEAN IsFortificationPossibleAtGridNo( INT32 sGridNo, UINT8 *pubID ); // added by Flugente BOOLEAN IsFortificationPossibleAtGridNo( INT32 sGridNo ); // added by Flugente
BOOLEAN IsRoofPresentAtGridNo( INT32 sGridNo ); BOOLEAN IsRoofPresentAtGridNo( INT32 sGridNo );
+1 -4
View File
@@ -4440,10 +4440,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
} }
else else
{ {
INT32 sGridNo = 0; SetScopeMode();
GetMouseMapPos( &sGridNo );
RemoveFortification( sGridNo );
//SetScopeMode();
} }
break; break;
+9 -5
View File
@@ -2158,12 +2158,16 @@ UINT8 HandleFortificationCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT32 ui
// check if we have a shovel in our second hand // check if we have a shovel in our second hand
OBJECTTYPE* pShovelObj = &(pSoldier->inv[SECONDHANDPOS]); OBJECTTYPE* pShovelObj = &(pSoldier->inv[SECONDHANDPOS]);
if ( !pShovelObj || !(pShovelObj->exists()) || !HasItemFlag(pSoldier->inv[ SECONDHANDPOS ].usItem, (SHOVEL)) ) if ( pShovelObj && (pShovelObj->exists()) && HasItemFlag(pSoldier->inv[ SECONDHANDPOS ].usItem, (SHOVEL)) )
{ {
return( FORTIFICATION_RED_UICURSOR ); INT8 bOverTerrainType = GetTerrainType( sGridNo );
if( bOverTerrainType == FLAT_GROUND || bOverTerrainType == DIRT_ROAD || bOverTerrainType == LOW_GRASS )
{
return( FORTIFICATION_GREY_UICURSOR );
}
} }
else
return( FORTIFICATION_RED_UICURSOR ); return( FORTIFICATION_RED_UICURSOR );
} }
if ( HasItemFlag( (&(pSoldier->inv[HANDPOS]))->usItem, (SHOVEL)) ) if ( HasItemFlag( (&(pSoldier->inv[HANDPOS]))->usItem, (SHOVEL)) )
@@ -2179,7 +2183,7 @@ UINT8 HandleFortificationCursor( SOLDIERTYPE *pSoldier, INT32 sGridNo, UINT32 ui
} }
// can we build something here? // can we build something here?
if ( IsFortificationPossibleAtGridNo( sGridNo, NULL ) && pSoldier->pathing.bLevel == 0 ) if ( IsFortificationPossibleAtGridNo( sGridNo ) )
{ {
return( FORTIFICATION_GREY_UICURSOR ); return( FORTIFICATION_GREY_UICURSOR );
} }
+34 -37
View File
@@ -1182,13 +1182,6 @@ CursorData CursorDatabase[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2, CENTER_CURSOR, CENTER_CURSOR , 0, 0 , 0, 0 }, 2, CENTER_CURSOR, CENTER_CURSOR , 0, 0 , 0, 0 },
/*{ C_TRINGS, 6, 0, HIDE_SUBCURSOR, HIDE_SUBCURSOR,
C_FORTIFICATION , 0, 0, CENTER_SUBCURSOR, CENTER_SUBCURSOR,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
2, CENTER_CURSOR, CENTER_CURSOR, 0, 0 , 0, 0 },*/
{ C_TRINGS, 6, 0, HIDE_SUBCURSOR, HIDE_SUBCURSOR, { C_TRINGS, 6, 0, HIDE_SUBCURSOR, HIDE_SUBCURSOR,
C_FORTIFICATION , 0, 0, CENTER_SUBCURSOR, CENTER_SUBCURSOR, C_FORTIFICATION , 0, 0, CENTER_SUBCURSOR, CENTER_SUBCURSOR,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1715,42 +1708,46 @@ void UpdateAnimatedCursorFrames( UINT32 uiCursorIndex )
{ {
pCurImage = &( pCurData->Composites[ cnt ] ); pCurImage = &( pCurData->Composites[ cnt ] );
// Flugente: now using enums instead of hardcoded values
//CHRISL: NCTH uses a completely different cursor so if we're in NCTH mode, we want to use different graphics //CHRISL: NCTH uses a completely different cursor so if we're in NCTH mode, we want to use different graphics
if(UsingNewCTHSystem() == true){ if(UsingNewCTHSystem() == true)
{
switch(pCurImage->uiFileIndex) switch(pCurImage->uiFileIndex)
{ {
case 2: case C_ACTIONMODERED:
pCurImage->uiFileIndex = 68; break; pCurImage->uiFileIndex = C_ACTIONMODERED_NCTH; break;
case 3: case C_ACTIONMODEBLACK:
pCurImage->uiFileIndex = 69; break; pCurImage->uiFileIndex = C_ACTIONMODEBLACK_NCTH; break;
case 5: case C_TARGMODEBURSTRED:
pCurImage->uiFileIndex = 70; break; pCurImage->uiFileIndex = C_TARGMODEBURSTRED_NCTH; break;
case 6: case C_TARGMODEBURSTBLACK:
pCurImage->uiFileIndex = 71; break; pCurImage->uiFileIndex = C_TARGMODEBURSTBLACK_NCTH; break;
case 7: case C_TRINGS:
pCurImage->uiFileIndex = 72; break; pCurImage->uiFileIndex = C_TRINGS_NCTH; break;
case 8: case C_TWRINGS:
pCurImage->uiFileIndex = 73; break; pCurImage->uiFileIndex = C_TWRINGS_NCTH; break;
case 35: case C_YELLOWRINGS:
pCurImage->uiFileIndex = 74; break; pCurImage->uiFileIndex = C_YELLOWRINGS_NCTH; break;
} }
} else { }
else
{
switch(pCurImage->uiFileIndex) switch(pCurImage->uiFileIndex)
{ {
case 68: case C_ACTIONMODERED_NCTH:
pCurImage->uiFileIndex = 2; break; pCurImage->uiFileIndex = C_ACTIONMODERED; break;
case 69: case C_ACTIONMODEBLACK_NCTH:
pCurImage->uiFileIndex = 3; break; pCurImage->uiFileIndex = C_ACTIONMODEBLACK; break;
case 70: case C_TARGMODEBURSTRED_NCTH:
pCurImage->uiFileIndex = 5; break; pCurImage->uiFileIndex = C_TARGMODEBURSTRED; break;
case 71: case C_TARGMODEBURSTBLACK_NCTH:
pCurImage->uiFileIndex = 6; break; pCurImage->uiFileIndex = C_TARGMODEBURSTBLACK; break;
case 72: case C_TRINGS_NCTH:
pCurImage->uiFileIndex = 7; break; pCurImage->uiFileIndex = C_TRINGS; break;
case 73: case C_TWRINGS_NCTH:
pCurImage->uiFileIndex = 8; break; pCurImage->uiFileIndex = C_TWRINGS; break;
case 74: case C_YELLOWRINGS_NCTH:
pCurImage->uiFileIndex = 35; break; pCurImage->uiFileIndex = C_YELLOWRINGS; break;
} }
} }