mirror of
https://github.com/1dot13/source.git
synced 2026-08-05 14:00:23 +02:00
- new setting in game options: Space selects next squad, when turned on there is no need to press Shift+Space to select next squad
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@165 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -506,6 +506,8 @@ void UpdateStatColor( UINT32 uiTimer, BOOLEAN fUpdate );
|
||||
|
||||
extern void UpdateItemHatches();
|
||||
|
||||
extern SOLDIERTYPE *FindNextActiveSquad( SOLDIERTYPE *pSoldier );
|
||||
|
||||
// Wraps up check for AP-s get from a different soldier for in a vehicle...
|
||||
INT8 GetUIApsToDisplay( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
@@ -5286,85 +5288,109 @@ void CheckForAndAddMercToTeamPanel( SOLDIERTYPE *pSoldier )
|
||||
UINT8 FindNextMercInTeamPanel( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLessOKLife, BOOLEAN fOnlyRegularMercs )
|
||||
{
|
||||
INT32 cnt;
|
||||
INT32 bFirstID;
|
||||
SOLDIERTYPE *pTeamSoldier;
|
||||
|
||||
INT32 bFirstID;
|
||||
SOLDIERTYPE *pTeamSoldier;
|
||||
|
||||
bFirstID = GetTeamSlotFromPlayerID( pSoldier->ubID );
|
||||
|
||||
if ( bFirstID == -1 )
|
||||
{
|
||||
return( pSoldier->ubID );
|
||||
}
|
||||
bFirstID = GetTeamSlotFromPlayerID( pSoldier->ubID );
|
||||
|
||||
if ( bFirstID == -1 )
|
||||
{
|
||||
return( pSoldier->ubID );
|
||||
}
|
||||
|
||||
for ( cnt = ( bFirstID + 1 ); cnt < NUM_TEAM_SLOTS; cnt++ )
|
||||
{
|
||||
if ( gTeamPanel[ cnt ].fOccupied )
|
||||
{
|
||||
// Set Id to close
|
||||
pTeamSoldier = MercPtrs[ gTeamPanel[ cnt ].ubID ];
|
||||
if ( gTeamPanel[ cnt ].fOccupied )
|
||||
{
|
||||
// Set Id to close
|
||||
pTeamSoldier = MercPtrs[ gTeamPanel[ cnt ].ubID ];
|
||||
|
||||
if ( fOnlyRegularMercs )
|
||||
{
|
||||
if ( pTeamSoldier->bActive && ( AM_AN_EPC( pTeamSoldier ) || AM_A_ROBOT( pTeamSoldier ) ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if ( fOnlyRegularMercs )
|
||||
{
|
||||
if ( pTeamSoldier->bActive && ( AM_AN_EPC( pTeamSoldier ) || AM_A_ROBOT( pTeamSoldier ) ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if ( fGoodForLessOKLife )
|
||||
{
|
||||
if ( pTeamSoldier->bLife > 0 && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bTeam == gbPlayerNum && pTeamSoldier->bAssignment < ON_DUTY && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment )
|
||||
{
|
||||
return( (UINT8)gTeamPanel[ cnt ].ubID );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( OK_CONTROLLABLE_MERC( pTeamSoldier) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment )
|
||||
{
|
||||
return( (UINT8)gTeamPanel[ cnt ].ubID );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// none found,
|
||||
// Now loop back
|
||||
for ( cnt = 0; cnt < bFirstID; cnt++ )
|
||||
{
|
||||
if ( gTeamPanel[ cnt ].fOccupied )
|
||||
{
|
||||
pTeamSoldier = MercPtrs[ gTeamPanel[ cnt ].ubID ];
|
||||
|
||||
if ( fOnlyRegularMercs )
|
||||
{
|
||||
if ( pTeamSoldier->bActive && ( AM_AN_EPC( pTeamSoldier ) || AM_A_ROBOT( pTeamSoldier ) ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if ( fGoodForLessOKLife )
|
||||
{
|
||||
if ( pTeamSoldier->bLife > 0 && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bTeam == gbPlayerNum && pTeamSoldier->bAssignment < ON_DUTY && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment )
|
||||
{
|
||||
return( (UINT8)gTeamPanel[ cnt ].ubID );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( OK_CONTROLLABLE_MERC( pTeamSoldier) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment )
|
||||
{
|
||||
return( (UINT8)gTeamPanel[ cnt ].ubID );
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( fGoodForLessOKLife )
|
||||
{
|
||||
if ( pTeamSoldier->bLife > 0 && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bTeam == gbPlayerNum && pTeamSoldier->bAssignment < ON_DUTY && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment )
|
||||
{
|
||||
return( (UINT8)gTeamPanel[ cnt ].ubID );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( OK_CONTROLLABLE_MERC( pTeamSoldier) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment )
|
||||
{
|
||||
return( (UINT8)gTeamPanel[ cnt ].ubID );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( ( gusSelectedSoldier != NO_SOLDIER ) && ( gGameSettings.fOptions[ TOPTION_SPACE_SELECTS_NEXT_SQUAD ] ) )
|
||||
{
|
||||
// only allow if nothing in hand and if in SM panel, the Change Squad button must be enabled
|
||||
if ( ( ( gsCurInterfacePanel != TEAM_PANEL ) || ( ButtonList[ iTEAMPanelButtons[ CHANGE_SQUAD_BUTTON ] ]->uiFlags & BUTTON_ENABLED ) ) )
|
||||
{
|
||||
SOLDIERTYPE *pNewSoldier;
|
||||
INT32 iCurrentSquad;
|
||||
|
||||
//Select next squad
|
||||
iCurrentSquad = CurrentSquad( );
|
||||
|
||||
pNewSoldier = FindNextActiveSquad( MercPtrs[ gusSelectedSoldier ] );
|
||||
|
||||
if ( pNewSoldier->bAssignment != iCurrentSquad )
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_SQUAD_ACTIVE ], ( CurrentSquad( ) + 1 ) );
|
||||
|
||||
return( pNewSoldier->ubID );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( !gGameSettings.fOptions[ TOPTION_SPACE_SELECTS_NEXT_SQUAD ] )
|
||||
{
|
||||
// none found,
|
||||
// Now loop back
|
||||
for ( cnt = 0; cnt < bFirstID; cnt++ )
|
||||
{
|
||||
if ( gTeamPanel[ cnt ].fOccupied )
|
||||
{
|
||||
pTeamSoldier = MercPtrs[ gTeamPanel[ cnt ].ubID ];
|
||||
|
||||
if ( fOnlyRegularMercs )
|
||||
{
|
||||
if ( pTeamSoldier->bActive && ( AM_AN_EPC( pTeamSoldier ) || AM_A_ROBOT( pTeamSoldier ) ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if ( fGoodForLessOKLife )
|
||||
{
|
||||
if ( pTeamSoldier->bLife > 0 && pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bTeam == gbPlayerNum && pTeamSoldier->bAssignment < ON_DUTY && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment )
|
||||
{
|
||||
return( (UINT8)gTeamPanel[ cnt ].ubID );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( OK_CONTROLLABLE_MERC( pTeamSoldier) && OK_INTERRUPT_MERC( pTeamSoldier ) && pSoldier->bAssignment == pTeamSoldier->bAssignment )
|
||||
{
|
||||
return( (UINT8)gTeamPanel[ cnt ].ubID );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// IF we are here, keep as we always were!
|
||||
return( pSoldier->ubID );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user