Merged revision(s) 7082 from branches/ja2_source_official_2014:

Fix: huge amounts of memory are allocated for AStar pathing but are never used. This also causes a significant slowdown every time a turn ends

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7083 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2014-03-18 00:06:03 +00:00
parent e1b581e466
commit 1a47da6d4e
4 changed files with 122 additions and 186 deletions
+9 -9
View File
@@ -15,9 +15,9 @@
#ifdef JA2EDITOR #ifdef JA2EDITOR
#ifdef JA2UB #ifdef JA2UB
CHAR16 zVersionLabel[256] = { L"Unfinished Business - Map Editor v1.13.7057 (Development Build)" }; CHAR16 zVersionLabel[256] = { L"Unfinished Business - Map Editor v1.13.7083 (Development Build)" };
#else #else
CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.7057 (Development Build)" }; CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.7083 (Development Build)" };
#endif #endif
// ------------------------------ // ------------------------------
@@ -27,11 +27,11 @@
//DEBUG BUILD VERSION //DEBUG BUILD VERSION
#ifdef JA2UB #ifdef JA2UB
CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.7057 (Development Build)" }; CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.7083 (Development Build)" };
#elif defined (JA113DEMO) #elif defined (JA113DEMO)
CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.7057 (Development Build)" }; CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.7083 (Development Build)" };
#else #else
CHAR16 zVersionLabel[256] = { L"Debug: v1.13.7057 (Development Build)" }; CHAR16 zVersionLabel[256] = { L"Debug: v1.13.7083 (Development Build)" };
#endif #endif
#elif defined CRIPPLED_VERSION #elif defined CRIPPLED_VERSION
@@ -46,16 +46,16 @@
//RELEASE BUILD VERSION //RELEASE BUILD VERSION
#ifdef JA2UB #ifdef JA2UB
CHAR16 zVersionLabel[256] = { L"Release Unfinished Business - v1.13.7057 (Development Build)" }; CHAR16 zVersionLabel[256] = { L"Release Unfinished Business - v1.13.7083 (Development Build)" };
#elif defined (JA113DEMO) #elif defined (JA113DEMO)
CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.7057 (Development Build)" }; CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.7083 (Development Build)" };
#else #else
CHAR16 zVersionLabel[256] = { L"Release v1.13.7057 (Development Build)" }; CHAR16 zVersionLabel[256] = { L"Release v1.13.7083 (Development Build)" };
#endif #endif
#endif #endif
CHAR8 czVersionNumber[16] = { "Build 14.03.12" }; //YY.MM.DD CHAR8 czVersionNumber[16] = { "Build 14.03.18" }; //YY.MM.DD
CHAR16 zTrackingNumber[16] = { L"Z" }; CHAR16 zTrackingNumber[16] = { L"Z" };
// SAVE_GAME_VERSION is defined in header, change it there // SAVE_GAME_VERSION is defined in header, change it there
+101 -173
View File
@@ -532,12 +532,11 @@ void PreventFromTheFreezingBug(SOLDIERTYPE* pSoldier)
// MAIN TACTICAL UI HANDLER // MAIN TACTICAL UI HANDLER
UINT32 HandleTacticalUI( void ) UINT32 HandleTacticalUI( void )
{ {
UINT32 ReturnVal = GAME_SCREEN; UINT32 ReturnVal = GAME_SCREEN;
UINT32 uiNewEvent; UINT32 uiNewEvent;
INT32 usMapPos; INT32 usMapPos;
LEVELNODE *pIntTile; LEVELNODE *pIntTile;
static LEVELNODE *pOldIntTile = NULL; static LEVELNODE *pOldIntTile = NULL;
// RESET FLAGS // RESET FLAGS
gfUIDisplayActionPoints = FALSE; gfUIDisplayActionPoints = FALSE;
@@ -630,7 +629,6 @@ UINT32 HandleTacticalUI( void )
GetRTMouseButtonInput( &uiNewEvent ); GetRTMouseButtonInput( &uiNewEvent );
// FROM KEYBOARD // FROM KEYBOARD
GetKeyboardInput( &uiNewEvent ); GetKeyboardInput( &uiNewEvent );
} }
else else
{ {
@@ -643,8 +641,6 @@ UINT32 HandleTacticalUI( void )
// FROM KEYBOARD // FROM KEYBOARD
GetKeyboardInput( &uiNewEvent ); GetKeyboardInput( &uiNewEvent );
} }
} }
else else
{ {
@@ -681,10 +677,8 @@ UINT32 HandleTacticalUI( void )
{ {
gfUISelectiveTargetFound = TRUE; gfUISelectiveTargetFound = TRUE;
} }
} }
// Check if current event has changed and clear event if so, to prepare it for execution // Check if current event has changed and clear event if so, to prepare it for execution
// Clearing it does things like set first time flag, param variables, etc // Clearing it does things like set first time flag, param variables, etc
if ( uiNewEvent != guiOldEvent ) if ( uiNewEvent != guiOldEvent )
@@ -739,7 +733,6 @@ UINT32 HandleTacticalUI( void )
ErasePath( TRUE ); ErasePath( TRUE );
break; break;
} }
} }
// Check if menu event is done and if so set to privious mode // Check if menu event is done and if so set to privious mode
@@ -777,7 +770,6 @@ UINT32 HandleTacticalUI( void )
gfUIDisplayActionPoints = FALSE; gfUIDisplayActionPoints = FALSE;
} }
// Will set the cursor but only if different // Will set the cursor but only if different
SetUIMouseCursor( ); SetUIMouseCursor( );
@@ -791,7 +783,6 @@ UINT32 HandleTacticalUI( void )
} }
} }
return( ReturnVal ); return( ReturnVal );
} }
@@ -804,7 +795,6 @@ void SetUIMouseCursor( )
static INT32 sOldExitGridNo = NOWHERE; static INT32 sOldExitGridNo = NOWHERE;
static BOOLEAN fOkForExit = FALSE; static BOOLEAN fOkForExit = FALSE;
// Check if we moved from confirm mode on exit arrows // Check if we moved from confirm mode on exit arrows
// If not in move mode, return! // If not in move mode, return!
if ( gCurrentUIMode == MOVE_MODE ) if ( gCurrentUIMode == MOVE_MODE )
@@ -819,7 +809,6 @@ void SetUIMouseCursor( )
} }
} }
if ( gfUIShowExitEast ) if ( gfUIShowExitEast )
{ {
gfUIDisplayActionPoints = FALSE; gfUIDisplayActionPoints = FALSE;
@@ -901,7 +890,6 @@ void SetUIMouseCursor( )
} }
} }
if ( gfUIShowExitSouth ) if ( gfUIShowExitSouth )
{ {
gfUIDisplayActionPoints = FALSE; gfUIDisplayActionPoints = FALSE;
@@ -933,7 +921,6 @@ void SetUIMouseCursor( )
MSYS_DefineRegion( &gViewportRegion, 0, 0 ,gsVIEWPORT_END_X, gsVIEWPORT_WINDOW_END_Y, MSYS_PRIORITY_NORMAL, MSYS_DefineRegion( &gViewportRegion, 0, 0 ,gsVIEWPORT_END_X, gsVIEWPORT_WINDOW_END_Y, MSYS_PRIORITY_NORMAL,
VIDEO_NO_CURSOR, MSYS_NO_CALLBACK, MSYS_NO_CALLBACK ); VIDEO_NO_CURSOR, MSYS_NO_CALLBACK, MSYS_NO_CALLBACK );
// Adjust where we blit our cursor! // Adjust where we blit our cursor!
gsGlobalCursorYOffset = 0; gsGlobalCursorYOffset = 0;
SetCurrentCursorFromDatabase( CURSOR_NORMAL ); SetCurrentCursorFromDatabase( CURSOR_NORMAL );
@@ -956,7 +943,6 @@ void SetUIMouseCursor( )
SetCurrentCursorFromDatabase( gUICursors[ guiNewUICursor ].usFreeCursorName ); SetCurrentCursorFromDatabase( gUICursors[ guiNewUICursor ].usFreeCursorName );
gfViewPortAdjustedForSouth = TRUE; gfViewPortAdjustedForSouth = TRUE;
} }
} }
} }
@@ -970,7 +956,6 @@ void SetUIMouseCursor( )
MSYS_DefineRegion( &gViewportRegion, 0, 0 ,gsVIEWPORT_END_X, gsVIEWPORT_WINDOW_END_Y, MSYS_PRIORITY_NORMAL, MSYS_DefineRegion( &gViewportRegion, 0, 0 ,gsVIEWPORT_END_X, gsVIEWPORT_WINDOW_END_Y, MSYS_PRIORITY_NORMAL,
VIDEO_NO_CURSOR, MSYS_NO_CALLBACK, MSYS_NO_CALLBACK ); VIDEO_NO_CURSOR, MSYS_NO_CALLBACK, MSYS_NO_CALLBACK );
// Adjust where we blit our cursor! // Adjust where we blit our cursor!
gsGlobalCursorYOffset = 0; gsGlobalCursorYOffset = 0;
SetCurrentCursorFromDatabase( CURSOR_NORMAL ); SetCurrentCursorFromDatabase( CURSOR_NORMAL );
@@ -1032,7 +1017,6 @@ void SetUIMouseCursor( )
{ {
sOldExitGridNo = NOWHERE; sOldExitGridNo = NOWHERE;
} }
} }
else else
{ {
@@ -1081,13 +1065,11 @@ void ClearEvent( UI_EVENT *pUIEvent )
pUIEvent->fDoneMenu = FALSE; pUIEvent->fDoneMenu = FALSE;
pUIEvent->fFirstTime = TRUE; pUIEvent->fFirstTime = TRUE;
pUIEvent->uiMenuPreviousMode = 0; pUIEvent->uiMenuPreviousMode = 0;
} }
void EndMenuEvent( UINT32 uiEvent ) void EndMenuEvent( UINT32 uiEvent )
{ {
gEvents[ uiEvent ].fDoneMenu = TRUE; gEvents[ uiEvent ].fDoneMenu = TRUE;
} }
// HANDLER FUCNTIONS // HANDLER FUCNTIONS
@@ -1108,13 +1090,12 @@ UINT32 UIHandleExit( UI_EVENT *pUIEvent )
UINT32 UIHandleNewMerc( UI_EVENT *pUIEvent ) UINT32 UIHandleNewMerc( UI_EVENT *pUIEvent )
{ {
static UINT8 ubTemp = 3; static UINT8 ubTemp = 3;
INT32 usMapPos; INT32 usMapPos;
static INT32 iSoldierCount=0; static INT32 iSoldierCount=0;
MERC_HIRE_STRUCT HireMercStruct; MERC_HIRE_STRUCT HireMercStruct;
INT8 bReturnCode; INT8 bReturnCode;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
// Get Grid Corrdinates of mouse // Get Grid Corrdinates of mouse
if( GetMouseMapPos( &usMapPos) ) if( GetMouseMapPos( &usMapPos) )
{ {
@@ -1204,9 +1185,9 @@ UINT32 UIHandleNewBadMerc( UI_EVENT *pUIEvent )
{ {
switch( pSoldier->ubSoldierClass ) switch( pSoldier->ubSoldierClass )
{ {
case SOLDIER_CLASS_ADMINISTRATOR: pSector->ubNumAdmins++; pSector->ubAdminsInBattle++; break; case SOLDIER_CLASS_ADMINISTRATOR: pSector->ubNumAdmins++; pSector->ubAdminsInBattle++; break;
case SOLDIER_CLASS_ARMY: pSector->ubNumTroops++; pSector->ubTroopsInBattle++; break; case SOLDIER_CLASS_ARMY: pSector->ubNumTroops++; pSector->ubTroopsInBattle++; break;
case SOLDIER_CLASS_ELITE: pSector->ubNumElites++; pSector->ubElitesInBattle++; break; case SOLDIER_CLASS_ELITE: pSector->ubNumElites++; pSector->ubElitesInBattle++; break;
} }
} }
} }
@@ -1217,23 +1198,22 @@ UINT32 UIHandleNewBadMerc( UI_EVENT *pUIEvent )
AllTeamsLookForAll( NO_INTERRUPTS ); AllTeamsLookForAll( NO_INTERRUPTS );
} }
} }
return( GAME_SCREEN ); return( GAME_SCREEN );
} }
UINT32 UIHandleEnterEditMode( UI_EVENT *pUIEvent ) UINT32 UIHandleEnterEditMode( UI_EVENT *pUIEvent )
{ {
return( EDIT_SCREEN ); return( EDIT_SCREEN );
} }
UINT32 UIHandleEnterPalEditMode( UI_EVENT *pUIEvent ) UINT32 UIHandleEnterPalEditMode( UI_EVENT *pUIEvent )
{ {
return( PALEDIT_SCREEN ); return( PALEDIT_SCREEN );
} }
UINT32 UIHandleEndTurn( UI_EVENT *pUIEvent ) UINT32 UIHandleEndTurn( UI_EVENT *pUIEvent )
{ {
CHAR16 zString[128]; CHAR16 zString[128];
@@ -1262,7 +1242,7 @@ UINT32 UIHandleEndTurn( UI_EVENT *pUIEvent )
guiPreviousOptionScreen = guiCurrentScreen; guiPreviousOptionScreen = guiCurrentScreen;
//increment end turn number //increment end turn number
guiLastSaveGameNum++; ++guiLastSaveGameNum;
if( guiLastSaveGameNum == 2 ) if( guiLastSaveGameNum == 2 )
guiLastSaveGameNum = 0; guiLastSaveGameNum = 0;
@@ -1270,64 +1250,74 @@ UINT32 UIHandleEndTurn( UI_EVENT *pUIEvent )
SaveGame(SAVE__END_TURN_NUM, zString ); SaveGame(SAVE__END_TURN_NUM, zString );
} }
// Flugente: this stuff is only ever used in AStar pathing and is a unnecessary waste of resources otherwise, so I'm putting an end to this
#ifdef USE_ASTAR_PATHS
////ddd îïòèìèçàöèÿ äëÿ õîäà äðàíèêîâ ////ddd îïòèìèçàöèÿ äëÿ õîäà äðàíèêîâ
if ( (gTacticalStatus.uiFlags & TURNBASED) && (gTacticalStatus.uiFlags & INCOMBAT ) ) if ( (gTacticalStatus.uiFlags & TURNBASED) && (gTacticalStatus.uiFlags & INCOMBAT ) )
{ {
memset( gubWorldTileInLight, FALSE, sizeof( gubWorldTileInLight ) ); memset( gubWorldTileInLight, FALSE, sizeof( gubWorldTileInLight ) );
memset( gubIsCorpseThere, FALSE, sizeof( gubIsCorpseThere ) ); memset( gubIsCorpseThere, FALSE, sizeof( gubIsCorpseThere ) );
memset( gubMerkCanSeeThisTile, FALSE, sizeof( gubMerkCanSeeThisTile ) ); memset( gubMerkCanSeeThisTile, FALSE, sizeof( gubMerkCanSeeThisTile ) );
//ðàçâåðòêà öèêëà. ïðè èçìåíåíèè WORLD_MAX íà äð.çíà÷. íåîáõîäèìî áóäåò ïîä÷èùàòü õâîñòû! èáî îïàñíûé êîä!!! ;) //ðàçâåðòêà öèêëà. ïðè èçìåíåíèè WORLD_MAX íà äð.çíà÷. íåîáõîäèìî áóäåò ïîä÷èùàòü õâîñòû! èáî îïàñíûé êîä!!! ;)
// WANNE: We had a custom user map (Tixa, J9), where the following loop caused an unhandled exception. // WANNE: We had a custom user map (Tixa, J9), where the following loop caused an unhandled exception.
// The crash occurd at ~index 16000 when calling the method IsCorpseAtGridNo() ... // The crash occurd at ~index 16000 when calling the method IsCorpseAtGridNo() ...
// I don't know what causes it ... // I don't know what causes it ...
// Just try/catch (ugly, but works). // Just try/catch (ugly, but works).
__try __try
{
for(UINT32 i=0; i<(UINT32)WORLD_MAX ;i+=4)
{
gubWorldTileInLight[i] = InLightAtNight(i, gpWorldLevelData[ i ].sHeight);
gubIsCorpseThere[i] = IsCorpseAtGridNo( i, gpWorldLevelData[ i ].sHeight );
gubWorldTileInLight[i+1] = InLightAtNight(i+1, gpWorldLevelData[ i+1 ].sHeight);
gubIsCorpseThere[i+1] = IsCorpseAtGridNo( i+1, gpWorldLevelData[ i+1 ].sHeight );
gubWorldTileInLight[i+2] = InLightAtNight(i+2, gpWorldLevelData[ i+2 ].sHeight);
gubIsCorpseThere[i+2] = IsCorpseAtGridNo( i+2, gpWorldLevelData[ i+2 ].sHeight );
gubWorldTileInLight[i+3] = InLightAtNight(i+3, gpWorldLevelData[ i+3 ].sHeight);
gubIsCorpseThere[i+3] = IsCorpseAtGridNo( i+3, gpWorldLevelData[ i+3 ].sHeight );
}
}
__except( EXCEPTION_EXECUTE_HANDLER )
{
// WANNE: Ignore, so the game can continue ...
}
INT32 tcnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
SOLDIERTYPE *tS;
INT16 sXOffset, sYOffset;
INT32 sGridNo;UINT16 usSightLimit=0;
for ( tS = MercPtrs[ tcnt ]; tcnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; tcnt++,tS++ )
if ( tS->stats.bLife >= OKLIFE && tS->sGridNo != NOWHERE && tS->bInSector )
{ {
//loop through all the gridnos that we are interested in for(UINT32 i=0; i<(UINT32)WORLD_MAX; i+=4)
for (sYOffset = -30; sYOffset <= 30; sYOffset++) {
for (sXOffset = -30; sXOffset <= 30; sXOffset++) gubWorldTileInLight[i] = InLightAtNight(i, gpWorldLevelData[ i ].sHeight);
{ gubIsCorpseThere[i] = IsCorpseAtGridNo( i, gpWorldLevelData[ i ].sHeight );
sGridNo = tS->sGridNo + sXOffset + (MAXCOL * sYOffset); gubWorldTileInLight[i+1] = InLightAtNight(i+1, gpWorldLevelData[ i+1 ].sHeight);
if ( sGridNo <= 0 || sGridNo >= WORLD_MAX ) gubIsCorpseThere[i+1] = IsCorpseAtGridNo( i+1, gpWorldLevelData[ i+1 ].sHeight );
continue; gubWorldTileInLight[i+2] = InLightAtNight(i+2, gpWorldLevelData[ i+2 ].sHeight);
//usSightLimit = tS->GetMaxDistanceVisible(sGridNo, FALSE, CALC_FROM_WANTED_DIR); gubIsCorpseThere[i+2] = IsCorpseAtGridNo( i+2, gpWorldLevelData[ i+2 ].sHeight );
if(gubMerkCanSeeThisTile[sGridNo]==0) gubWorldTileInLight[i+3] = InLightAtNight(i+3, gpWorldLevelData[ i+3 ].sHeight);
gubMerkCanSeeThisTile[sGridNo]=//SoldierToVirtualSoldierLineOfSightTest( tS, sGridNo, FALSE, ANIM_STAND, TRUE, usSightLimit ); gubIsCorpseThere[i+3] = IsCorpseAtGridNo( i+3, gpWorldLevelData[ i+3 ].sHeight );
SoldierToVirtualSoldierLineOfSightTest( tS, sGridNo, tS->pathing.bLevel, }
ANIM_STAND, TRUE, CALC_FROM_WANTED_DIR); }
__except( EXCEPTION_EXECUTE_HANDLER )
{
// WANNE: Ignore, so the game can continue ...
}
}//fo INT32 tcnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
}//if SOLDIERTYPE *tS;
INT16 sXOffset, sYOffset;
INT32 sGridNo;
UINT16 usSightLimit=0;
for ( tS = MercPtrs[ tcnt ]; tcnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++tcnt, tS++ )
{
if ( tS->stats.bLife >= OKLIFE && tS->sGridNo != NOWHERE && tS->bInSector )
{
//loop through all the gridnos that we are interested in
for (sYOffset = -30; sYOffset <= 30; ++sYOffset)
{
for (sXOffset = -30; sXOffset <= 30; ++sXOffset)
{
sGridNo = tS->sGridNo + sXOffset + (MAXCOL * sYOffset);
if ( sGridNo <= 0 || sGridNo >= WORLD_MAX )
continue;
//usSightLimit = tS->GetMaxDistanceVisible(sGridNo, FALSE, CALC_FROM_WANTED_DIR);
if(gubMerkCanSeeThisTile[sGridNo]==0)
{
gubMerkCanSeeThisTile[sGridNo]=//SoldierToVirtualSoldierLineOfSightTest( tS, sGridNo, FALSE, ANIM_STAND, TRUE, usSightLimit );
SoldierToVirtualSoldierLineOfSightTest( tS, sGridNo, tS->pathing.bLevel, ANIM_STAND, TRUE, CALC_FROM_WANTED_DIR);
}
}//fo
}
}//if
}
} }
//ddd îïòèìèçàöèÿ äëÿ õîäà äðàíèêîâ** //ddd îïòèìèçàöèÿ äëÿ õîäà äðàíèêîâ**
#endif
// End our turn! // End our turn!
if (is_server || !is_client) if (is_server || !is_client)
@@ -1336,7 +1326,6 @@ UINT32 UIHandleEndTurn( UI_EVENT *pUIEvent )
} }
if(!is_server && is_client) if(!is_server && is_client)
{ {
if (INTERRUPT_QUEUED) if (INTERRUPT_QUEUED)
{ {
EndTurn( gbPlayerNum + 1 );//is ending interrupt instead EndTurn( gbPlayerNum + 1 );//is ending interrupt instead
@@ -1539,7 +1528,6 @@ UINT32 UIHandleMOnTerrain( UI_EVENT *pUIEvent )
fOverItems = FALSE; fOverItems = FALSE;
} }
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) ) if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
{ {
if ( GetExitGrid( usMapPos, &ExitGrid ) && pSoldier->pathing.bLevel == 0 ) if ( GetExitGrid( usMapPos, &ExitGrid ) && pSoldier->pathing.bLevel == 0 )
@@ -1628,9 +1616,7 @@ UINT32 UIHandleMOnTerrain( UI_EVENT *pUIEvent )
} }
} }
{ {
//if ( fSetCursor && guiNewUICursor != ENTER_VEHICLE_UICURSOR ) //if ( fSetCursor && guiNewUICursor != ENTER_VEHICLE_UICURSOR )
if ( fSetCursor && !gfBeginVehicleCursor ) if ( fSetCursor && !gfBeginVehicleCursor )
{ {
@@ -1645,7 +1631,6 @@ UINT32 UIHandleMovementMenu( UI_EVENT *pUIEvent )
{ {
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
// Get soldier // Get soldier
if ( !GetSoldier( &pSoldier, gusSelectedSoldier ) ) if ( !GetSoldier( &pSoldier, gusSelectedSoldier ) )
{ {
@@ -1660,7 +1645,6 @@ UINT32 UIHandleMovementMenu( UI_EVENT *pUIEvent )
// Change cusror to normal // Change cusror to normal
guiNewUICursor = NORMAL_FREEUICURSOR; guiNewUICursor = NORMAL_FREEUICURSOR;
} }
// Check for done flag // Check for done flag
@@ -1721,14 +1705,12 @@ UINT32 UIHandleMovementMenu( UI_EVENT *pUIEvent )
UIHandleSoldierStanceChange( pSoldier->ubID, ANIM_PRONE ); UIHandleSoldierStanceChange( pSoldier->ubID, ANIM_PRONE );
break; break;
} }
guiPendingOverrideEvent = A_CHANGE_TO_MOVE; guiPendingOverrideEvent = A_CHANGE_TO_MOVE;
//pSoldier->usUIMovementMode = (INT8)pUIEvent->uiParams[ 0 ]; //pSoldier->usUIMovementMode = (INT8)pUIEvent->uiParams[ 0 ];
} }
} }
} }
@@ -1738,7 +1720,6 @@ UINT32 UIHandleMovementMenu( UI_EVENT *pUIEvent )
UINT32 UIHandlePositionMenu( UI_EVENT *pUIEvent ) UINT32 UIHandlePositionMenu( UI_EVENT *pUIEvent )
{ {
return( GAME_SCREEN ); return( GAME_SCREEN );
} }
@@ -1791,7 +1772,6 @@ UINT32 UIHandleAOnTerrain( UI_EVENT *pUIEvent )
} }
} }
} }
} }
guiNewUICursor = GetProperItemCursor( (UINT8)gusSelectedSoldier, pSoldier->inv[ HANDPOS ].usItem, usMapPos, FALSE ); guiNewUICursor = GetProperItemCursor( (UINT8)gusSelectedSoldier, pSoldier->inv[ HANDPOS ].usItem, usMapPos, FALSE );
@@ -1821,20 +1801,14 @@ UINT32 UIHandleAOnTerrain( UI_EVENT *pUIEvent )
gUITargetReady = TRUE; gUITargetReady = TRUE;
} }
} }
else else
{ {
gUITargetReady = FALSE; gUITargetReady = FALSE;
} }
} }
} }
return( GAME_SCREEN ); return( GAME_SCREEN );
} }
@@ -1901,7 +1875,6 @@ UINT32 UIHandleCWait( UI_EVENT *pUIEvent )
if ( pInvTile != NULL ) if ( pInvTile != NULL )
{ {
fSetCursor = HandleUIMovementCursor( pSoldier, uiCursorFlags, usMapPos, MOVEUI_TARGET_INTTILES ); fSetCursor = HandleUIMovementCursor( pSoldier, uiCursorFlags, usMapPos, MOVEUI_TARGET_INTTILES );
//Set UI CURSOR //Set UI CURSOR
@@ -1913,7 +1886,6 @@ UINT32 UIHandleCWait( UI_EVENT *pUIEvent )
gfUIHandleShowMoveGrid = 2; gfUIHandleShowMoveGrid = 2;
} }
return( GAME_SCREEN ); return( GAME_SCREEN );
} }
@@ -1934,7 +1906,6 @@ UINT32 UIHandleCWait( UI_EVENT *pUIEvent )
//DrawUIMovementPath( pSoldier, sMapPos, 0 ); //DrawUIMovementPath( pSoldier, sMapPos, 0 );
fSetCursor = HandleUIMovementCursor( pSoldier, uiCursorFlags, usMapPos, 0 ); fSetCursor = HandleUIMovementCursor( pSoldier, uiCursorFlags, usMapPos, 0 );
} }
} }
return( GAME_SCREEN ); return( GAME_SCREEN );
@@ -1980,14 +1951,14 @@ UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent )
{ {
if ( OK_CONTROLLABLE_MERC( pSoldier ) && pSoldier->bAssignment == CurrentSquad( ) && !pSoldier->flags.fMercAsleep ) if ( OK_CONTROLLABLE_MERC( pSoldier ) && pSoldier->bAssignment == CurrentSquad( ) && !pSoldier->flags.fMercAsleep )
{ {
// If we can't be controlled, returninvalid... // If we can't be controlled, returninvalid...
if ( pSoldier->flags.uiStatusFlags & SOLDIER_ROBOT ) if ( pSoldier->flags.uiStatusFlags & SOLDIER_ROBOT )
{ {
if ( !pSoldier->CanRobotBeControlled( ) ) if ( !pSoldier->CanRobotBeControlled( ) )
{ {
continue; continue;
} }
} }
pSoldier->AdjustNoAPToFinishMove( FALSE ); pSoldier->AdjustNoAPToFinishMove( FALSE );
@@ -2007,7 +1978,6 @@ UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent )
// Remove any previous actions // Remove any previous actions
pSoldier->aiData.ubPendingAction = NO_PENDING_ACTION; pSoldier->aiData.ubPendingAction = NO_PENDING_ACTION;
//if ( !( gTacticalStatus.uiFlags & INCOMBAT ) && ( gAnimControl[ pSoldier->usAnimState ].uiFlags & ANIM_MOVING ) ) //if ( !( gTacticalStatus.uiFlags & INCOMBAT ) && ( gAnimControl[ pSoldier->usAnimState ].uiFlags & ANIM_MOVING ) )
//{ //{
// pSoldier->sRTPendingMovementGridNo = sMapPos; // pSoldier->sRTPendingMovementGridNo = sMapPos;
@@ -2033,7 +2003,6 @@ UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent )
SetConfirmMovementModeCursor( pSoldier, TRUE ); SetConfirmMovementModeCursor( pSoldier, TRUE );
gfUIAllMoveOn = 0; gfUIAllMoveOn = 0;
} }
else else
{ {
@@ -2062,10 +2031,8 @@ UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent )
pSoldier->usUIMovementMode = pSoldier->GetMoveStateBasedOnStance( gAnimControl[ pSoldier->usAnimState ].ubEndHeight ); pSoldier->usUIMovementMode = pSoldier->GetMoveStateBasedOnStance( gAnimControl[ pSoldier->usAnimState ].ubEndHeight );
} }
sDestGridNo = usMapPos; sDestGridNo = usMapPos;
// Get structure info for in tile! // Get structure info for in tile!
pIntTile = GetCurInteractiveTileGridNoAndStructure( &sIntTileGridNo, &pStructure ); pIntTile = GetCurInteractiveTileGridNoAndStructure( &sIntTileGridNo, &pStructure );
@@ -2223,18 +2190,15 @@ UINT32 UIHandleMCycleMovement( UI_EVENT *pUIEvent )
fGoodMode = TRUE; fGoodMode = TRUE;
} }
} }
} while( fGoodMode != TRUE ); } while( fGoodMode != TRUE );
gfPlotNewMovement = TRUE; gfPlotNewMovement = TRUE;
return( GAME_SCREEN ); return( GAME_SCREEN );
} }
UINT32 UIHandleCOnTerrain( UI_EVENT *pUIEvent ) UINT32 UIHandleCOnTerrain( UI_EVENT *pUIEvent )
{ {
return( GAME_SCREEN ); return( GAME_SCREEN );
} }
@@ -2242,19 +2206,18 @@ UINT32 UIHandleCOnTerrain( UI_EVENT *pUIEvent )
UINT32 UIHandleMAdjustStanceMode( UI_EVENT *pUIEvent ) UINT32 UIHandleMAdjustStanceMode( UI_EVENT *pUIEvent )
{ {
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
INT32 iPosDiff; INT32 iPosDiff;
static UINT16 gusAnchorMouseY; static UINT16 gusAnchorMouseY;
static UINT16 usOldMouseY; static UINT16 usOldMouseY;
static BOOLEAN ubNearHeigherLevel; static BOOLEAN ubNearHeigherLevel;
static BOOLEAN ubNearLowerLevel; static BOOLEAN ubNearLowerLevel;
static UINT8 ubUpHeight, ubDownDepth; static UINT8 ubUpHeight, ubDownDepth;
static UINT32 uiOldShowUPDownArrows; static UINT32 uiOldShowUPDownArrows;
INT8 bNewDirection; INT8 bNewDirection;
// Change cusror to normal // Change cusror to normal
guiNewUICursor = NO_UICURSOR; guiNewUICursor = NO_UICURSOR;
if ( pUIEvent->fFirstTime ) if ( pUIEvent->fFirstTime )
{ {
gusAnchorMouseY = gusMouseYPos; gusAnchorMouseY = gusMouseYPos;
@@ -2347,10 +2310,7 @@ UINT32 UIHandleMAdjustStanceMode( UI_EVENT *pUIEvent )
} }
break; break;
} }
} }
} }
// Check if delta X has changed alot since last time // Check if delta X has changed alot since last time
@@ -2411,12 +2371,10 @@ UINT32 UIHandleMAdjustStanceMode( UI_EVENT *pUIEvent )
} }
} }
} }
} }
if ( gusAnchorMouseY < gusMouseYPos ) if ( gusAnchorMouseY < gusMouseYPos )
{ {
// Get soldier // Get soldier
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) ) if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
{ {
@@ -2468,11 +2426,8 @@ UINT32 UIHandleMAdjustStanceMode( UI_EVENT *pUIEvent )
gbClimbID = -1; gbClimbID = -1;
} }
} }
} }
} }
} }
uiOldShowUPDownArrows = guiShowUPDownArrows; uiOldShowUPDownArrows = guiShowUPDownArrows;
@@ -2487,7 +2442,6 @@ UINT32 UIHandleAChangeToConfirmAction( UI_EVENT *pUIEvent )
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) ) if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
{ {
HandleLeftClickCursor( pSoldier ); HandleLeftClickCursor( pSoldier );
} }
ResetBurstLocations( ); ResetBurstLocations( );
@@ -2511,7 +2465,6 @@ UINT32 UIHandleCAOnTerrain( UI_EVENT *pUIEvent )
guiNewUICursor = GetProperItemCursor( (UINT8)gusSelectedSoldier, pSoldier->inv[ HANDPOS ].usItem, usMapPos, TRUE ); guiNewUICursor = GetProperItemCursor( (UINT8)gusSelectedSoldier, pSoldier->inv[ HANDPOS ].usItem, usMapPos, TRUE );
UIHandleOnMerc( FALSE ); UIHandleOnMerc( FALSE );
} }
return( GAME_SCREEN ); return( GAME_SCREEN );
@@ -2618,7 +2571,6 @@ void UIHandleMercAttack( SOLDIERTYPE *pSoldier , SOLDIERTYPE *pTargetSoldier, IN
} }
} }
// Cannot be fire if we are already in a fire animation.... // Cannot be fire if we are already in a fire animation....
// this is to stop the shooting trigger/happy duded from contiously pressing fire... // this is to stop the shooting trigger/happy duded from contiously pressing fire...
if ( !(gTacticalStatus.uiFlags & INCOMBAT) ) if ( !(gTacticalStatus.uiFlags & INCOMBAT) )
@@ -2638,7 +2590,6 @@ void UIHandleMercAttack( SOLDIERTYPE *pSoldier , SOLDIERTYPE *pTargetSoldier, IN
// guiPendingOverrideEvent = A_CHANGE_TO_MOVE; // guiPendingOverrideEvent = A_CHANGE_TO_MOVE;
} }
if (pSoldier->bWeaponMode == WM_ATTACHED_GL || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO ) if (pSoldier->bWeaponMode == WM_ATTACHED_GL || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO )
{ {
iHandleReturn = HandleItem( pSoldier, sTargetGridNo, bTargetLevel, GetAttachedGrenadeLauncher(pObj), TRUE ); iHandleReturn = HandleItem( pSoldier, sTargetGridNo, bTargetLevel, GetAttachedGrenadeLauncher(pObj), TRUE );
@@ -2663,7 +2614,6 @@ void UIHandleMercAttack( SOLDIERTYPE *pSoldier , SOLDIERTYPE *pTargetSoldier, IN
} }
} }
if ( gTacticalStatus.uiFlags & TURNBASED && !( gTacticalStatus.uiFlags & INCOMBAT ) ) if ( gTacticalStatus.uiFlags & TURNBASED && !( gTacticalStatus.uiFlags & INCOMBAT ) )
{ {
HandleUICursorRTFeedback( pSoldier ); HandleUICursorRTFeedback( pSoldier );
@@ -2711,11 +2661,10 @@ UINT32 UIHandleCAMercShoot( UI_EVENT *pUIEvent )
{ {
INT32 usMapPos; INT32 usMapPos;
SOLDIERTYPE *pSoldier, *pTSoldier = NULL; SOLDIERTYPE *pSoldier, *pTSoldier = NULL;
BOOLEAN fDidRequester = FALSE; BOOLEAN fDidRequester = FALSE;
if ( gusSelectedSoldier != NOBODY ) if ( gusSelectedSoldier != NOBODY )
{ {
if( !GetMouseMapPos( &usMapPos) ) if( !GetMouseMapPos( &usMapPos) )
{ {
return( GAME_SCREEN ); return( GAME_SCREEN );
@@ -2731,7 +2680,6 @@ UINT32 UIHandleCAMercShoot( UI_EVENT *pUIEvent )
pTSoldier = MercPtrs[ gusUIFullTargetID ]; pTSoldier = MercPtrs[ gusUIFullTargetID ];
} }
if ( pTSoldier != NULL ) if ( pTSoldier != NULL )
{ {
// If this is one of our own guys.....pop up requiester... // If this is one of our own guys.....pop up requiester...
@@ -2753,7 +2701,6 @@ UINT32 UIHandleCAMercShoot( UI_EVENT *pUIEvent )
swprintf( zStr, TacticalStr[ ATTACK_OWN_GUY_PROMPT ], pTSoldier->GetName() ); swprintf( zStr, TacticalStr[ ATTACK_OWN_GUY_PROMPT ], pTSoldier->GetName() );
DoMessageBox( MSG_BOX_BASIC_STYLE, zStr, GAME_SCREEN, ( UINT8 )MSG_BOX_FLAG_YESNO, AttackRequesterCallback, NULL ); DoMessageBox( MSG_BOX_BASIC_STYLE, zStr, GAME_SCREEN, ( UINT8 )MSG_BOX_FLAG_YESNO, AttackRequesterCallback, NULL );
} }
//////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////
// SANDRO - Should we ask if we really want to do the surgery? // SANDRO - Should we ask if we really want to do the surgery?
@@ -2804,7 +2751,6 @@ UINT32 UIHandleAEndAction( UI_EVENT *pUIEvent )
return( GAME_SCREEN ); return( GAME_SCREEN );
} }
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) ) if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
{ {
if ( ( gTacticalStatus.uiFlags & REALTIME ) || !( gTacticalStatus.uiFlags & INCOMBAT ) ) if ( ( gTacticalStatus.uiFlags & REALTIME ) || !( gTacticalStatus.uiFlags & INCOMBAT ) )
@@ -2820,9 +2766,9 @@ UINT32 UIHandleAEndAction( UI_EVENT *pUIEvent )
gUITargetReady = FALSE; gUITargetReady = FALSE;
} }
} }
} }
return( GAME_SCREEN ); return( GAME_SCREEN );
} }
@@ -2850,7 +2796,6 @@ UINT32 UIHandleIOnTerrain( UI_EVENT *pUIEvent )
return( GAME_SCREEN ); return( GAME_SCREEN );
} }
if ( !UIHandleOnMerc( TRUE ) ) if ( !UIHandleOnMerc( TRUE ) )
{ {
// Check if dest is OK // Check if dest is OK
@@ -2875,10 +2820,9 @@ UINT32 UIHandleIChangeToIdle( UI_EVENT *pUIEvent )
UINT32 UIHandlePADJAdjustStance( UI_EVENT *pUIEvent ) UINT32 UIHandlePADJAdjustStance( UI_EVENT *pUIEvent )
{ {
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
UINT8 ubNewStance; UINT8 ubNewStance;
guiShowUPDownArrows = ARROWS_HIDE_UP | ARROWS_HIDE_DOWN;
guiShowUPDownArrows = ARROWS_HIDE_UP | ARROWS_HIDE_DOWN;
gfIgnoreScrolling = FALSE; gfIgnoreScrolling = FALSE;
@@ -2905,10 +2849,9 @@ UINT32 UIHandlePADJAdjustStance( UI_EVENT *pUIEvent )
// Once we have APs, we can safely reset nomove flag! // Once we have APs, we can safely reset nomove flag!
// AdjustNoAPToFinishMove( pSoldier, FALSE ); // AdjustNoAPToFinishMove( pSoldier, FALSE );
} }
} }
return( GAME_SCREEN ); return( GAME_SCREEN );
} }
@@ -3018,11 +2961,10 @@ void AdjustSoldierCreationStartValues( )
INT32 cnt; INT32 cnt;
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier;
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
guiCreateGuyIndex = (INT16)cnt; guiCreateGuyIndex = (INT16)cnt;
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; pSoldier++, cnt++ ) for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; pSoldier++, ++cnt )
{ {
if ( !pSoldier->bActive ) if ( !pSoldier->bActive )
{ {
@@ -3034,7 +2976,7 @@ void AdjustSoldierCreationStartValues( )
cnt = gTacticalStatus.Team[ gbPlayerNum ].bLastID + 1; cnt = gTacticalStatus.Team[ gbPlayerNum ].bLastID + 1;
guiCreateBadGuyIndex = (INT16)cnt; guiCreateBadGuyIndex = (INT16)cnt;
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ LAST_TEAM ].bLastID; pSoldier++, cnt++ ) for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ LAST_TEAM ].bLastID; pSoldier++, ++cnt )
{ {
if ( !pSoldier->bActive && cnt > gTacticalStatus.Team[ gbPlayerNum ].bLastID ) if ( !pSoldier->bActive && cnt > gTacticalStatus.Team[ gbPlayerNum ].bLastID )
{ {
@@ -3042,7 +2984,6 @@ void AdjustSoldierCreationStartValues( )
break; break;
} }
} }
} }
BOOLEAN SelectedMercCanAffordAttack( ) BOOLEAN SelectedMercCanAffordAttack( )
@@ -3057,14 +2998,13 @@ BOOLEAN SelectedMercCanAffordAttack( )
if ( gusSelectedSoldier != NOBODY ) if ( gusSelectedSoldier != NOBODY )
{ {
if( !GetMouseMapPos( &usMapPos) ) if( !GetMouseMapPos( &usMapPos) )
{ {
return( GAME_SCREEN ); return( GAME_SCREEN );
} }
// Get soldier // Get soldier
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) ) if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
{ {
// LOOK IN GUY'S HAND TO CHECK LOCATION // LOOK IN GUY'S HAND TO CHECK LOCATION
usInHand = pSoldier->inv[HANDPOS].usItem; usInHand = pSoldier->inv[HANDPOS].usItem;
@@ -3120,7 +3060,6 @@ BOOLEAN SelectedMercCanAffordAttack( )
} }
} }
} }
} }
return( FALSE ); return( FALSE );
@@ -3135,14 +3074,13 @@ BOOLEAN SelectedMercCanAffordMove( )
LEVELNODE *pIntTile; LEVELNODE *pIntTile;
// Get soldier // Get soldier
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) ) if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
{ {
if( !GetMouseMapPos( &usMapPos) ) if( !GetMouseMapPos( &usMapPos) )
{ {
return( GAME_SCREEN ); return( GAME_SCREEN );
} }
// IF WE ARE OVER AN INTERACTIVE TILE, GIVE GRIDNO OF POSITION // IF WE ARE OVER AN INTERACTIVE TILE, GIVE GRIDNO OF POSITION
pIntTile = GetCurInteractiveTile( ); pIntTile = GetCurInteractiveTile( );
@@ -3405,7 +3343,6 @@ BOOLEAN UIHandleOnMerc( BOOLEAN fMovementMode )
guiShowUPDownArrows = ARROWS_SHOW_DOWN_BESIDE | ARROWS_SHOW_UP_BESIDE; guiShowUPDownArrows = ARROWS_SHOW_DOWN_BESIDE | ARROWS_SHOW_UP_BESIDE;
} }
} }
} }
else else
{ {
@@ -3455,7 +3392,6 @@ BOOLEAN UIHandleOnMerc( BOOLEAN fMovementMode )
{ {
if ( fMovementMode ) if ( fMovementMode )
{ {
// Check if this guy is on the enemy team.... // Check if this guy is on the enemy team....
if ( !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum ) ) if ( !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum ) )
{ {
@@ -3543,9 +3479,7 @@ UINT32 UIHandleIETOnTerrain( UI_EVENT *pUIEvent )
void UIHandleSoldierStanceChange( UINT8 ubSoldierID, INT8 bNewStance ) void UIHandleSoldierStanceChange( UINT8 ubSoldierID, INT8 bNewStance )
{ {
SOLDIERTYPE *pSoldier; SOLDIERTYPE *pSoldier = MercPtrs[ ubSoldierID ];
pSoldier = MercPtrs[ ubSoldierID ];
// Is this a valid stance for our position? // Is this a valid stance for our position?
if ( !IsValidStance( pSoldier, bNewStance ) ) if ( !IsValidStance( pSoldier, bNewStance ) )
@@ -3554,9 +3488,7 @@ void UIHandleSoldierStanceChange( UINT8 ubSoldierID, INT8 bNewStance )
{ {
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, gzLateLocalizedString[ 4 ], pSoldier->GetName() ); ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, gzLateLocalizedString[ 4 ], pSoldier->GetName() );
} }
else else if ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE )
{
if ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE )
{ {
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ VEHICLES_NO_STANCE_CHANGE_STR ] ); ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ VEHICLES_NO_STANCE_CHANGE_STR ] );
} }
@@ -3564,18 +3496,15 @@ void UIHandleSoldierStanceChange( UINT8 ubSoldierID, INT8 bNewStance )
{ {
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ ROBOT_NO_STANCE_CHANGE_STR ] ); ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ ROBOT_NO_STANCE_CHANGE_STR ] );
} }
else if ( pSoldier->bCollapsed )
{
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, pMessageStrings[ MSG_CANT_CHANGE_STANCE ], pSoldier->GetName() );
}
else else
{ {
if ( pSoldier->bCollapsed ) ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ CANNOT_STANCE_CHANGE_STR ], pSoldier->GetName() );
{
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, pMessageStrings[ MSG_CANT_CHANGE_STANCE ], pSoldier->GetName() );
}
else
{
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ CANNOT_STANCE_CHANGE_STR ], pSoldier->GetName() );
}
}
} }
return; return;
} }
@@ -3614,7 +3543,6 @@ void UIHandleSoldierStanceChange( UINT8 ubSoldierID, INT8 bNewStance )
{ {
// Change stance normally // Change stance normally
SendChangeSoldierStanceEvent( pSoldier, bNewStance ); SendChangeSoldierStanceEvent( pSoldier, bNewStance );
} }
else else
{ {
+5
View File
@@ -165,11 +165,16 @@ INT32 *gpDirtyData;
UINT32 gSurfaceMemUsage; UINT32 gSurfaceMemUsage;
//UINT8 gubWorldMovementCosts[ WORLD_MAX ][MAXDIR][2]; //UINT8 gubWorldMovementCosts[ WORLD_MAX ][MAXDIR][2];
UINT8 (*gubWorldMovementCosts)[MAXDIR][2] = NULL;//dnl ch43 260909 UINT8 (*gubWorldMovementCosts)[MAXDIR][2] = NULL;//dnl ch43 260909
// Flugente: this stuff is only ever used in AStar pathing and is a unnecessary waste of resources otherwise, so I'm putting an end to this
#ifdef USE_ASTAR_PATHS
//ddd äëÿ óáûñòðåíèÿ ïîèñêà îñâåùåííûõ ó÷àñòêîâ â ïàòõàè. //ddd äëÿ óáûñòðåíèÿ ïîèñêà îñâåùåííûõ ó÷àñòêîâ â ïàòõàè.
BOOLEAN gubWorldTileInLight[ MAX_ALLOWED_WORLD_MAX ]; BOOLEAN gubWorldTileInLight[ MAX_ALLOWED_WORLD_MAX ];
BOOLEAN gubIsCorpseThere[ MAX_ALLOWED_WORLD_MAX ]; BOOLEAN gubIsCorpseThere[ MAX_ALLOWED_WORLD_MAX ];
INT32 gubMerkCanSeeThisTile[ MAX_ALLOWED_WORLD_MAX ]; INT32 gubMerkCanSeeThisTile[ MAX_ALLOWED_WORLD_MAX ];
//ddd //ddd
#endif
// set to nonzero (locs of base gridno of structure are good) to have it defined by structure code // set to nonzero (locs of base gridno of structure are good) to have it defined by structure code
INT16 gsRecompileAreaTop = 0; INT16 gsRecompileAreaTop = 0;
INT16 gsRecompileAreaLeft = 0; INT16 gsRecompileAreaLeft = 0;
+3
View File
@@ -283,6 +283,8 @@ typedef struct
// World Data // World Data
extern MAP_ELEMENT *gpWorldLevelData; extern MAP_ELEMENT *gpWorldLevelData;
// Flugente: this stuff is only ever used in AStar pathing and is a unnecessary waste of resources otherwise, so I'm putting an end to this
#ifdef USE_ASTAR_PATHS
// World Movement Costs // World Movement Costs
//UINT8 gubWorldMovementCosts[ WORLD_MAX ][MAXDIR][2]; //UINT8 gubWorldMovementCosts[ WORLD_MAX ][MAXDIR][2];
//ddd Tables to track tactical value of grid tiles //ddd Tables to track tactical value of grid tiles
@@ -290,6 +292,7 @@ extern BOOLEAN gubWorldTileInLight[ MAX_ALLOWED_WORLD_MAX ];
extern BOOLEAN gubIsCorpseThere[ MAX_ALLOWED_WORLD_MAX ]; //Tracks position of corpses for AI avoidance extern BOOLEAN gubIsCorpseThere[ MAX_ALLOWED_WORLD_MAX ]; //Tracks position of corpses for AI avoidance
extern INT32 gubMerkCanSeeThisTile[ MAX_ALLOWED_WORLD_MAX ]; //Tracks visibility my mercs extern INT32 gubMerkCanSeeThisTile[ MAX_ALLOWED_WORLD_MAX ]; //Tracks visibility my mercs
//ddd //ddd
#endif
extern UINT8 (*gubWorldMovementCosts)[MAXDIR][2];//dnl ch43 260909 extern UINT8 (*gubWorldMovementCosts)[MAXDIR][2];//dnl ch43 260909