diff --git a/GameInitOptionsScreen.cpp b/GameInitOptionsScreen.cpp index 0760521f..76e00ee3 100644 --- a/GameInitOptionsScreen.cpp +++ b/GameInitOptionsScreen.cpp @@ -169,12 +169,16 @@ #define GIO_SQUAD_SIZE_SETTING_Y THIRD_COLUMN_Y #define GIO_SQUAD_SIZE_SETTING_WIDTH COMBO_WIDTH -#define GIO_BR_SETTING_X THIRD_COLUMN_X + COMBO_X_OFFSET -#define GIO_BR_SETTING_Y GIO_SQUAD_SIZE_SETTING_Y + COMBO_Y_OFFSET -#define GIO_BR_SETTING_WIDTH COMBO_WIDTH +#define GIO_BR_QUALITY_SETTING_X THIRD_COLUMN_X + COMBO_X_OFFSET +#define GIO_BR_QUALITY_SETTING_Y GIO_SQUAD_SIZE_SETTING_Y + COMBO_Y_OFFSET +#define GIO_BR_QUALITY_SETTING_WIDTH COMBO_WIDTH + +#define GIO_BR_QUANTITY_SETTING_X THIRD_COLUMN_X + COMBO_X_OFFSET +#define GIO_BR_QUANTITY_SETTING_Y GIO_BR_QUALITY_SETTING_Y + COMBO_Y_OFFSET +#define GIO_BR_QUANTITY_SETTING_WIDTH COMBO_WIDTH #define GIO_NCTH_SETTING_X THIRD_COLUMN_X + CHECK_X_OFFSET -#define GIO_NCTH_SETTING_Y GIO_BR_SETTING_Y + CHECK_Y_OFFSET +#define GIO_NCTH_SETTING_Y GIO_BR_QUANTITY_SETTING_Y + CHECK_Y_OFFSET #define GIO_NCTH_SETTING_WIDTH CHECK_WIDTH #define GIO_IIS_SETTING_X THIRD_COLUMN_X + CHECK_X_OFFSET @@ -262,7 +266,8 @@ // INI Properties #define JA2SP_DIFFICULTY_LEVEL "DIFFICULTY_LEVEL" -#define JA2SP_BOBBY_RAY_SELECTION "BOBBY_RAY_SELECTION" +#define JA2SP_BOBBY_RAY_QUALITY "BOBBY_RAY_QUALITY" +#define JA2SP_BOBBY_RAY_QUANTITY "BOBBY_RAY_QUANTITY" #define JA2SP_MAX_IMP_CHARACTERS "MAX_IMP_CHARACTERS" #define JA2SP_PROGRESS_SPEED_OF_ITEM_CHOICES "PROGRESS_SPEED_OF_ITEM_CHOICES" #define JA2SP_SKILL_TRAITS "SKILL_TRAITS" @@ -334,17 +339,6 @@ enum NUM_RPC_UB_OPTIONS, }; -// BR options -enum -{ - GIO_BR_GOOD, - GIO_BR_GREAT, - GIO_BR_EXCELLENT, - GIO_BR_AWESOME, - - NUM_BR_OPTIONS, -}; - enum { GIO_PROGRESS_VERY_SLOW, @@ -432,7 +426,8 @@ UINT32 guiGIOMainBackGroundImage; INT32 giGioMessageBox = -1; INT8 iCurrentDifficulty; -INT8 iCurrentBRSetting; +INT8 iCurrentBRQualitySetting; +INT8 iCurrentBRQuantitySetting; INT8 iCurrentIMPNumberSetting; INT8 iCurrentProgressSetting; INT8 iCurrentInventorySetting; @@ -466,10 +461,15 @@ INT32 giGIOIMPNumberButtonImage[ 2 ]; void BtnGIOIMPNumberSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason ); void BtnGIOIMPNumberSelectionRightCallback( GUI_BUTTON *btn,INT32 reason ); -UINT32 giGIOBRSettingButton[ 2 ]; -INT32 giGIOBRSettingButtonImage[ 2 ]; -void BtnGIOBRSettingLeftCallback( GUI_BUTTON *btn,INT32 reason ); -void BtnGIOBRSettingRightCallback( GUI_BUTTON *btn,INT32 reason ); +UINT32 giGIOBRQualitySettingButton[ 2 ]; +INT32 giGIOBRQualitySettingButtonImage[ 2 ]; +void BtnGIOBRQualitySettingLeftCallback( GUI_BUTTON *btn,INT32 reason ); +void BtnGIOBRQualitySettingRightCallback( GUI_BUTTON *btn,INT32 reason ); + +UINT32 giGIOBRQuantitySettingButton[ 2 ]; +INT32 giGIOBRQuantitySettingButtonImage[ 2 ]; +void BtnGIOBRQuantitySettingLeftCallback( GUI_BUTTON *btn,INT32 reason ); +void BtnGIOBRQuantitySettingRightCallback( GUI_BUTTON *btn,INT32 reason ); UINT32 giGIOProgressSettingButton[ 2 ]; INT32 giGIOProgressSettingButtonImage[ 2 ]; @@ -615,27 +615,12 @@ UINT32 GameInitOptionsScreenInit( void ) // Difficulty Level (Default: Experienced = 1) gGameOptions.ubDifficultyLevel = ((UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_DIFFICULTY_LEVEL, 1)) + 1; - // Bobby Ray's Selection (Default: Great = 1) - UINT8 ubBobbyRay = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_BOBBY_RAY_SELECTION, 1); - switch (ubBobbyRay) - { - // Normal - case 0: - gGameOptions.ubBobbyRay = BR_GOOD; - break; - // Great - case 1: - gGameOptions.ubBobbyRay = BR_GREAT; - break; - // Excellent - case 2: - gGameOptions.ubBobbyRay = BR_EXCELLENT; - break; - // Awesome - case 3: - gGameOptions.ubBobbyRay = BR_AWESOME; - break; - } + // Bobby Ray's Selection (Default: Good = 1) + UINT8 ubBobbyRayQuality = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_BOBBY_RAY_QUALITY, 1); + gGameOptions.ubBobbyRayQuality = max(min(1, ubBobbyRayQuality),10); + + UINT8 ubBobbyRayQuantity = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_BOBBY_RAY_QUANTITY, 1); + gGameOptions.ubBobbyRayQuantity = max(min(1, ubBobbyRayQuantity),10); // Max. IMP Characters UINT8 maxIMPCharacterCount = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_MAX_IMP_CHARACTERS, 1); @@ -990,43 +975,42 @@ BOOLEAN EnterGIOScreen() /////////////////////////////////////////////////////////////////////////////////////////////////////// // BOBBY RAY SETTING - giGIOBRSettingButtonImage[ 0 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 0 ], -1,0,-1,1,-1 ); - giGIOBRSettingButtonImage[ 1 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 1 ], -1,2,-1,3,-1 ); + giGIOBRQualitySettingButtonImage[ 0 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 0 ], -1,0,-1,1,-1 ); + giGIOBRQualitySettingButtonImage[ 1 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 1 ], -1,2,-1,3,-1 ); // left button - decrement BR level - giGIOBRSettingButton[ 0 ] = QuickCreateButton( giGIOBRSettingButtonImage[ 0 ], GIO_BR_SETTING_X + 39, GIO_BR_SETTING_Y , + giGIOBRQualitySettingButton[ 0 ] = QuickCreateButton( giGIOBRQualitySettingButtonImage[ 0 ], GIO_BR_QUALITY_SETTING_X + 39, GIO_BR_QUALITY_SETTING_Y , BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, - BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOBRSettingLeftCallback ); + BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOBRQualitySettingLeftCallback ); // right button - increment BR level - giGIOBRSettingButton[ 1 ] = QuickCreateButton( giGIOBRSettingButtonImage[ 1 ], GIO_BR_SETTING_X + 158, GIO_BR_SETTING_Y , + giGIOBRQualitySettingButton[ 1 ] = QuickCreateButton( giGIOBRQualitySettingButtonImage[ 1 ], GIO_BR_QUALITY_SETTING_X + 158, GIO_BR_QUALITY_SETTING_Y , BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, - BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOBRSettingRightCallback ); + BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOBRQualitySettingRightCallback ); + + giGIOBRQuantitySettingButtonImage[ 0 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 0 ], -1,0,-1,1,-1 ); + giGIOBRQuantitySettingButtonImage[ 1 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 1 ], -1,2,-1,3,-1 ); + + // left button - decrement BR level + giGIOBRQuantitySettingButton[ 0 ] = QuickCreateButton( giGIOBRQuantitySettingButtonImage[ 0 ], GIO_BR_QUANTITY_SETTING_X + 39, GIO_BR_QUANTITY_SETTING_Y , + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, + BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOBRQuantitySettingLeftCallback ); + + // right button - increment BR level + giGIOBRQuantitySettingButton[ 1 ] = QuickCreateButton( giGIOBRQuantitySettingButtonImage[ 1 ], GIO_BR_QUANTITY_SETTING_X + 158, GIO_BR_QUANTITY_SETTING_Y , + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, + BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOBRQuantitySettingRightCallback ); // set user data - MSYS_SetBtnUserData(giGIOBRSettingButton[0],0, 0 ); - MSYS_SetBtnUserData(giGIOBRSettingButton[1],0, 1 ); + MSYS_SetBtnUserData(giGIOBRQualitySettingButton[0],0, 0 ); + MSYS_SetBtnUserData(giGIOBRQualitySettingButton[1],0, 1 ); + MSYS_SetBtnUserData(giGIOBRQuantitySettingButton[0],0, 0 ); + MSYS_SetBtnUserData(giGIOBRQuantitySettingButton[1],0, 1 ); // set initial value - switch ( gGameOptions.ubBobbyRay ) - { - case BR_GOOD: - iCurrentBRSetting = GIO_BR_GOOD; - break; - case BR_GREAT: - iCurrentBRSetting = GIO_BR_GREAT; - break; - case BR_EXCELLENT: - iCurrentBRSetting = GIO_BR_EXCELLENT; - break; - case BR_AWESOME: - iCurrentBRSetting = GIO_BR_AWESOME; - break; - default: - iCurrentBRSetting = GIO_BR_GOOD; // optimistically assume, we have selected the normal one - break; - } - + iCurrentBRQualitySetting = gGameOptions.ubBobbyRayQuality; + iCurrentBRQuantitySetting = gGameOptions.ubBobbyRayQuantity; + /////////////////////////////////////////////////////////////////////////////////////////////////////// // ITEM PROGRESS SETTING @@ -1409,39 +1393,39 @@ void BtnGIODifficultySelectionRightCallback( GUI_BUTTON *btn,INT32 reason ) } } -void BtnGIOBRSettingLeftCallback( GUI_BUTTON *btn,INT32 reason ) +void BtnGIOBRQualitySettingLeftCallback( GUI_BUTTON *btn,INT32 reason ) { if (!(btn->uiFlags & BUTTON_ENABLED)) return; if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT ) { - if ( iCurrentBRSetting > 0 ) + if ( iCurrentBRQualitySetting > 1 ) { - PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_CLICKED_ON ); + PlayButtonSound( giGIOBRQualitySettingButton[0], BUTTON_SOUND_CLICKED_ON ); - iCurrentBRSetting--; + iCurrentBRQualitySetting--; gfReRenderGIOScreen =TRUE; } else { - PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_DISABLED_CLICK ); + PlayButtonSound( giGIOBRQualitySettingButton[0], BUTTON_SOUND_DISABLED_CLICK ); } } else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) { btn->uiFlags|=(BUTTON_CLICKED_ON); - if ( iCurrentBRSetting > 0 ) + if ( iCurrentBRQualitySetting > 1 ) { - PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_CLICKED_ON ); + PlayButtonSound( giGIOBRQualitySettingButton[0], BUTTON_SOUND_CLICKED_ON ); - iCurrentBRSetting--; + iCurrentBRQualitySetting--; gfReRenderGIOScreen =TRUE; } else { - PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_DISABLED_CLICK ); + PlayButtonSound( giGIOBRQualitySettingButton[0], BUTTON_SOUND_DISABLED_CLICK ); } } else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) @@ -1453,39 +1437,128 @@ void BtnGIOBRSettingLeftCallback( GUI_BUTTON *btn,INT32 reason ) } } -void BtnGIOBRSettingRightCallback( GUI_BUTTON *btn,INT32 reason ) +void BtnGIOBRQualitySettingRightCallback( GUI_BUTTON *btn,INT32 reason ) { if (!(btn->uiFlags & BUTTON_ENABLED)) return; if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT ) { - if ( iCurrentBRSetting < 3 ) + if ( iCurrentBRQualitySetting < 10 ) { - PlayButtonSound( giGIOBRSettingButton[1], BUTTON_SOUND_CLICKED_ON ); + PlayButtonSound( giGIOBRQualitySettingButton[1], BUTTON_SOUND_CLICKED_ON ); - iCurrentBRSetting++; + iCurrentBRQualitySetting++; gfReRenderGIOScreen =TRUE; } else { - PlayButtonSound( giGIOBRSettingButton[1], BUTTON_SOUND_DISABLED_CLICK ); + PlayButtonSound( giGIOBRQualitySettingButton[1], BUTTON_SOUND_DISABLED_CLICK ); } } else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) { btn->uiFlags|=(BUTTON_CLICKED_ON); - if ( iCurrentBRSetting < 3 ) + if ( iCurrentBRQualitySetting < 10 ) { - PlayButtonSound( giGIOBRSettingButton[1], BUTTON_SOUND_CLICKED_ON ); + PlayButtonSound( giGIOBRQualitySettingButton[1], BUTTON_SOUND_CLICKED_ON ); - iCurrentBRSetting++; + iCurrentBRQualitySetting++; gfReRenderGIOScreen =TRUE; } else { - PlayButtonSound( giGIOBRSettingButton[1], BUTTON_SOUND_DISABLED_CLICK ); + PlayButtonSound( giGIOBRQualitySettingButton[1], BUTTON_SOUND_DISABLED_CLICK ); + } + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) + { + if (btn->uiFlags & BUTTON_CLICKED_ON) + { + btn->uiFlags&=~(BUTTON_CLICKED_ON); + } + } +} + + +void BtnGIOBRQuantitySettingLeftCallback( GUI_BUTTON *btn,INT32 reason ) +{ + if (!(btn->uiFlags & BUTTON_ENABLED)) + return; + + if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT ) + { + if ( iCurrentBRQuantitySetting > 1 ) + { + PlayButtonSound( giGIOBRQuantitySettingButton[0], BUTTON_SOUND_CLICKED_ON ); + + iCurrentBRQuantitySetting--; + gfReRenderGIOScreen =TRUE; + } + else + { + PlayButtonSound( giGIOBRQuantitySettingButton[0], BUTTON_SOUND_DISABLED_CLICK ); + } + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) + { + btn->uiFlags|=(BUTTON_CLICKED_ON); + + if ( iCurrentBRQuantitySetting > 1 ) + { + PlayButtonSound( giGIOBRQuantitySettingButton[0], BUTTON_SOUND_CLICKED_ON ); + + iCurrentBRQuantitySetting--; + gfReRenderGIOScreen =TRUE; + } + else + { + PlayButtonSound( giGIOBRQuantitySettingButton[0], BUTTON_SOUND_DISABLED_CLICK ); + } + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) + { + if (btn->uiFlags & BUTTON_CLICKED_ON) + { + btn->uiFlags&=~(BUTTON_CLICKED_ON); + } + } +} + +void BtnGIOBRQuantitySettingRightCallback( GUI_BUTTON *btn,INT32 reason ) +{ + if (!(btn->uiFlags & BUTTON_ENABLED)) + return; + + if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT ) + { + if ( iCurrentBRQuantitySetting < 10 ) + { + PlayButtonSound( giGIOBRQuantitySettingButton[1], BUTTON_SOUND_CLICKED_ON ); + + iCurrentBRQuantitySetting++; + gfReRenderGIOScreen =TRUE; + } + else + { + PlayButtonSound( giGIOBRQuantitySettingButton[1], BUTTON_SOUND_DISABLED_CLICK ); + } + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) + { + btn->uiFlags|=(BUTTON_CLICKED_ON); + + if ( iCurrentBRQuantitySetting < 10 ) + { + PlayButtonSound( giGIOBRQuantitySettingButton[1], BUTTON_SOUND_CLICKED_ON ); + + iCurrentBRQuantitySetting++; + gfReRenderGIOScreen =TRUE; + } + else + { + PlayButtonSound( giGIOBRQuantitySettingButton[1], BUTTON_SOUND_DISABLED_CLICK ); } } else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) @@ -1506,14 +1579,14 @@ void BtnGIOIMPNumberSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason ) { if ( iCurrentIMPNumberSetting > 1 ) { - PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_CLICKED_ON ); + PlayButtonSound( giGIOIMPNumberButton[0], BUTTON_SOUND_CLICKED_ON ); iCurrentIMPNumberSetting--; gfReRenderGIOScreen =TRUE; } else { - PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_DISABLED_CLICK ); + PlayButtonSound( giGIOIMPNumberButton[0], BUTTON_SOUND_DISABLED_CLICK ); } } else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) @@ -1522,14 +1595,14 @@ void BtnGIOIMPNumberSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason ) if ( iCurrentIMPNumberSetting > 1 ) { - PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_CLICKED_ON ); + PlayButtonSound( giGIOIMPNumberButton[0], BUTTON_SOUND_CLICKED_ON ); iCurrentIMPNumberSetting--; gfReRenderGIOScreen =TRUE; } else { - PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_DISABLED_CLICK ); + PlayButtonSound( giGIOIMPNumberButton[0], BUTTON_SOUND_DISABLED_CLICK ); } } else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) @@ -2216,10 +2289,15 @@ BOOLEAN ExitGIOScreen() UnloadButtonImage( giGIOIMPNumberButtonImage[1] ); // Destroy BR setting buttons - RemoveButton( giGIOBRSettingButton[0] ); - RemoveButton( giGIOBRSettingButton[1] ); - UnloadButtonImage( giGIOBRSettingButtonImage[0] ); - UnloadButtonImage( giGIOBRSettingButtonImage[1] ); + RemoveButton( giGIOBRQualitySettingButton[0] ); + RemoveButton( giGIOBRQualitySettingButton[1] ); + UnloadButtonImage( giGIOBRQualitySettingButtonImage[0] ); + UnloadButtonImage( giGIOBRQualitySettingButtonImage[1] ); + + RemoveButton( giGIOBRQuantitySettingButton[0] ); + RemoveButton( giGIOBRQuantitySettingButton[1] ); + UnloadButtonImage( giGIOBRQuantitySettingButtonImage[0] ); + UnloadButtonImage( giGIOBRQuantitySettingButtonImage[1] ); // Destroy Progress setting buttons RemoveButton( giGIOProgressSettingButton[0] ); @@ -2378,6 +2456,21 @@ void HandleGIOScreen() } } +STR16 BRSettingText(INT8 currentSetting, BOOLEAN quantity) +{ + CHAR16 text[256]; + + if (currentSetting < BR_GREAT) + swprintf(text, L"%s (%d%s)", gzGIOScreenText[GIO_BR_GOOD_TEXT], currentSetting, quantity ? "x" : ""); + else if (currentSetting >= BR_GREAT && currentSetting < BR_EXCELLENT ) + swprintf(text, L"%s (%d%s)", gzGIOScreenText[GIO_BR_GREAT_TEXT], currentSetting, quantity ? "x" : ""); + else if (currentSetting >= BR_EXCELLENT && currentSetting < BR_AWESOME ) + swprintf(text, L"%s (%d%s)", gzGIOScreenText[GIO_BR_EXCELLENT_TEXT], currentSetting, quantity ? "x" : ""); + else + swprintf(text, L"%s (%d%s)", gzGIOScreenText[GIO_BR_AWESOME_TEXT], currentSetting, quantity ? "x" : ""); + + return text; +} BOOLEAN RenderGIOScreen() { @@ -2385,7 +2478,8 @@ BOOLEAN RenderGIOScreen() RestoreExternBackgroundRect( GIO_DIF_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_DIF_SETTING_Y-3, 120, 20 ); RestoreExternBackgroundRect( GIO_IMP_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_IMP_SETTING_Y-3, 120, 20 ); - RestoreExternBackgroundRect( GIO_BR_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_BR_SETTING_Y-3, 120, 20 ); + RestoreExternBackgroundRect( GIO_BR_QUALITY_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_BR_QUALITY_SETTING_Y-3, 120, 20 ); + RestoreExternBackgroundRect( GIO_BR_QUANTITY_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_BR_QUANTITY_SETTING_Y-3, 120, 20 ); RestoreExternBackgroundRect( GIO_PROGRESS_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_PROGRESS_SETTING_Y-3, 120, 20 ); RestoreExternBackgroundRect( GIO_INV_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_INV_SETTING_Y-3, 120, 20 ); RestoreExternBackgroundRect( GIO_SQUAD_SIZE_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_SQUAD_SIZE_SETTING_Y-3, 120, 20 ); @@ -2419,10 +2513,15 @@ BOOLEAN RenderGIOScreen() swprintf(sStartLevelString, L"%i", iCurrentIMPNumberSetting ); DisplayWrappedString( (UINT16)(GIO_IMP_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_IMP_SETTING_Y+6), GIO_IMP_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, sStartLevelString, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); } + // Display BR Setting texts - RenderGIOSmallSelectionFrame( (GIO_BR_SETTING_X + 36), (GIO_BR_SETTING_Y - 3) ); - DisplayWrappedString( (UINT16)(GIO_BR_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (UINT16)(GIO_BR_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_BR_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_BR_QUALITY_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); - DisplayWrappedString( (UINT16)(GIO_BR_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_BR_SETTING_Y+6), GIO_BR_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ iCurrentBRSetting + 20 ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); + RenderGIOSmallSelectionFrame( (GIO_BR_QUALITY_SETTING_X + 36), (GIO_BR_QUALITY_SETTING_Y - 3) ); + DisplayWrappedString( (UINT16)(GIO_BR_QUALITY_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (UINT16)(GIO_BR_QUALITY_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_BR_QUALITY_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_BR_QUALITY_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); + DisplayWrappedString( (UINT16)(GIO_BR_QUALITY_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_BR_QUALITY_SETTING_Y+6), GIO_BR_QUALITY_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, BRSettingText(iCurrentBRQualitySetting, FALSE), FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); + + RenderGIOSmallSelectionFrame( (GIO_BR_QUANTITY_SETTING_X + 36), (GIO_BR_QUANTITY_SETTING_Y - 3) ); + DisplayWrappedString( (UINT16)(GIO_BR_QUANTITY_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (UINT16)(GIO_BR_QUANTITY_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_BR_QUANTITY_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_BR_QUANTITY_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); + DisplayWrappedString( (UINT16)(GIO_BR_QUANTITY_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_BR_QUANTITY_SETTING_Y+6), GIO_BR_QUANTITY_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, BRSettingText(iCurrentBRQuantitySetting, TRUE), FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); // Display Progress Setting texts RenderGIOSmallSelectionFrame( (GIO_PROGRESS_SETTING_X + 36), (GIO_PROGRESS_SETTING_Y - 3) ); @@ -2731,21 +2830,8 @@ void DoneFadeOutForExitGameInitOptionScreen( void ) // iron man gGameOptions.fIronManMode = GetCurrentGameSaveButtonSetting(); - switch ( iCurrentBRSetting ) - { - case GIO_BR_GOOD: - gGameOptions.ubBobbyRay = BR_GOOD; - break; - case GIO_BR_GREAT: - gGameOptions.ubBobbyRay = BR_GREAT; - break; - case GIO_BR_EXCELLENT: - gGameOptions.ubBobbyRay = BR_EXCELLENT; - break; - case GIO_BR_AWESOME: - gGameOptions.ubBobbyRay = BR_AWESOME; - break; - } + gGameOptions.ubBobbyRayQuality = iCurrentBRQualitySetting; + gGameOptions.ubBobbyRayQuantity = iCurrentBRQuantitySetting; // CHRISL: if(IsNIVModeValid(true) == TRUE) @@ -2958,9 +3044,9 @@ void RenderGIOSmallSelectionFrame(INT16 sX, INT16 sY) // --------------------------------- // Y-Offset for Combo-Controls -#define COMBO_Y_OFFSET 63 +#define COMBO_Y_OFFSET 58 // Y-Offset for Check-Controls -#define CHECK_Y_OFFSET 50 +#define CHECK_Y_OFFSET 45 #define CORRECTION_Y_OFFSET (COMBO_Y_OFFSET - CHECK_Y_OFFSET) @@ -2999,6 +3085,9 @@ void RenderGIOSmallSelectionFrame(INT16 sX, INT16 sY) #define GIO_IRON_MAN_SETTING_Y GIO_GAME_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET #define GIO_IRON_MAN_SETTING_WIDTH CHECK_WIDTH +#define GIO_NCTH_SETTING_X FIRST_COLUMN_X + CHECK_X_OFFSET +#define GIO_NCTH_SETTING_Y GIO_IRON_MAN_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET +#define GIO_NCTH_SETTING_WIDTH CHECK_WIDTH /********************************* SECOND COLUMN @@ -3038,24 +3127,22 @@ void RenderGIOSmallSelectionFrame(INT16 sX, INT16 sY) #define GIO_SQUAD_SIZE_SETTING_Y THIRD_COLUMN_Y #define GIO_SQUAD_SIZE_SETTING_WIDTH COMBO_WIDTH -#define GIO_BR_SETTING_X THIRD_COLUMN_X + COMBO_X_OFFSET -#define GIO_BR_SETTING_Y GIO_SQUAD_SIZE_SETTING_Y + COMBO_Y_OFFSET -#define GIO_BR_SETTING_WIDTH COMBO_WIDTH +#define GIO_BR_QUALITY_SETTING_X THIRD_COLUMN_X + COMBO_X_OFFSET +#define GIO_BR_QUALITY_SETTING_Y GIO_SQUAD_SIZE_SETTING_Y + COMBO_Y_OFFSET +#define GIO_BR_QUALITY_SETTING_WIDTH COMBO_WIDTH -#define GIO_NCTH_SETTING_X THIRD_COLUMN_X + CHECK_X_OFFSET -#define GIO_NCTH_SETTING_Y GIO_BR_SETTING_Y + CHECK_Y_OFFSET -#define GIO_NCTH_SETTING_WIDTH CHECK_WIDTH +#define GIO_BR_QUANTITY_SETTING_X THIRD_COLUMN_X + COMBO_X_OFFSET +#define GIO_BR_QUANTITY_SETTING_Y GIO_BR_QUALITY_SETTING_Y + COMBO_Y_OFFSET +#define GIO_BR_QUANTITY_SETTING_WIDTH COMBO_WIDTH #define GIO_IIS_SETTING_X THIRD_COLUMN_X + CHECK_X_OFFSET -#define GIO_IIS_SETTING_Y GIO_NCTH_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET +#define GIO_IIS_SETTING_Y GIO_BR_QUANTITY_SETTING_Y + CHECK_Y_OFFSET #define GIO_IIS_SETTING_WIDTH CHECK_WIDTH #define GIO_INVENTORY_AP_SETTING_X THIRD_COLUMN_X + CHECK_X_OFFSET #define GIO_INVENTORY_AP_SETTING_Y GIO_IIS_SETTING_Y + CHECK_Y_OFFSET + CORRECTION_Y_OFFSET #define GIO_INVENTORY_AP_SETTING_WIDTH CHECK_WIDTH - - // INI File #define JA2SP_INI_FILENAME "ja2_sp.ini" @@ -3064,7 +3151,8 @@ void RenderGIOSmallSelectionFrame(INT16 sX, INT16 sY) // INI Properties #define JA2SP_DIFFICULTY_LEVEL "DIFFICULTY_LEVEL" -#define JA2SP_BOBBY_RAY_SELECTION "BOBBY_RAY_SELECTION" +#define JA2SP_BOBBY_RAY_QUALITY "BOBBY_RAY_QUALITY" +#define JA2SP_BOBBY_RAY_QUANTITY "BOBBY_RAY_QUANTITY" #define JA2SP_MAX_IMP_CHARACTERS "MAX_IMP_CHARACTERS" #define JA2SP_PROGRESS_SPEED_OF_ITEM_CHOICES "PROGRESS_SPEED_OF_ITEM_CHOICES" #define JA2SP_SKILL_TRAITS "SKILL_TRAITS" @@ -3120,17 +3208,6 @@ enum NUM_SAVE_OPTIONS, }; -// BR options -enum -{ - GIO_BR_GOOD, - GIO_BR_GREAT, - GIO_BR_EXCELLENT, - GIO_BR_AWESOME, - - NUM_BR_OPTIONS, -}; - enum { GIO_PROGRESS_VERY_SLOW, @@ -3218,7 +3295,8 @@ UINT32 guiGIOMainBackGroundImage; INT32 giGioMessageBox = -1; INT8 iCurrentDifficulty; -INT8 iCurrentBRSetting; +INT8 iCurrentBRQualitySetting; +INT8 iCurrentBRQuantitySetting; INT8 iCurrentIMPNumberSetting; INT8 iCurrentProgressSetting; INT8 iCurrentInventorySetting; @@ -3252,10 +3330,15 @@ INT32 giGIOIMPNumberButtonImage[ 2 ]; void BtnGIOIMPNumberSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason ); void BtnGIOIMPNumberSelectionRightCallback( GUI_BUTTON *btn,INT32 reason ); -UINT32 giGIOBRSettingButton[ 2 ]; -INT32 giGIOBRSettingButtonImage[ 2 ]; -void BtnGIOBRSettingLeftCallback( GUI_BUTTON *btn,INT32 reason ); -void BtnGIOBRSettingRightCallback( GUI_BUTTON *btn,INT32 reason ); +UINT32 giGIOBRQualitySettingButton[ 2 ]; +INT32 giGIOBRQualitySettingButtonImage[ 2 ]; +void BtnGIOBRQualitySettingLeftCallback( GUI_BUTTON *btn,INT32 reason ); +void BtnGIOBRQualitySettingRightCallback( GUI_BUTTON *btn,INT32 reason ); + +UINT32 giGIOBRQuantitySettingButton[ 2 ]; +INT32 giGIOBRQuantitySettingButtonImage[ 2 ]; +void BtnGIOBRQuantitySettingLeftCallback( GUI_BUTTON *btn,INT32 reason ); +void BtnGIOBRQuantitySettingRightCallback( GUI_BUTTON *btn,INT32 reason ); UINT32 giGIOProgressSettingButton[ 2 ]; INT32 giGIOProgressSettingButtonImage[ 2 ]; @@ -3388,27 +3471,12 @@ UINT32 GameInitOptionsScreenInit( void ) // Difficulty Level (Default: Experienced = 1) gGameOptions.ubDifficultyLevel = ((UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_DIFFICULTY_LEVEL, 1)) + 1; - // Bobby Ray's Selection (Default: Great = 1) - UINT8 ubBobbyRay = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_BOBBY_RAY_SELECTION, 1); - switch (ubBobbyRay) - { - // Normal - case 0: - gGameOptions.ubBobbyRay = BR_GOOD; - break; - // Great - case 1: - gGameOptions.ubBobbyRay = BR_GREAT; - break; - // Excellent - case 2: - gGameOptions.ubBobbyRay = BR_EXCELLENT; - break; - // Awesome - case 3: - gGameOptions.ubBobbyRay = BR_AWESOME; - break; - } + // Bobby Ray's Selection (Default: Good = 1) + UINT8 ubBobbyRayQuality = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_BOBBY_RAY_QUALITY, 1); + gGameOptions.ubBobbyRayQuality = max(min(1, ubBobbyRayQuality),10); + + UINT8 ubBobbyRayQuantity = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_BOBBY_RAY_QUANTITY, 1); + gGameOptions.ubBobbyRayQuantity = max(min(1, ubBobbyRayQuantity),10); // Max. IMP Characters UINT8 maxIMPCharacterCount = (UINT8)props.getIntProperty(JA2SP_INI_INITIAL_SECTION, JA2SP_MAX_IMP_CHARACTERS, 1); @@ -3729,43 +3797,41 @@ BOOLEAN EnterGIOScreen() /////////////////////////////////////////////////////////////////////////////////////////////////////// // BOBBY RAY SETTING - giGIOBRSettingButtonImage[ 0 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 0 ], -1,0,-1,1,-1 ); - giGIOBRSettingButtonImage[ 1 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 1 ], -1,2,-1,3,-1 ); + giGIOBRQualitySettingButtonImage[ 0 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 0 ], -1,0,-1,1,-1 ); + giGIOBRQualitySettingButtonImage[ 1 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 1 ], -1,2,-1,3,-1 ); // left button - decrement BR level - giGIOBRSettingButton[ 0 ] = QuickCreateButton( giGIOBRSettingButtonImage[ 0 ], GIO_BR_SETTING_X + 39, GIO_BR_SETTING_Y , + giGIOBRQualitySettingButton[ 0 ] = QuickCreateButton( giGIOBRQualitySettingButtonImage[ 0 ], GIO_BR_QUALITY_SETTING_X + 39, GIO_BR_QUALITY_SETTING_Y , BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, - BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOBRSettingLeftCallback ); + BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOBRQualitySettingLeftCallback ); // right button - increment BR level - giGIOBRSettingButton[ 1 ] = QuickCreateButton( giGIOBRSettingButtonImage[ 1 ], GIO_BR_SETTING_X + 158, GIO_BR_SETTING_Y , + giGIOBRQualitySettingButton[ 1 ] = QuickCreateButton( giGIOBRQualitySettingButtonImage[ 1 ], GIO_BR_QUALITY_SETTING_X + 158, GIO_BR_QUALITY_SETTING_Y , BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, - BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOBRSettingRightCallback ); + BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOBRQualitySettingRightCallback ); + + giGIOBRQuantitySettingButtonImage[ 0 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 0 ], -1,0,-1,1,-1 ); + giGIOBRQuantitySettingButtonImage[ 1 ]= UseLoadedButtonImage( giGIODifficultyButtonImage[ 1 ], -1,2,-1,3,-1 ); + + // left button - decrement BR level + giGIOBRQuantitySettingButton[ 0 ] = QuickCreateButton( giGIOBRQuantitySettingButtonImage[ 0 ], GIO_BR_QUANTITY_SETTING_X + 39, GIO_BR_QUANTITY_SETTING_Y , + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, + BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOBRQuantitySettingLeftCallback ); + + // right button - increment BR level + giGIOBRQuantitySettingButton[ 1 ] = QuickCreateButton( giGIOBRQuantitySettingButtonImage[ 1 ], GIO_BR_QUANTITY_SETTING_X + 158, GIO_BR_QUANTITY_SETTING_Y , + BUTTON_TOGGLE, MSYS_PRIORITY_HIGHEST - 1, + BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnGIOBRQuantitySettingRightCallback ); // set user data - MSYS_SetBtnUserData(giGIOBRSettingButton[0],0, 0 ); - MSYS_SetBtnUserData(giGIOBRSettingButton[1],0, 1 ); + MSYS_SetBtnUserData(giGIOBRQualitySettingButton[0],0, 0 ); + MSYS_SetBtnUserData(giGIOBRQualitySettingButton[1],0, 1 ); + MSYS_SetBtnUserData(giGIOBRQuantitySettingButton[0],0, 0 ); + MSYS_SetBtnUserData(giGIOBRQuantitySettingButton[1],0, 1 ); + + iCurrentBRQualitySetting = gGameOptions.ubBobbyRayQuality; + iCurrentBRQuantitySetting = gGameOptions.ubBobbyRayQuantity; - // set initial value - switch ( gGameOptions.ubBobbyRay ) - { - case BR_GOOD: - iCurrentBRSetting = GIO_BR_GOOD; - break; - case BR_GREAT: - iCurrentBRSetting = GIO_BR_GREAT; - break; - case BR_EXCELLENT: - iCurrentBRSetting = GIO_BR_EXCELLENT; - break; - case BR_AWESOME: - iCurrentBRSetting = GIO_BR_AWESOME; - break; - default: - iCurrentBRSetting = GIO_BR_GOOD; // optimistically assume, we have selected the normal one - break; - } - /////////////////////////////////////////////////////////////////////////////////////////////////////// // ITEM PROGRESS SETTING @@ -3965,9 +4031,12 @@ BOOLEAN EnterGIOScreen() DisableButton (giGIOIMPNumberButton[ 0 ]); DisableButton (giGIOIMPNumberButton[ 1 ]); - DisableButton (giGIOBRSettingButton[ 0 ]); - DisableButton (giGIOBRSettingButton[ 1 ]); + DisableButton (giGIOBRQualitySettingButton[ 0 ]); + DisableButton (giGIOBRQualitySettingButton[ 1 ]); + DisableButton (giGIOBRQuantitySettingButton[ 0 ]); + DisableButton (giGIOBRQuantitySettingButton[ 1 ]); + //DisableButton (guiFastBROptionToggles[ 0 ]); //DisableButton (guiFastBROptionToggles[ 1 ]); @@ -4172,39 +4241,39 @@ void BtnGIODifficultySelectionRightCallback( GUI_BUTTON *btn,INT32 reason ) } } -void BtnGIOBRSettingLeftCallback( GUI_BUTTON *btn,INT32 reason ) +void BtnGIOBRQualitySettingLeftCallback( GUI_BUTTON *btn,INT32 reason ) { if (!(btn->uiFlags & BUTTON_ENABLED)) return; if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT ) { - if ( iCurrentBRSetting > 0 ) + if ( iCurrentBRQualitySetting > 1 ) { - PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_CLICKED_ON ); + PlayButtonSound( giGIOBRQualitySettingButton[0], BUTTON_SOUND_CLICKED_ON ); - iCurrentBRSetting--; + iCurrentBRQualitySetting--; gfReRenderGIOScreen =TRUE; } else { - PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_DISABLED_CLICK ); + PlayButtonSound( giGIOBRQualitySettingButton[0], BUTTON_SOUND_DISABLED_CLICK ); } } else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) { btn->uiFlags|=(BUTTON_CLICKED_ON); - if ( iCurrentBRSetting > 0 ) + if ( iCurrentBRQualitySetting > 1 ) { - PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_CLICKED_ON ); + PlayButtonSound( giGIOBRQualitySettingButton[0], BUTTON_SOUND_CLICKED_ON ); - iCurrentBRSetting--; + iCurrentBRQualitySetting--; gfReRenderGIOScreen =TRUE; } else { - PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_DISABLED_CLICK ); + PlayButtonSound( giGIOBRQualitySettingButton[0], BUTTON_SOUND_DISABLED_CLICK ); } } else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) @@ -4216,39 +4285,127 @@ void BtnGIOBRSettingLeftCallback( GUI_BUTTON *btn,INT32 reason ) } } -void BtnGIOBRSettingRightCallback( GUI_BUTTON *btn,INT32 reason ) +void BtnGIOBRQualitySettingRightCallback( GUI_BUTTON *btn,INT32 reason ) { if (!(btn->uiFlags & BUTTON_ENABLED)) return; if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT ) { - if ( iCurrentBRSetting < 3 ) + if ( iCurrentBRQualitySetting < 10 ) { - PlayButtonSound( giGIOBRSettingButton[1], BUTTON_SOUND_CLICKED_ON ); + PlayButtonSound( giGIOBRQualitySettingButton[1], BUTTON_SOUND_CLICKED_ON ); - iCurrentBRSetting++; + iCurrentBRQualitySetting++; gfReRenderGIOScreen =TRUE; } else { - PlayButtonSound( giGIOBRSettingButton[1], BUTTON_SOUND_DISABLED_CLICK ); + PlayButtonSound( giGIOBRQualitySettingButton[1], BUTTON_SOUND_DISABLED_CLICK ); } } else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) { btn->uiFlags|=(BUTTON_CLICKED_ON); - if ( iCurrentBRSetting < 3 ) + if ( iCurrentBRQualitySetting < 10 ) { - PlayButtonSound( giGIOBRSettingButton[1], BUTTON_SOUND_CLICKED_ON ); + PlayButtonSound( giGIOBRQualitySettingButton[1], BUTTON_SOUND_CLICKED_ON ); - iCurrentBRSetting++; + iCurrentBRQualitySetting++; gfReRenderGIOScreen =TRUE; } else { - PlayButtonSound( giGIOBRSettingButton[1], BUTTON_SOUND_DISABLED_CLICK ); + PlayButtonSound( giGIOBRQualitySettingButton[1], BUTTON_SOUND_DISABLED_CLICK ); + } + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) + { + if (btn->uiFlags & BUTTON_CLICKED_ON) + { + btn->uiFlags&=~(BUTTON_CLICKED_ON); + } + } +} + +void BtnGIOBRQuantitySettingLeftCallback( GUI_BUTTON *btn,INT32 reason ) +{ + if (!(btn->uiFlags & BUTTON_ENABLED)) + return; + + if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT ) + { + if ( iCurrentBRQuantitySetting > 1 ) + { + PlayButtonSound( giGIOBRQuantitySettingButton[0], BUTTON_SOUND_CLICKED_ON ); + + iCurrentBRQuantitySetting--; + gfReRenderGIOScreen =TRUE; + } + else + { + PlayButtonSound( giGIOBRQuantitySettingButton[0], BUTTON_SOUND_DISABLED_CLICK ); + } + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) + { + btn->uiFlags|=(BUTTON_CLICKED_ON); + + if ( iCurrentBRQuantitySetting > 1 ) + { + PlayButtonSound( giGIOBRQuantitySettingButton[0], BUTTON_SOUND_CLICKED_ON ); + + iCurrentBRQuantitySetting--; + gfReRenderGIOScreen =TRUE; + } + else + { + PlayButtonSound( giGIOBRQuantitySettingButton[0], BUTTON_SOUND_DISABLED_CLICK ); + } + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) + { + if (btn->uiFlags & BUTTON_CLICKED_ON) + { + btn->uiFlags&=~(BUTTON_CLICKED_ON); + } + } +} + +void BtnGIOBRQuantitySettingRightCallback( GUI_BUTTON *btn,INT32 reason ) +{ + if (!(btn->uiFlags & BUTTON_ENABLED)) + return; + + if( reason & MSYS_CALLBACK_REASON_LBUTTON_REPEAT ) + { + if ( iCurrentBRQuantitySetting < 10 ) + { + PlayButtonSound( giGIOBRQuantitySettingButton[1], BUTTON_SOUND_CLICKED_ON ); + + iCurrentBRQuantitySetting++; + gfReRenderGIOScreen =TRUE; + } + else + { + PlayButtonSound( giGIOBRQuantitySettingButton[1], BUTTON_SOUND_DISABLED_CLICK ); + } + } + else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) + { + btn->uiFlags|=(BUTTON_CLICKED_ON); + + if ( iCurrentBRQuantitySetting < 10 ) + { + PlayButtonSound( giGIOBRQuantitySettingButton[1], BUTTON_SOUND_CLICKED_ON ); + + iCurrentBRQuantitySetting++; + gfReRenderGIOScreen =TRUE; + } + else + { + PlayButtonSound( giGIOBRQuantitySettingButton[1], BUTTON_SOUND_DISABLED_CLICK ); } } else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) @@ -4269,14 +4426,14 @@ void BtnGIOIMPNumberSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason ) { if ( iCurrentIMPNumberSetting > 1 ) { - PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_CLICKED_ON ); + PlayButtonSound( giGIOIMPNumberButton[0], BUTTON_SOUND_CLICKED_ON ); iCurrentIMPNumberSetting--; gfReRenderGIOScreen =TRUE; } else { - PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_DISABLED_CLICK ); + PlayButtonSound( giGIOIMPNumberButton[0], BUTTON_SOUND_DISABLED_CLICK ); } } else if( reason & MSYS_CALLBACK_REASON_LBUTTON_DWN ) @@ -4285,14 +4442,14 @@ void BtnGIOIMPNumberSelectionLeftCallback( GUI_BUTTON *btn,INT32 reason ) if ( iCurrentIMPNumberSetting > 1 ) { - PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_CLICKED_ON ); + PlayButtonSound( giGIOIMPNumberButton[0], BUTTON_SOUND_CLICKED_ON ); iCurrentIMPNumberSetting--; gfReRenderGIOScreen =TRUE; } else { - PlayButtonSound( giGIOBRSettingButton[0], BUTTON_SOUND_DISABLED_CLICK ); + PlayButtonSound( giGIOIMPNumberButton[0], BUTTON_SOUND_DISABLED_CLICK ); } } else if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP ) @@ -4947,10 +5104,15 @@ BOOLEAN ExitGIOScreen() UnloadButtonImage( giGIOIMPNumberButtonImage[1] ); // Destroy BR setting buttons - RemoveButton( giGIOBRSettingButton[0] ); - RemoveButton( giGIOBRSettingButton[1] ); - UnloadButtonImage( giGIOBRSettingButtonImage[0] ); - UnloadButtonImage( giGIOBRSettingButtonImage[1] ); + RemoveButton( giGIOBRQualitySettingButton[0] ); + RemoveButton( giGIOBRQualitySettingButton[1] ); + UnloadButtonImage( giGIOBRQualitySettingButtonImage[0] ); + UnloadButtonImage( giGIOBRQualitySettingButtonImage[1] ); + + RemoveButton( giGIOBRQuantitySettingButton[0] ); + RemoveButton( giGIOBRQuantitySettingButton[1] ); + UnloadButtonImage( giGIOBRQuantitySettingButtonImage[0] ); + UnloadButtonImage( giGIOBRQuantitySettingButtonImage[1] ); // Destroy Progress setting buttons RemoveButton( giGIOProgressSettingButton[0] ); @@ -5109,6 +5271,21 @@ void HandleGIOScreen() } } +STR16 BRSettingText(INT8 currentSetting, BOOLEAN quantity) +{ + CHAR16 text[256]; + + if (currentSetting < BR_GREAT) + swprintf(text, L"%s (%d%s)", gzGIOScreenText[GIO_BR_GOOD_TEXT], currentSetting, quantity ? "x" : ""); + else if (currentSetting >= BR_GREAT && currentSetting < BR_EXCELLENT ) + swprintf(text, L"%s (%d%s)", gzGIOScreenText[GIO_BR_GREAT_TEXT], currentSetting, quantity ? "x" : ""); + else if (currentSetting >= BR_EXCELLENT && currentSetting < BR_AWESOME ) + swprintf(text, L"%s (%d%s)", gzGIOScreenText[GIO_BR_EXCELLENT_TEXT], currentSetting, quantity ? "x" : ""); + else + swprintf(text, L"%s (%d%s)", gzGIOScreenText[GIO_BR_AWESOME_TEXT], currentSetting, quantity ? "x" : ""); + + return text; +} BOOLEAN RenderGIOScreen() { @@ -5116,7 +5293,8 @@ BOOLEAN RenderGIOScreen() RestoreExternBackgroundRect( GIO_DIF_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_DIF_SETTING_Y-3, 120, 20 ); RestoreExternBackgroundRect( GIO_IMP_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_IMP_SETTING_Y-3, 120, 20 ); - RestoreExternBackgroundRect( GIO_BR_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_BR_SETTING_Y-3, 120, 20 ); + RestoreExternBackgroundRect( GIO_BR_QUALITY_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_BR_QUALITY_SETTING_Y-3, 120, 20 ); + RestoreExternBackgroundRect( GIO_BR_QUANTITY_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_BR_QUANTITY_SETTING_Y-3, 120, 20 ); RestoreExternBackgroundRect( GIO_PROGRESS_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_PROGRESS_SETTING_Y-3, 120, 20 ); RestoreExternBackgroundRect( GIO_INV_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_INV_SETTING_Y-3, 120, 20 ); RestoreExternBackgroundRect( GIO_SQUAD_SIZE_SETTING_X+GIO_OFFSET_TO_TEXT + 20, GIO_SQUAD_SIZE_SETTING_Y-3, 120, 20 ); @@ -5150,10 +5328,15 @@ BOOLEAN RenderGIOScreen() swprintf(sStartLevelString, L"%i", iCurrentIMPNumberSetting ); DisplayWrappedString( (UINT16)(GIO_IMP_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_IMP_SETTING_Y+6), GIO_IMP_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, sStartLevelString, FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); } + // Display BR Setting texts - RenderGIOSmallSelectionFrame( (GIO_BR_SETTING_X + 36), (GIO_BR_SETTING_Y - 3) ); - DisplayWrappedString( (UINT16)(GIO_BR_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (UINT16)(GIO_BR_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_BR_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_BR_QUALITY_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); - DisplayWrappedString( (UINT16)(GIO_BR_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_BR_SETTING_Y+6), GIO_BR_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ iCurrentBRSetting + 20 ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); + RenderGIOSmallSelectionFrame( (GIO_BR_QUALITY_SETTING_X + 36), (GIO_BR_QUALITY_SETTING_Y - 3) ); + DisplayWrappedString( (UINT16)(GIO_BR_QUALITY_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (UINT16)(GIO_BR_QUALITY_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_BR_QUALITY_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_BR_QUALITY_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); + DisplayWrappedString( (UINT16)(GIO_BR_QUALITY_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_BR_QUALITY_SETTING_Y+6), GIO_BR_QUALITY_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, BRSettingText(iCurrentBRQualitySetting, FALSE), FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); + + RenderGIOSmallSelectionFrame( (GIO_BR_QUANTITY_SETTING_X + 36), (GIO_BR_QUANTITY_SETTING_Y - 3) ); + DisplayWrappedString( (UINT16)(GIO_BR_QUANTITY_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (UINT16)(GIO_BR_QUANTITY_SETTING_Y-GIO_GAP_BN_SETTINGS + GIO_TITLE_DISTANCE - 12), GIO_BR_QUANTITY_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, gzGIOScreenText[ GIO_BR_QUANTITY_TEXT ], FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); + DisplayWrappedString( (UINT16)(GIO_BR_QUANTITY_SETTING_X+GIO_OFFSET_TO_TEXT + 1), (GIO_BR_QUANTITY_SETTING_Y+6), GIO_BR_QUANTITY_SETTING_WIDTH, 2, GIO_TOGGLE_TEXT_FONT, GIO_TOGGLE_TEXT_COLOR, BRSettingText(iCurrentBRQuantitySetting, TRUE), FONT_MCOLOR_BLACK, FALSE, CENTER_JUSTIFIED ); // Display Progress Setting texts RenderGIOSmallSelectionFrame( (GIO_PROGRESS_SETTING_X + 36), (GIO_PROGRESS_SETTING_Y - 3) ); @@ -5446,21 +5629,8 @@ void DoneFadeOutForExitGameInitOptionScreen( void ) // iron man gGameOptions.fIronManMode = GetCurrentGameSaveButtonSetting(); - switch ( iCurrentBRSetting ) - { - case GIO_BR_GOOD: - gGameOptions.ubBobbyRay = BR_GOOD; - break; - case GIO_BR_GREAT: - gGameOptions.ubBobbyRay = BR_GREAT; - break; - case GIO_BR_EXCELLENT: - gGameOptions.ubBobbyRay = BR_EXCELLENT; - break; - case GIO_BR_AWESOME: - gGameOptions.ubBobbyRay = BR_AWESOME; - break; - } + gGameOptions.ubBobbyRayQuality = iCurrentBRQualitySetting; + gGameOptions.ubBobbyRayQuantity = iCurrentBRQuantitySetting; // CHRISL: if(IsNIVModeValid(true) == TRUE) diff --git a/GameSettings.cpp b/GameSettings.cpp index 3d7df186..7338c0fc 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -575,7 +575,8 @@ void InitGameOptions() { memset( &gGameOptions, 0, sizeof( GAME_OPTIONS ) ); - gGameOptions.ubBobbyRay = BR_GOOD; + gGameOptions.ubBobbyRayQuality = BR_GOOD; + gGameOptions.ubBobbyRayQuantity = BR_GOOD; gGameOptions.fGunNut = TRUE; gGameOptions.fAirStrikes = FALSE; gGameOptions.ubGameStyle = STYLE_SCIFI; @@ -769,7 +770,7 @@ void LoadGameExternalOptions() //I.M.P Character generation // SANDRO - some changes here - gGameExternalOptions.iIMPProfileCost = iniReader.ReadInteger("Recruitment Settings","IMP_PROFILE_COST",3000, 0, 50000); + gGameExternalOptions.iIMPProfileCost = iniReader.ReadInteger("Recruitment Settings","IMP_PROFILE_COST",3000, 0, 500000); gGameExternalOptions.fDynamicIMPProfileCost = iniReader.ReadBoolean("Recruitment Settings","DYNAMIC_IMP_PROFILE_COST",FALSE); gGameExternalOptions.iImpAttributePoints = iniReader.ReadInteger("Recruitment Settings","IMP_INITIAL_POINTS",500, 1, 5000); gGameExternalOptions.iMinAttribute = iniReader.ReadInteger("Recruitment Settings","IMP_MIN_ATTRIBUTE",35, 1, 99); @@ -2715,22 +2716,25 @@ void DisplayGameSettings( ) //Display the difficulty level ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s", gzGIOScreenText[ GIO_DIF_LEVEL_TEXT ], gzGIOScreenText[ gGameOptions.ubDifficultyLevel + GIO_EASY_TEXT - 1 ] ); - //Bobby Ray option - switch ( gGameOptions.ubBobbyRay ) - { - case BR_GOOD: - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s", gzGIOScreenText[ GIO_BR_QUALITY_TEXT ], gzGIOScreenText[ GIO_BR_GOOD_TEXT ] ); - break; - case BR_GREAT: - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s", gzGIOScreenText[ GIO_BR_QUALITY_TEXT ], gzGIOScreenText[ GIO_BR_GREAT_TEXT ] ); - break; - case BR_EXCELLENT: - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s", gzGIOScreenText[ GIO_BR_QUALITY_TEXT ], gzGIOScreenText[ GIO_BR_EXCELLENT_TEXT ] ); - break; - case BR_AWESOME: - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s", gzGIOScreenText[ GIO_BR_QUALITY_TEXT ], gzGIOScreenText[ GIO_BR_AWESOME_TEXT ] ); - break; - } + //Bobby Ray option 1 + if ( gGameOptions.ubBobbyRayQuality >= BR_GOOD && gGameOptions.ubBobbyRayQuality < BR_GREAT ) + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s (%d)", gzGIOScreenText[ GIO_BR_QUALITY_TEXT ], gzGIOScreenText[ GIO_BR_GOOD_TEXT ], BR_GOOD ); + else if ( gGameOptions.ubBobbyRayQuality >= BR_GREAT && gGameOptions.ubBobbyRayQuality < BR_EXCELLENT ) + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s (%d)", gzGIOScreenText[ GIO_BR_QUALITY_TEXT ], gzGIOScreenText[ GIO_BR_GREAT_TEXT ], BR_GREAT ); + else if ( gGameOptions.ubBobbyRayQuality >= BR_EXCELLENT && gGameOptions.ubBobbyRayQuality < BR_AWESOME ) + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s (%d)", gzGIOScreenText[ GIO_BR_QUALITY_TEXT ], gzGIOScreenText[ GIO_BR_EXCELLENT_TEXT ], BR_EXCELLENT ); + else + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s (%d)", gzGIOScreenText[ GIO_BR_QUALITY_TEXT ], gzGIOScreenText[ GIO_BR_AWESOME_TEXT ], BR_AWESOME ); + + //Bobby Ray option 2 + if ( gGameOptions.ubBobbyRayQuantity >= BR_GOOD && gGameOptions.ubBobbyRayQuantity < BR_GREAT ) + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s (%dx)", gzGIOScreenText[ GIO_BR_QUANTITY_TEXT ], gzGIOScreenText[ GIO_BR_GOOD_TEXT ], BR_GOOD ); + else if ( gGameOptions.ubBobbyRayQuantity >= BR_GREAT && gGameOptions.ubBobbyRayQuantity < BR_EXCELLENT ) + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s (%dx)", gzGIOScreenText[ GIO_BR_QUANTITY_TEXT ], gzGIOScreenText[ GIO_BR_GREAT_TEXT ], BR_GREAT ); + else if ( gGameOptions.ubBobbyRayQuantity >= BR_EXCELLENT && gGameOptions.ubBobbyRayQuantity < BR_AWESOME ) + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s (%dx)", gzGIOScreenText[ GIO_BR_QUANTITY_TEXT ], gzGIOScreenText[ GIO_BR_EXCELLENT_TEXT ], BR_EXCELLENT ); + else + ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s (%dx)", gzGIOScreenText[ GIO_BR_QUANTITY_TEXT ], gzGIOScreenText[ GIO_BR_AWESOME_TEXT ], BR_AWESOME ); // Item Progress Speed Option switch( gGameOptions.ubProgressSpeedOfItemsChoices ) @@ -2752,9 +2756,6 @@ void DisplayGameSettings( ) break; } - // Kaiden: Following Line was commented out (Extra Bobby Rays Setting always displays Normal) - //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s", gzGIOScreenText[ GIO_BR_QUALITY_TEXT ], gzGIOScreenText[ GIO_BR_GOOD_TEXT ] ); - // Iron Man Mode //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"%s: %s", gzGIOScreenText[ GIO_GAME_SAVE_STYLE_TEXT ], gzGIOScreenText[ GIO_SAVE_ANYWHERE_TEXT + gGameOptions.fIronManMode ] ); diff --git a/GameSettings.h b/GameSettings.h index 494a1727..27f0673d 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -212,7 +212,8 @@ typedef struct UINT8 ubDifficultyLevel; BOOLEAN fTurnTimeLimit; BOOLEAN fIronManMode; - UINT8 ubBobbyRay; + UINT8 ubBobbyRayQuality; + UINT8 ubBobbyRayQuantity; UINT8 ubInventorySystem; UINT8 ubAttachmentSystem; UINT8 ubSquadSize; diff --git a/Laptop/BobbyR.cpp b/Laptop/BobbyR.cpp index d114da60..3b4f2357 100644 --- a/Laptop/BobbyR.cpp +++ b/Laptop/BobbyR.cpp @@ -716,11 +716,11 @@ void DailyUpdateOfBobbyRaysNewInventory() } //if the item isn't already on order - if( LaptopSaveInfo.BobbyRayInventory[ i ].ubQtyOnOrder == 0 || gGameOptions.ubBobbyRay == BR_AWESOME ) + if( LaptopSaveInfo.BobbyRayInventory[ i ].ubQtyOnOrder == 0 || gGameOptions.ubBobbyRayQuality == BR_AWESOME ) { - DebugMsg(TOPIC_JA2, DBG_LEVEL_3,String("DailyUpdateOfBobbyRaysNewInventory: item = %d, qty on hand = %d, half desired amount = %d",usItemIndex,LaptopSaveInfo.BobbyRayInventory[ i ].ubQtyOnHand,(StoreInventory[ usItemIndex ][ BOBBY_RAY_NEW ] * gGameOptions.ubBobbyRay )/2)); + DebugMsg(TOPIC_JA2, DBG_LEVEL_3,String("DailyUpdateOfBobbyRaysNewInventory: item = %d, qty on hand = %d, half desired amount = %d",usItemIndex,LaptopSaveInfo.BobbyRayInventory[ i ].ubQtyOnHand,(StoreInventory[ usItemIndex ][ BOBBY_RAY_NEW ] * gGameOptions.ubBobbyRayQuantity )/2)); //if the qty on hand is half the desired amount or fewer - if( LaptopSaveInfo.BobbyRayInventory[ i ].ubQtyOnHand <= (StoreInventory[ usItemIndex ][ BOBBY_RAY_NEW ] * gGameOptions.ubBobbyRay )/2 ) + if( LaptopSaveInfo.BobbyRayInventory[ i ].ubQtyOnHand <= (StoreInventory[ usItemIndex ][ BOBBY_RAY_NEW ] * gGameOptions.ubBobbyRayQuantity )/2 ) { // remember value of the "previously eligible" flag fPrevElig = LaptopSaveInfo.BobbyRayInventory[ i ].fPreviouslyEligible; @@ -732,7 +732,7 @@ void DailyUpdateOfBobbyRaysNewInventory() if( LaptopSaveInfo.BobbyRayInventory[ i ].ubQtyOnOrder > 0 ) { // if this is the first day the player is eligible to have access to this thing - if ( !fPrevElig || gGameOptions.ubBobbyRay == BR_AWESOME ) + if ( !fPrevElig || gGameOptions.ubBobbyRayQuality == BR_AWESOME ) { DebugMsg(TOPIC_JA2, DBG_LEVEL_3,String("DailyUpdateOfBobbyRaysNewInventory: item = %d, add fresh inventory",usItemIndex)); // eliminate the ordering delay and stock the items instantly! @@ -767,7 +767,7 @@ void DailyUpdateOfBobbyRaysUsedInventory() for(i = 0; i < LaptopSaveInfo.usInventoryListLength[BOBBY_RAY_USED]; i++) { //if the used item isn't already on order - if( LaptopSaveInfo.BobbyRayUsedInventory[ i ].ubQtyOnOrder == 0 || gGameOptions.ubBobbyRay == BR_AWESOME ) + if( LaptopSaveInfo.BobbyRayUsedInventory[ i ].ubQtyOnOrder == 0 || gGameOptions.ubBobbyRayQuality == BR_AWESOME ) { //if we don't have ANY if( LaptopSaveInfo.BobbyRayUsedInventory[ i ].ubQtyOnHand == 0 ) @@ -792,7 +792,7 @@ void DailyUpdateOfBobbyRaysUsedInventory() if( LaptopSaveInfo.BobbyRayUsedInventory[ i ].ubQtyOnOrder > 0 ) { // if this is the first day the player is eligible to have access to this thing - if ( !fPrevElig || gGameOptions.ubBobbyRay == BR_AWESOME ) + if ( !fPrevElig || gGameOptions.ubBobbyRayQuality == BR_AWESOME ) { // eliminate the ordering delay and stock the items instantly! // This is just a way to reward the player right away for making progress without the reordering lag... @@ -818,7 +818,7 @@ UINT8 HowManyBRItemsToOrder(UINT16 usItemIndex, UINT8 ubCurrentlyOnHand, UINT8 u Assert(usItemIndex < MAXITEMS); // formulas below will fail if there are more items already in stock than optimal - //Assert(ubCurrentlyOnHand <= StoreInventory[ usItemIndex ][ ubBobbyRayNewUsed ] * gGameOptions.ubBobbyRay) ; + //Assert(ubCurrentlyOnHand <= StoreInventory[ usItemIndex ][ ubBobbyRayNewUsed ] * gGameOptions.ubBobbyRayQuantity) ; Assert(ubBobbyRayNewUsed < BOBBY_RAY_LISTS); @@ -827,7 +827,7 @@ UINT8 HowManyBRItemsToOrder(UINT16 usItemIndex, UINT8 ubCurrentlyOnHand, UINT8 u { if (ubBobbyRayNewUsed == BOBBY_RAY_NEW) { - ubItemsOrdered = HowManyItemsToReorder(StoreInventory[ usItemIndex ][ ubBobbyRayNewUsed ] * gGameOptions.ubBobbyRay, ubCurrentlyOnHand); + ubItemsOrdered = HowManyItemsToReorder(StoreInventory[ usItemIndex ][ ubBobbyRayNewUsed ] * gGameOptions.ubBobbyRayQuantity, ubCurrentlyOnHand); } else { diff --git a/Laptop/Store Inventory.cpp b/Laptop/Store Inventory.cpp index b9f6fa51..c1ebdd2e 100644 --- a/Laptop/Store Inventory.cpp +++ b/Laptop/Store Inventory.cpp @@ -814,7 +814,7 @@ void SetupStoreInventory( STORE_INVENTORY *pInventoryArray, BOOLEAN fUsed ) else // new { // Madd - pInventoryArray[i].ubQtyOnHand = ubNumBought * gGameOptions.ubBobbyRay; + pInventoryArray[i].ubQtyOnHand = ubNumBought * gGameOptions.ubBobbyRayQuantity; pInventoryArray[i].ubItemQuality = 100; } } diff --git a/MPHostScreen.cpp b/MPHostScreen.cpp index a2e499ec..17de7c7c 100644 --- a/MPHostScreen.cpp +++ b/MPHostScreen.cpp @@ -2831,7 +2831,8 @@ void DoneFadeOutForExitMPHScreen( void ) gGameOptions.fTurnTimeLimit = FALSE; // Bobby Rays - why would we want anything less than the best - gGameOptions.ubBobbyRay = BR_AWESOME; + gGameOptions.ubBobbyRayQuality = BR_AWESOME; + gGameOptions.ubBobbyRayQuantity = BR_AWESOME; gubMPHExitScreen = INTRO_SCREEN; diff --git a/MPJoinScreen.cpp b/MPJoinScreen.cpp index 341e05a9..9b2b6112 100644 --- a/MPJoinScreen.cpp +++ b/MPJoinScreen.cpp @@ -786,7 +786,8 @@ void DoneFadeOutForExitMPJScreen( void ) gGameOptions.fTurnTimeLimit = FALSE; // Bobby Rays - why would we want anything less than the best - gGameOptions.ubBobbyRay = BR_AWESOME; + gGameOptions.ubBobbyRayQuality = BR_AWESOME; + gGameOptions.ubBobbyRayQuantity = BR_AWESOME; gubMPJExitScreen = MP_CONNECT_SCREEN; diff --git a/MPScoreScreen.cpp b/MPScoreScreen.cpp index c018f966..b3c64214 100644 --- a/MPScoreScreen.cpp +++ b/MPScoreScreen.cpp @@ -586,8 +586,8 @@ void DoneFadeOutForExitMPSScreen( void ) gGameOptions.fTurnTimeLimit = FALSE; // Bobby Rays - why would we want anything less than the best - gGameOptions.ubBobbyRay = BR_AWESOME; - + gGameOptions.ubBobbyRayQuality = BR_AWESOME; + gGameOptions.ubBobbyRayQuantity = BR_AWESOME; gubMPSExitScreen = INTRO_SCREEN; diff --git a/Multiplayer/client.cpp b/Multiplayer/client.cpp index ce5ef6fb..452d340a 100644 --- a/Multiplayer/client.cpp +++ b/Multiplayer/client.cpp @@ -2380,7 +2380,8 @@ void recieveSETTINGS (RPCParameters *rpcParameters) //recive settings from serve gGameOptions.ubDifficultyLevel=cl_lan->soubDifficultyLevel; gGameOptions.fNewTraitSystem = cl_lan->soubSkillTraits; gGameOptions.fIronManMode=cl_lan->sofIronManMode; - gGameOptions.ubBobbyRay=cl_lan->soubBobbyRay; + gGameOptions.ubBobbyRayQuality=cl_lan->soubBobbyRayQuality; + gGameOptions.ubBobbyRayQuantity=cl_lan->soubBobbyRayQuantity; // Set Bobby Ray "Under Construction"? if(!cl_lan->disableBobbyRay) @@ -2605,7 +2606,8 @@ void reapplySETTINGS() gGameOptions.ubDifficultyLevel=gMPServerSettings.soubDifficultyLevel; gGameOptions.fNewTraitSystem = gMPServerSettings.soubSkillTraits; gGameOptions.fIronManMode=gMPServerSettings.sofIronManMode; - gGameOptions.ubBobbyRay=gMPServerSettings.soubBobbyRay; + gGameOptions.ubBobbyRayQuality=gMPServerSettings.soubBobbyRayQuality; + gGameOptions.ubBobbyRayQuantity=gMPServerSettings.soubBobbyRayQuantity; // Set Bobby Ray "Under Construction"? if(!gMPServerSettings.disableBobbyRay) diff --git a/Multiplayer/network.h b/Multiplayer/network.h index c801e157..b2571b4f 100644 --- a/Multiplayer/network.h +++ b/Multiplayer/network.h @@ -72,7 +72,8 @@ typedef struct UINT8 soubSkillTraits; BOOLEAN sofTurnTimeLimit; BOOLEAN sofIronManMode; - UINT8 soubBobbyRay; + UINT8 soubBobbyRayQuality; + UINT8 soubBobbyRayQuantity; UINT8 maxMercs; UINT8 client_num; char client_name[30]; diff --git a/Multiplayer/server.cpp b/Multiplayer/server.cpp index a34af06d..6676855f 100644 --- a/Multiplayer/server.cpp +++ b/Multiplayer/server.cpp @@ -691,7 +691,8 @@ void requestSETTINGS(RPCParameters *rpcParameters ) lan.secondsPerTick = gSecondsPerTick; // WANNE.MP: Check - lan.soubBobbyRay = BR_AWESOME; + lan.soubBobbyRayQuality = BR_AWESOME; + lan.soubBobbyRayQuantity = BR_AWESOME; lan.sofGunNut = TRUE; lan.soubGameStyle = STYLE_REALISTIC; lan.soubDifficultyLevel = gDifficultyLevel; diff --git a/SaveLoadScreen.cpp b/SaveLoadScreen.cpp index 87a624bb..eac0992d 100644 --- a/SaveLoadScreen.cpp +++ b/SaveLoadScreen.cpp @@ -1449,11 +1449,11 @@ BOOLEAN DisplaySaveGameEntry( INT32 bEntryID ) swprintf( zDifString, L"%s %s", gzGIOScreenText[ GIO_EASY_TEXT + SaveGameHeader.sInitialGameOptions.ubDifficultyLevel - 1 ], zSaveLoadText[ SLG_DIFF ] ); //make a string containing the extended options - swprintf( zMouseHelpTextString, L"%20ls %22ls %22ls %22ls", zDifString, - - SaveGameHeader.sInitialGameOptions.ubBobbyRay == BR_GOOD ? zSaveLoadText[ SLG_BR_GOOD_TEXT ] : (SaveGameHeader.sInitialGameOptions.ubBobbyRay == BR_GREAT ? zSaveLoadText[ SLG_BR_GREAT_TEXT ]: (SaveGameHeader.sInitialGameOptions.ubBobbyRay == BR_EXCELLENT ? zSaveLoadText[ SLG_BR_EXCELLENT_TEXT ]: zSaveLoadText[ SLG_BR_AWESOME_TEXT ])), - SaveGameHeader.sInitialGameOptions.fGunNut ? zSaveLoadText[ SLG_ADDITIONAL_GUNS ] : zSaveLoadText[ SLG_NORMAL_GUNS ], - SaveGameHeader.sInitialGameOptions.ubGameStyle == STYLE_SCIFI ? zSaveLoadText[ SLG_SCIFI ] : (SaveGameHeader.sInitialGameOptions.ubGameStyle == STYLE_PLATINUM ? zSaveLoadText[ SLG_PLATINUM ]: zSaveLoadText[ SLG_REALISTIC ]) ); + swprintf( zMouseHelpTextString, L"%20ls %d %d %22ls %22ls", zDifString, + SaveGameHeader.sInitialGameOptions.ubBobbyRayQuality, + SaveGameHeader.sInitialGameOptions.ubBobbyRayQuantity, + SaveGameHeader.sInitialGameOptions.fGunNut ? zSaveLoadText[ SLG_ADDITIONAL_GUNS ] : zSaveLoadText[ SLG_NORMAL_GUNS ], + SaveGameHeader.sInitialGameOptions.ubGameStyle == STYLE_SCIFI ? zSaveLoadText[ SLG_SCIFI ] : (SaveGameHeader.sInitialGameOptions.ubGameStyle == STYLE_PLATINUM ? zSaveLoadText[ SLG_PLATINUM ]: zSaveLoadText[ SLG_REALISTIC ]) ); //The date DrawTextToScreen( zMouseHelpTextString, (UINT16)(usPosX+SLG_DATE_OFFSET_X), (UINT16)(usPosY+SLG_DATE_OFFSET_Y), 0, uiFont, ubFontColor, FONT_MCOLOR_BLACK, FALSE, LEFT_JUSTIFIED ); diff --git a/Tactical/ArmsDealerInvInit.cpp b/Tactical/ArmsDealerInvInit.cpp index dffe9530..0f0f4b1c 100644 --- a/Tactical/ArmsDealerInvInit.cpp +++ b/Tactical/ArmsDealerInvInit.cpp @@ -989,9 +989,9 @@ UINT8 GetCurrentSuitabilityForItem( INT8 bArmsDealer, UINT16 usItemIndex, BOOLEA } //Madd: Bobby Ray's will sell higher coolness stuff if it's used, and may also have a better selection at the start of the game, depending on selection - if ( (bArmsDealer == bobbyRaysID || armsDealerInfo[bArmsDealer].useBRSetting) && gGameOptions.ubBobbyRay > BR_GOOD ) + if ( (bArmsDealer == bobbyRaysID || armsDealerInfo[bArmsDealer].useBRSetting) && gGameOptions.ubBobbyRayQuality > BR_GOOD ) { - ubMaxCoolness += gGameOptions.ubBobbyRay - 1; + ubMaxCoolness += gGameOptions.ubBobbyRayQuality - 1; if (fUsed ) { ubMaxCoolness += 1; @@ -1013,8 +1013,8 @@ UINT8 GetCurrentSuitabilityForItem( INT8 bArmsDealer, UINT16 usItemIndex, BOOLEA ubMaxCoolness += 1; if (gGameExternalOptions.tonyUsesBRSetting) { - ubMinCoolness += gGameOptions.ubBobbyRay / 3; - ubMaxCoolness += gGameOptions.ubBobbyRay; + ubMinCoolness += gGameOptions.ubBobbyRayQuality / 3; + ubMaxCoolness += gGameOptions.ubBobbyRayQuality; } } else if (bArmsDealer == ARMS_DEALER_DEVIN) @@ -1027,8 +1027,8 @@ UINT8 GetCurrentSuitabilityForItem( INT8 bArmsDealer, UINT16 usItemIndex, BOOLEA } if (gGameExternalOptions.devinUsesBRSetting) { - ubMinCoolness += gGameOptions.ubBobbyRay / 3; - ubMaxCoolness += gGameOptions.ubBobbyRay; + ubMinCoolness += gGameOptions.ubBobbyRayQuality / 3; + ubMaxCoolness += gGameOptions.ubBobbyRayQuality; } } */ @@ -1136,7 +1136,7 @@ UINT8 ChanceOfItemTransaction( INT8 bArmsDealer, UINT16 usItemIndex, BOOLEAN fDe // Madd if ( !fDealerIsSelling && fBobbyRay ) - ubChance = min(100,gGameOptions.ubBobbyRay * ubChance); + ubChance = min(100,gGameOptions.ubBobbyRayQuality * ubChance); // if there's any uncertainty if ((ubChance > 0) && (ubChance < 100)) @@ -1150,7 +1150,7 @@ UINT8 ChanceOfItemTransaction( INT8 bArmsDealer, UINT16 usItemIndex, BOOLEAN fDe ubChance /= 2; if ( fBobbyRay ) - ubChance /= gGameOptions.ubBobbyRay; + ubChance /= gGameOptions.ubBobbyRayQuality; } // used items are traded more rarely diff --git a/Utils/Text.h b/Utils/Text.h index edfb4203..bdc136a1 100644 --- a/Utils/Text.h +++ b/Utils/Text.h @@ -1641,6 +1641,8 @@ enum SLG_SQUAD_SIZE_RES_ERROR, + SLG_BR_QUANTITY_TEXT, + TEXT_NUM_SLG_TEXT, }; extern STR16 zSaveLoadText[]; @@ -1780,6 +1782,7 @@ enum GIO_NCTH_TITLE_TEXT, GIO_IIS_TITLE_TEXT, GIO_OVERHEATING_TITLE_TEXT, + GIO_BR_QUANTITY_TEXT, //////////////////////////////////// TEXT_NUM_GIO_TEXT diff --git a/Utils/_ChineseText.cpp b/Utils/_ChineseText.cpp index ec7304b8..7c0fc124 100644 --- a/Utils/_ChineseText.cpp +++ b/Utils/_ChineseText.cpp @@ -4964,7 +4964,7 @@ STR16 zSaveLoadText[] = L"难度", //"Difficulty", L"Platinum Mode", //Placeholder English - L"Bobby Ray 库存", + L"Bobby Ray Quality", //TODO.Translate L"一般", L"较多", L"很多", @@ -4974,6 +4974,7 @@ STR16 zSaveLoadText[] = L"新携行系统无法使用默认的 Data 文件夹,请仔细读说明。", L"当前分辨率不支持存档文件的小队人数,请增加分辨率再试。", //L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", + L"Bobby Ray Quantity",//TODO.Translate }; @@ -5258,7 +5259,7 @@ STR16 gzGIOScreenText[] = L"随时存盘", L"铁人模式", L"在Demo中禁用", - L"Bobby Ray商店库存", + L"Bobby Ray Quality", //TODO.Translate L"极少", L"较少", L"一般", @@ -5315,6 +5316,7 @@ STR16 gzGIOScreenText[] = L"新命中率系统(NCTH)", //L"New Chance to Hit System", L"改进的中断系统(IIS)", //L"Improved Interrupt System", L"武器过热", //L"Weapon Overheating", + L"Bobby Ray Quantity",//TODO.Translate }; STR16 gzMPJScreenText[] = diff --git a/Utils/_DutchText.cpp b/Utils/_DutchText.cpp index cb19c4a9..a91f3100 100644 --- a/Utils/_DutchText.cpp +++ b/Utils/_DutchText.cpp @@ -4963,16 +4963,17 @@ STR16 zSaveLoadText[] = L"Moeilijkheid", L"Platinum Mode", //Placeholder English - L"Bobby Ray's", - L"Good Selection", - L"Great Selection", - L"Excellent Selection", - L"Awesome Selection", + L"Bobby Ray Quality", + L"Good", + L"Great", + L"Excellent", + L"Awesome", L"New Inventory does not work in 640x480 screen resolution. Please increase the screen resolution and try again.", L"New Inventory does not work from the default 'Data' folder.", L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", + L"Bobby Ray Quantity",//TODO.Translate }; @@ -5257,7 +5258,7 @@ STR16 gzGIOScreenText[] = L"Save Anytime", L"Iron Man", L"Niet mogelijk bij Demo", - L"Bobby Ray's Selection", + L"Bobby Ray Quality", L"Good", L"Great", L"Excellent", @@ -5317,6 +5318,7 @@ STR16 gzGIOScreenText[] = L"New Chance to Hit System", L"Improved Interrupt System", L"Weapon Overheating", + L"Bobby Ray Quantity",//TODO.Translate }; STR16 gzMPJScreenText[] = diff --git a/Utils/_EnglishText.cpp b/Utils/_EnglishText.cpp index 5a01c608..4d9833d6 100644 --- a/Utils/_EnglishText.cpp +++ b/Utils/_EnglishText.cpp @@ -4962,16 +4962,17 @@ STR16 zSaveLoadText[] = L"Difficulty", L"Platinum Mode", //Placeholder English - L"Bobby Ray's", - L"Normal Selection", - L"Great Selection", - L"Excellent Selection", - L"Awesome Selection", + L"Bobby Ray Quality", + L"Normal", + L"Great", + L"Excellent", + L"Awesome", L"New Inventory does not work in 640x480 screen resolution. Please increase the screen resolution and try again.", L"New Inventory does not work from the default 'Data' folder.", L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", + L"Bobby Ray Quantity", }; @@ -5256,7 +5257,7 @@ STR16 gzGIOScreenText[] = L"Save Anytime", L"Iron Man", L"Disabled for Demo", - L"Bobby Ray's Selection", + L"Bobby Ray Quality", L"Normal", L"Great", L"Excellent", @@ -5314,6 +5315,7 @@ STR16 gzGIOScreenText[] = L"New Chance to Hit System", L"Improved Interrupt System", L"Weapon Overheating", + L"Bobby Ray Quantity", }; STR16 gzMPJScreenText[] = diff --git a/Utils/_FrenchText.cpp b/Utils/_FrenchText.cpp index 82fa75ec..a89d89e7 100644 --- a/Utils/_FrenchText.cpp +++ b/Utils/_FrenchText.cpp @@ -4953,16 +4953,17 @@ STR16 zSaveLoadText[] = L"Difficulté", L"Platinum Mode", //Placeholder English - L"Bobby Ray", - L"Bonne Selection", - L"Meilleure Selection", - L"Excellente Selection", - L"Superbe Selection", + L"Bobby Ray Qualité", + L"Bonne", + L"Meilleure", + L"Excellente", + L"Superbe", L"Le nouvel inventaire (NIV) ne peut se lancer en 640x480. Changez de résolution.", L"Le nouvel inventaire (NIV) ne fonctionne pas depuis le dossier \"data\" original.", L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", // TODO.Translate + L"Bobby Ray Quantité", }; @@ -5247,7 +5248,7 @@ STR16 gzGIOScreenText[] = L"Sauv. à volonté", L"Iron Man", L"Désactivé pour la démo", - L"Selection de Bobby Ray", + L"Qualité de Bobby Ray", L"Bonne", L"Meilleure", L"Excellente", @@ -5305,6 +5306,7 @@ STR16 gzGIOScreenText[] = L"New Chance to Hit System", L"Improved Interrupt System", L"Weapon Overheating", + L"Quantité de Bobby Ray",//TODO.Translate }; STR16 gzMPJScreenText[] = diff --git a/Utils/_GermanText.cpp b/Utils/_GermanText.cpp index b04c048e..3a0f0340 100644 --- a/Utils/_GermanText.cpp +++ b/Utils/_GermanText.cpp @@ -4810,7 +4810,7 @@ STR16 zSaveLoadText[] = L"SciFi-Stil", L"Schwierigkeit", L"Platinum Mode", //Placeholder English - L"Bobby Ray's", + L"Bobby Ray Quality", //TODO.Translate L"Normale Auswahl", L"Große Auswahl", L"Ausgezeichnete Auswahl", @@ -4820,6 +4820,7 @@ STR16 zSaveLoadText[] = L"Neues Inventar funktioniert nicht mit dem ausgewählten 'Data' Ordner.", L"Die gespeicherte Truppengröße im Spielstand wird nicht unterstützt bei der aktullen Bildschirmauflösung. Wählen Sie eine höhere Bildschirmauflösung und versuchen Sie es erneut.", + L"Bobby Ray Quantity",//TODO.Translate }; //MapScreen @@ -5104,7 +5105,7 @@ STR16 gzGIOScreenText[] = L"Jederzeit", L"Nicht im Kampf", L"Option nicht verfügbar", - L"Bobby Ray's Auswahl", + L"Bobby Ray Quality", //TODO.Translate L"Normal", L"Groß", L"Ausgezeichnet", @@ -5160,6 +5161,7 @@ STR16 gzGIOScreenText[] = L"Neues Zielsystem", L"Verbesserte Unterbrechungen", L"Waffen-Überhitzung", + L"Bobby Ray Quantity",//TODO.Translate }; STR16 gzMPJScreenText[] = diff --git a/Utils/_ItalianText.cpp b/Utils/_ItalianText.cpp index 740030cd..1c88c7b0 100644 --- a/Utils/_ItalianText.cpp +++ b/Utils/_ItalianText.cpp @@ -4949,16 +4949,17 @@ STR16 zSaveLoadText[] = L"Difficoltà", L"Platinum Mode", //Placeholder English - L"Bobby Ray's", - L"Good Selection", - L"Great Selection", - L"Excellent Selection", - L"Awesome Selection", + L"Bobby Ray Quality", + L"Good", + L"Great", + L"Excellent", + L"Awesome", L"New Inventory does not work in 640x480 screen resolution. Please increase the screen resolution and try again.", L"New Inventory does not work from the default 'Data' folder.", L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", + L"Bobby Ray Quantity", //TODO.Translate }; @@ -5242,7 +5243,7 @@ STR16 gzGIOScreenText[] = L"Tempo illimitato", L"Turni a tempo", L"Disabilitato per Demo", - L"Bobby Ray's Selection", + L"Bobby Ray Quality", L"Good", L"Great", L"Excellent", @@ -5303,6 +5304,7 @@ STR16 gzGIOScreenText[] = L"New Chance to Hit System", L"Improved Interrupt System", L"Weapon Overheating", + L"Bobby Ray Quantity", //TODO.Translate }; STR16 gzMPJScreenText[] = diff --git a/Utils/_PolishText.cpp b/Utils/_PolishText.cpp index dcc69486..af3ab5cd 100644 --- a/Utils/_PolishText.cpp +++ b/Utils/_PolishText.cpp @@ -4960,7 +4960,7 @@ STR16 zSaveLoadText[] = L"Stopień trudnoŚci", L"Platynowy tryb", //Placeholder English - L"Wyposażenie Bobby Ray's", + L"Bobby Ray Quality",//TODO.Translate L"Normalne", L"Świetne", L"WyŚmienite", @@ -4970,6 +4970,7 @@ STR16 zSaveLoadText[] = L"Nowy inwentarz nie korzysta z domyŚlnego folderu 'Data'.", L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", // TODO.Translate + L"Bobby Ray Quantity", //TODO.Translate }; @@ -5253,7 +5254,7 @@ STR16 gzGIOScreenText[] = L"Zawsze", L"W czasie pokoju", L"Nie działa w wersji demo", - L"Wyposażenie Bobby Ray's", + L"Bobby Ray Quality", //TODO.Translate L"Normalne", L"Świetne", L"WyŚmienite", @@ -5312,6 +5313,7 @@ STR16 gzGIOScreenText[] = L"New Chance to Hit System", L"Improved Interrupt System", L"Weapon Overheating", + L"Bobby Ray Quantity", //TODO.Translate }; STR16 gzMPJScreenText[] = diff --git a/Utils/_RussianText.cpp b/Utils/_RussianText.cpp index d95a8dce..bbcea0b0 100644 --- a/Utils/_RussianText.cpp +++ b/Utils/_RussianText.cpp @@ -4944,7 +4944,7 @@ STR16 zSaveLoadText[] = L"Элементы фантастики", L"Платиновая серия", - L"Ассортимент Бобби Рэя", + L"Бобби Рэя Quality", //TODO.Translate L"Нормальный", L"Большой", L"Огромный", @@ -4954,6 +4954,7 @@ STR16 zSaveLoadText[] = L"Загрузка игры, начатой в режиме \"Нового Инвентаря\", невозможна. Установите в Ja2.ini игровую папку 'Data-1.13' и повторите попытку.", L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", // TODO.Translate + L"Bobby Ray Quantity", //TODO.Translate }; @@ -5237,7 +5238,7 @@ STR16 gzGIOScreenText[] = L"в любое время", L"лишь в мирное", L"Отключено в демо-версии", - L"Ассортимент Бобби Рэя", + L"Бобби Рэя Quality", //TODO.Translate L"хороший", L"большой", L"огромный", @@ -5296,6 +5297,7 @@ STR16 gzGIOScreenText[] = L"New Chance to Hit System", L"Improved Interrupt System", L"Weapon Overheating", + L"Bobby Ray Quantity", }; STR16 gzMPJScreenText[] = diff --git a/Utils/_TaiwaneseText.cpp b/Utils/_TaiwaneseText.cpp index 952ce131..b1270b56 100644 --- a/Utils/_TaiwaneseText.cpp +++ b/Utils/_TaiwaneseText.cpp @@ -4964,16 +4964,17 @@ STR16 zSaveLoadText[] = L"Difficulty", L"Platinum Mode", //Placeholder English - L"Bobby Ray's", - L"Normal Selection", - L"Great Selection", - L"Excellent Selection", - L"Awesome Selection", + L"Bobby Ray Quality", + L"Normal", + L"Great", + L"Excellent", + L"Awesome", L"New Inventory does not work in 640x480 screen resolution. Please increase the screen resolution and try again.", L"New Inventory does not work from the default 'Data' folder.", L"The squad size from the savegame is not supported by the current screen resolution. Please increase the screen resolution and try again.", + L"Bobby Ray Quantity", }; @@ -5259,7 +5260,7 @@ STR16 gzGIOScreenText[] = L"Iron Man", L"Disabled for Demo", - L"Bobby Ray's Selection", + L"Bobby Ray Quality", L"Normal", L"Great", L"Excellent", @@ -5319,6 +5320,7 @@ STR16 gzGIOScreenText[] = L"New Chance to Hit System", L"Improved Interrupt System", L"Weapon Overheating", + L"Bobby Ray Quantity", }; STR16 gzMPJScreenText[] =