diff --git a/GameSettings.cpp b/GameSettings.cpp index ff46d574..95edee5f 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -242,7 +242,7 @@ void InitGameSettings() gGameSettings.fOptions[ TOPTION_TOGGLE_WIREFRAME ] = TRUE; gGameSettings.fOptions[ TOPTION_3D_CURSOR ] = FALSE; gGameSettings.fOptions[ TOPTION_CTH_CURSOR ] = TRUE; -//Madd: + //Madd: gGameSettings.fOptions[ TOPTION_GL_BURST_CURSOR ] = TRUE; gGameSettings.fOptions[ TOPTION_DROP_ALL ] = FALSE; gGameSettings.fOptions[ TOPTION_GL_HIGH_ANGLE ] = FALSE; @@ -250,6 +250,9 @@ void InitGameSettings() // JA2Gold gGameSettings.fOptions[ TOPTION_MERC_CASTS_LIGHT ] = TRUE; + //lalien + gGameSettings.fOptions[ TOPTION_SPACE_SELECTS_NEXT_SQUAD ] = TRUE; + gGameSettings.ubSizeOfDisplayCover = 4; gGameSettings.ubSizeOfLOS = 4; diff --git a/GameSettings.h b/GameSettings.h index 74185550..e18376bf 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -45,6 +45,7 @@ enum TOPTION_DROP_ALL, TOPTION_GL_HIGH_ANGLE, TOPTION_AIM_LEVEL_RESTRICTION, + TOPTION_SPACE_SELECTS_NEXT_SQUAD, NUM_GAME_OPTIONS, //Toggle up this will be able to be Toggled by the player //These options will NOT be toggable by the Player diff --git a/GameVersion.cpp b/GameVersion.cpp index a3932adc..76f6a3a6 100644 --- a/GameVersion.cpp +++ b/GameVersion.cpp @@ -23,7 +23,7 @@ INT16 zVersionLabel[256] = { L"Beta v. 0.98" }; #else //RELEASE BUILD VERSION - INT16 zVersionLabel[256] = { L"Release v1.13.164" }; + INT16 zVersionLabel[256] = { L"Release v1.13.165" }; #endif diff --git a/JA2.vcproj b/JA2.vcproj index 76f3b712..b5c9bc73 100644 --- a/JA2.vcproj +++ b/JA2.vcproj @@ -43,7 +43,7 @@ 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 ); - } diff --git a/Tactical/Turn Based Input.cpp b/Tactical/Turn Based Input.cpp index 20b6e706..03fd9608 100644 --- a/Tactical/Turn Based Input.cpp +++ b/Tactical/Turn Based Input.cpp @@ -1816,60 +1816,62 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) fShift = InputEvent.usKeyState & SHIFT_DOWN ? TRUE : FALSE; switch( InputEvent.usParam ) { - case SPACE: + case SPACE: - // nothing in hand and either not in SM panel, or the matching button is enabled if we are in SM panel - if ( !( gTacticalStatus.uiFlags & ENGAGED_IN_CONV ) && - ( ( gsCurInterfacePanel != SM_PANEL ) || ( ButtonList[ iSMPanelButtons[ NEXTMERC_BUTTON ] ]->uiFlags & BUTTON_ENABLED ) ) ) + // nothing in hand and either not in SM panel, or the matching button is enabled if we are in SM panel + if ( !( gTacticalStatus.uiFlags & ENGAGED_IN_CONV ) && + ( ( gsCurInterfacePanel != SM_PANEL ) || ( ButtonList[ iSMPanelButtons[ NEXTMERC_BUTTON ] ]->uiFlags & BUTTON_ENABLED ) ) ) + { + if ( !InKeyRingPopup( ) ) { - if ( !InKeyRingPopup( ) ) + if ( _KeyDown( SHIFT ) ) { - if ( _KeyDown( SHIFT ) ) - { - SOLDIERTYPE *pNewSoldier; - INT32 iCurrentSquad; + SOLDIERTYPE *pNewSoldier; + INT32 iCurrentSquad; - if ( gusSelectedSoldier != NO_SOLDIER ) - { - // 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 ) ) ) + if ( gusSelectedSoldier != NO_SOLDIER ) + { + // 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 ) ) ) + { + //Select next squad + iCurrentSquad = CurrentSquad( ); + + pNewSoldier = FindNextActiveSquad( MercPtrs[ gusSelectedSoldier ] ); + + if ( pNewSoldier->bAssignment != iCurrentSquad ) { - //Select next squad - iCurrentSquad = CurrentSquad( ); + HandleLocateSelectMerc( pNewSoldier->ubID, LOCATEANDSELECT_MERC ); - pNewSoldier = FindNextActiveSquad( MercPtrs[ gusSelectedSoldier ] ); + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_SQUAD_ACTIVE ], ( CurrentSquad( ) + 1 ) ); - if ( pNewSoldier->bAssignment != iCurrentSquad ) - { - HandleLocateSelectMerc( pNewSoldier->ubID, LOCATEANDSELECT_MERC ); - - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, pMessageStrings[ MSG_SQUAD_ACTIVE ], ( CurrentSquad( ) + 1 ) ); - - // Center to guy.... - LocateSoldier( gusSelectedSoldier, SETLOCATOR ); - } + // Center to guy.... + LocateSoldier( gusSelectedSoldier, SETLOCATOR ); } } } - else - { - if ( gusSelectedSoldier != NO_SOLDIER ) - { //Select next merc - UINT8 bID; - - bID = FindNextMercInTeamPanel( MercPtrs[ gusSelectedSoldier ], FALSE, FALSE ); - HandleLocateSelectMerc( bID, LOCATEANDSELECT_MERC ); - - // Center to guy.... - LocateSoldier( gusSelectedSoldier, SETLOCATOR ); - } - } - - *puiNewEvent = M_ON_TERRAIN; } + else + { + if ( gusSelectedSoldier != NO_SOLDIER ) + { //Select next merc + UINT8 bID; + + bID = FindNextMercInTeamPanel( MercPtrs[ gusSelectedSoldier ], FALSE, FALSE ); + + HandleLocateSelectMerc( bID, LOCATEANDSELECT_MERC ); + + // Center to guy.... + LocateSoldier( gusSelectedSoldier, SETLOCATOR ); + } + } + + *puiNewEvent = M_ON_TERRAIN; } - break; + } + break; + case TAB: // nothing in hand and either not in SM panel, or the matching button is enabled if we are in SM panel if ( ( gpItemPointer == NULL ) && diff --git a/Utils/_EnglishText.cpp b/Utils/_EnglishText.cpp index 2640f55e..f9cb4b92 100644 --- a/Utils/_EnglishText.cpp +++ b/Utils/_EnglishText.cpp @@ -3416,6 +3416,7 @@ STR16 zOptionsToggleText[] = L"Enemies Drop All Items", L"High Angle Grenade Launching", L"Restrict Extra Aim Levels to Rifles", + L"Space selects next squad", }; //This is the help text associated with the above toggles. @@ -3486,6 +3487,7 @@ STR16 zOptionsScreenHelpText[] = L"Enemies drop all items on death.", L"Grenade launchers fire grenades at higher angles.", L"Aim levels beyond 4 are restricted to rifles and sniper rifles.", + L"When enabled |S|p|a|c|e selects next squad automatically.", }; diff --git a/Utils/_GermanText.cpp b/Utils/_GermanText.cpp index 185efa4c..466019b5 100644 --- a/Utils/_GermanText.cpp +++ b/Utils/_GermanText.cpp @@ -3220,6 +3220,8 @@ STR16 zOptionsToggleText[] = L"Gegner lassen alles fallen", L"High Angle Grenade Launching", L"Restrict Extra Aim Levels to Rifles", + L"Space selects next squad", + L"When enabled |S|p|a|c|e selects next squad automatically.", }; //This is the help text associated with the above toggles. diff --git a/Utils/_RussianText.cpp b/Utils/_RussianText.cpp index 4b1f1841..646d7971 100644 --- a/Utils/_RussianText.cpp +++ b/Utils/_RussianText.cpp @@ -3405,6 +3405,8 @@ STR16 zOptionsToggleText[] = L"Enemies Drop All Items", L"High Angle Grenade Launching", L"Restrict Extra Aim Levels to Rifles", + L"Space selects next squad", + L"When enabled |S|p|a|c|e selects next squad automatically.", }; //This is the help text associated with the above toggles.