mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
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:
+11
-9
@@ -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 );
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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 );
|
||||||
|
|||||||
@@ -4440,10 +4440,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
INT32 sGridNo = 0;
|
SetScopeMode();
|
||||||
GetMouseMapPos( &sGridNo );
|
|
||||||
RemoveFortification( sGridNo );
|
|
||||||
//SetScopeMode();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -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
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user