From 9b9e22f09d2566eae19ac995f5220897d51ce041 Mon Sep 17 00:00:00 2001 From: Wanne Date: Fri, 10 Apr 2009 10:36:08 +0000 Subject: [PATCH] - Fixes/Improvements to Option screen (by Arynn) git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@2709 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- GameSettings.cpp | 22 +++- GameSettings.h | 74 ++++++++++- Options Screen.cpp | Bin 56361 -> 126046 bytes Standard Gaming Platform/mousesystem.cpp | 12 ++ Standard Gaming Platform/mousesystem.h | 5 + Sys Globals.cpp | 7 + Sys Globals.h | 4 + Utils/_ChineseText.cpp | 149 ++++++++++++++++++++++ Utils/_DutchText.cpp | 150 ++++++++++++++++++++++ Utils/_EnglishText.cpp | 156 ++++++++++++++++++++++- Utils/_FrenchText.cpp | 150 ++++++++++++++++++++++ Utils/_GermanText.cpp | 150 ++++++++++++++++++++++ Utils/_ItalianText.cpp | 150 ++++++++++++++++++++++ Utils/_PolishText.cpp | 150 ++++++++++++++++++++++ Utils/_RussianText.cpp | 150 ++++++++++++++++++++++ Utils/_TaiwaneseText.cpp | 150 ++++++++++++++++++++++ builddefines.h | 2 +- gameloop.cpp | 38 ++++++ 18 files changed, 1508 insertions(+), 11 deletions(-) diff --git a/GameSettings.cpp b/GameSettings.cpp index e16c7b720..1093ed098 100644 --- a/GameSettings.cpp +++ b/GameSettings.cpp @@ -185,9 +185,9 @@ BOOLEAN LoadGameSettings() SetSpeechVolume( gGameSettings.ubSpeechVolume ); MusicSetVolume( gGameSettings.ubMusicVolumeSetting ); -#ifndef BLOOD_N_GORE_ENABLED - gGameSettings.fOptions[ TOPTION_BLOOD_N_GORE ] = FALSE; -#endif +//#ifndef BLOOD_N_GORE_ENABLED // arynn : del_me : defunct +// gGameSettings.fOptions[ TOPTION_BLOOD_N_GORE ] = FALSE; +//#endif //if the user doesnt want the help screens present if( gGameSettings.fHideHelpInAllScreens ) @@ -278,9 +278,9 @@ void InitGameSettings() gGameSettings.fOptions[ TOPTION_USE_METRIC_SYSTEM ] = FALSE; - #ifndef BLOOD_N_GORE_ENABLED - gGameSettings.fOptions[ TOPTION_BLOOD_N_GORE ] = FALSE; - #endif + //#ifndef BLOOD_N_GORE_ENABLED // arynn : del_me : defunct + // gGameSettings.fOptions[ TOPTION_BLOOD_N_GORE ] = FALSE; + //#endif gGameSettings.fOptions[ TOPTION_MERC_ALWAYS_LIGHT_UP ] = FALSE; gGameSettings.fOptions[ TOPTION_SMART_CURSOR ] = FALSE; @@ -312,6 +312,16 @@ void InitGameSettings() gGameSettings.fOptions[ TOPTION_LOW_CPU_USAGE ] = FALSE; gGameSettings.fOptions[ TOPTION_ENHANCED_DESC_BOX ] = FALSE; gGameSettings.fOptions[ TOPTION_TOGGLE_TURN_MODE ] = FALSE; + gGameSettings.fOptions[ TOPTION_SHOW_RESET_ALL_OPTIONS ] = FALSE; // arynn : failsafe show/hide option + gGameSettings.fOptions[ TOPTION_RESET_ALL_OPTIONS ] = FALSE; // arynn : a do once and reset self option + gGameSettings.fOptions[ TOPTION_DEBUG_MODE_OPTIONS_HEADER ] = FALSE; // arynn : a sample options screen options header + gGameSettings.fOptions[ TOPTION_RETAIN_DEBUG_OPTIONS_IN_RELEASE ] = FALSE; // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + gGameSettings.fOptions[ TOPTION_DEBUG_MODE_RENDER_OPTIONS_GROUP ] = FALSE; // arynn : a sample option which affects options screen listing only + gGameSettings.fOptions[ TOPTION_RENDER_MOUSE_REGIONS ] = FALSE; // arynn : a sample DEBUG build option + gGameSettings.fOptions[ TOPTION_DEBUG_MODE_OPTIONS_END ] = FALSE; // arynn : a sample options screen options divider + + + gGameSettings.fOptions[ TOPTION_LAST_OPTION ] = FALSE; // arynn : this is THE LAST option that exists (intended for debugging the options screen, doesnt do anything, except exist) gGameSettings.ubSizeOfDisplayCover = 4; diff --git a/GameSettings.h b/GameSettings.h index 79756117b..a17d32e8a 100644 --- a/GameSettings.h +++ b/GameSettings.h @@ -5,6 +5,8 @@ //If you add any options, MAKE sure you add the corresponding string to the Options Screen string array +// look up : zOptionsScreenHelpText , zOptionsToggleText , InitGameSettings , +// also, to establish non typical display rules (options screen list) : Establish_Options_Screen_Rules enum { TOPTION_SPEECH, @@ -58,8 +60,77 @@ enum TOPTION_SILENT_SKYRIDER, TOPTION_LOW_CPU_USAGE, TOPTION_ENHANCED_DESC_BOX, - TOPTION_TOGGLE_TURN_MODE, // arynn : add forced turn mode + TOPTION_TOGGLE_TURN_MODE, // arynn : add forced turn mode + TOPTION_SHOW_RESET_ALL_OPTIONS, // arynn : in game ja2.set file fixer (one time done button, not a reall toggle option) + TOPTION_RESET_ALL_OPTIONS, // arynn : in game ja2.set file fixer (one time done button, not a reall toggle option) + TOPTION_DEBUG_MODE_OPTIONS_HEADER, // arynn : a sample options screen options header + TOPTION_RETAIN_DEBUG_OPTIONS_IN_RELEASE, // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + TOPTION_DEBUG_MODE_RENDER_OPTIONS_GROUP, // arynn : a sample option which affects options screen listing only + TOPTION_RENDER_MOUSE_REGIONS, // arynn : a sample DEBUG build option + TOPTION_DEBUG_MODE_OPTIONS_END, // arynn : a sample options screen options divider + + //TOPTION PADDIN : go ahead, use one of em, just try to keep the # inline with where they are in foptions[] so the # makes sense + TOPTION_044, + TOPTION_045, + TOPTION_046, + TOPTION_047, + TOPTION_048, + TOPTION_049, + TOPTION_050, + TOPTION_051, + TOPTION_052, + TOPTION_053, + TOPTION_054, + TOPTION_055, + TOPTION_056, + TOPTION_057, + TOPTION_058, + TOPTION_059, + TOPTION_060, + TOPTION_061, + TOPTION_062, + TOPTION_063, + TOPTION_064, + TOPTION_065, + TOPTION_066, + TOPTION_067, + TOPTION_068, + TOPTION_069, + TOPTION_070, + TOPTION_071, + TOPTION_072, + TOPTION_073, + TOPTION_074, + TOPTION_075, + TOPTION_076, + TOPTION_077, + TOPTION_078, + TOPTION_079, + TOPTION_080, + TOPTION_081, + TOPTION_082, + TOPTION_083, + TOPTION_084, + TOPTION_085, + TOPTION_086, + TOPTION_087, + TOPTION_088, + TOPTION_089, + TOPTION_090, + TOPTION_091, + TOPTION_092, + TOPTION_093, + TOPTION_094, + TOPTION_095, + TOPTION_096, + TOPTION_097, + TOPTION_098, + TOPTION_099, + TOPTION_100, + + // arynn : this is THE LAST option that exists (intended for debugging the options screen, doesnt do anything, except exist) + TOPTION_LAST_OPTION, NUM_GAME_OPTIONS, //Toggle up this will be able to be Toggled by the player @@ -67,6 +138,7 @@ enum TOPTION_MERC_CASTS_LIGHT = NUM_GAME_OPTIONS, TOPTION_HIDE_BULLETS, TOPTION_TRACKING_MODE, + NUM_ALL_GAME_OPTIONS, }; diff --git a/Options Screen.cpp b/Options Screen.cpp index af84da1fe47c5c68fdc155f7f43128706c68da64..0c2dcf2cee134d65f0f72bfdd062dce5380f07be 100644 GIT binary patch literal 126046 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%0D*ii>Rv=9-A;146umMsiGa(FtSZNo-J+Y)*hBC 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

$j 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 literal 56361 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 M=h@$b?E}F6f4anext; +} diff --git a/Standard Gaming Platform/mousesystem.h b/Standard Gaming Platform/mousesystem.h index 0903bb1f0..890210899 100644 --- a/Standard Gaming Platform/mousesystem.h +++ b/Standard Gaming Platform/mousesystem.h @@ -195,6 +195,11 @@ void MSYS_MoveMouseRegionTo( MOUSE_REGION *region, INT16 sX, INT16 sY); void MSYS_AllowDisabledRegionFastHelp( MOUSE_REGION *region, BOOLEAN fAllow ); +// arynn : render mouse regions +// functions to help externalize mouse region data +MOUSE_REGION *get_first_entry_in_MSYS_RegList(void); //list iteration initialize +MOUSE_REGION *get_next_entry_in_MSYS_RegList(MOUSE_REGION *current_region); //list iteration increment + // This function will force a re-evaluation of mous regions // Usually used to force change of mouse cursor if panels switch, etc void RefreshMouseRegions( ); diff --git a/Sys Globals.cpp b/Sys Globals.cpp index 3b89ed753..b2eeca5a4 100644 --- a/Sys Globals.cpp +++ b/Sys Globals.cpp @@ -39,5 +39,12 @@ BOOLEAN SET_ERROR( const STR8 String, ...) return( FALSE ); } +//create a varible that can be tested outside the pre-compiler convention. +// also see its "Sys Globals.h" declaration +#ifdef JA2BETAVERSION +BOOLEAN JA2BETAVERSION_FLAG = 1; +#else +BOOLEAN JA2BETAVERSION_FLAG = 0; +#endif diff --git a/Sys Globals.h b/Sys Globals.h index 7ed6acadd..8dd6a7f51 100644 --- a/Sys Globals.h +++ b/Sys Globals.h @@ -27,4 +27,8 @@ extern INT32 giCounterPeriodOverlay; extern BOOLEAN SET_ERROR( const STR8 String, ...); +// arynn : note : a varible version of #define JA2BETAVERSION, used for control flow when not debugging +// : note : i wasnt sure about any existing. i'd imagine there is one. if so, it will get fixed later. +extern BOOLEAN JA2BETAVERSION_FLAG; + #endif diff --git a/Utils/_ChineseText.cpp b/Utils/_ChineseText.cpp index ad10fbd78..c3cbf98c7 100644 --- a/Utils/_ChineseText.cpp +++ b/Utils/_ChineseText.cpp @@ -4411,6 +4411,80 @@ STR16 zOptionsToggleText[] = L"降低CPU的使用率", //"Low CPU usage", L"Enhanced Description Box", L"强制回合制模式",//L"Forced Turn Mode", // arynn : add forced turn mode + // arynn : reset all toggle options, in cases for corrupted JA2.set files (and general debugging of options) + L"Reset ALL game options", + L"Do you really want to reset?", + // arynn : a sample options screen options header, just text, not a real option + L"--DEBUG OPTIONS--", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Retain Debug Options in Rel", + // arynn : a sample option which affects options screen listing only + L"DEBUG Render Option group", + // arynn : a sample DEBUG build option, this will draw slash-rects through current mouse region "hot spots" + L"Render Mouse Regions", + // arynn : a sample options screen options divider, just text, not a real option + L"-----------------", + + L"Option044", // arynn : note : everything south of here (should) only ever show in debug.. i doubt translating would prove useful + L"Option045", + L"Option046", + L"Option047", + L"Option048", + L"Option049", + L"Option050", + L"Option051", + L"Option052", + L"Option053", + L"Option054", + L"Option055", + L"Option056", + L"Option057", + L"Option058", + L"Option059", + L"Option060", + L"Option061", + L"Option062", + L"Option063", + L"Option064", + L"Option065", + L"Option066", + L"Option067", + L"Option068", + L"Option069", + L"Option070", + L"Option071", + L"Option072", + L"Option073", + L"Option074", + L"Option075", + L"Option076", + L"Option077", + L"Option078", + L"Option079", + L"Option080", + L"Option081", + L"Option082", + L"Option083", + L"Option084", + L"Option085", + L"Option086", + L"Option087", + L"Option088", + L"Option089", + L"Option090", + L"Option091", + L"Option092", + L"Option093", + L"Option094", + L"Option095", + L"Option096", + L"Option097", + L"Option098", + L"Option099", + L"Option100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"THE_LAST_OPTION", }; //This is the help text associated with the above toggles. @@ -4526,6 +4600,81 @@ STR16 zOptionsScreenHelpText[] = L"当打开时,将出现物品及武器的“增强描述框”(EDB)。", //L"When ON and enemy present, Turn Base mode persists untill sector is free (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // arynn : add forced turn mode L"当打开时,且在战术画面内存在敌军时,将一直处于回合制模式直至该地区所有敌军被消灭(可以通过快捷键|C|T|R|L+|S|H|I|F|T+|A|L|T+|T来控制打开或关闭强制回合制模式)", + // arynn : immediate effect option that fixes corrupt ja2.set keeping of toggle options + L"Click me to fix corrupt game settings", + L"Click me to fix corrupt game settings", + // arynn : a sample options screen options header, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Allows debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file", + // arynn : a sample option which affects options screen listing only + L"Toggle to display debugging render options", + // arynn : a sample DEBUG build option + L"Attempts to display slash-rects around mouse regions", + // arynn : a sample options screen options divider, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", + // text past this point is for debugging, translating would doubtfully prove usefull + L"044", + L"045", + L"046", + L"047", + L"048", + L"049", + L"050", + L"051", + L"052", + L"053", + L"054", + L"055", + L"056", + L"057", + L"058", + L"059", + L"060", + L"061", + L"062", + L"063", + L"064", + L"065", + L"066", + L"067", + L"068", + L"069", + L"070", + L"071", + L"072", + L"073", + L"074", + L"075", + L"076", + L"077", + L"078", + L"079", + L"080", + L"081", + L"082", + L"083", + L"084", + L"085", + L"086", + L"087", + L"088", + L"089", + L"090", + L"091", + L"092", + L"093", + L"094", + L"095", + L"096", + L"097", + L"098", + L"099", + L"100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"TOPTION_LAST_OPTION", + }; diff --git a/Utils/_DutchText.cpp b/Utils/_DutchText.cpp index 844538d6d..728c3baa0 100644 --- a/Utils/_DutchText.cpp +++ b/Utils/_DutchText.cpp @@ -3679,6 +3679,81 @@ STR16 zOptionsToggleText[] = L"Low CPU Usage", L"Enhanced Description Box", L"Forced Turn Mode", // arynn : add forced turn mode + // arynn : reset all toggle options, in cases for corrupted JA2.set files (and general debugging of options) + L"Reset ALL game options", + L"Do you really want to reset?", + // arynn : a sample options screen options header, just text, not a real option + L"--DEBUG OPTIONS--", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Retain Debug Options in Rel", + // arynn : a sample option which affects options screen listing only + L"DEBUG Render Option group", + // arynn : a sample DEBUG build option, this will draw slash-rects through current mouse region "hot spots" + L"Render Mouse Regions", + // arynn : a sample options screen options divider, just text, not a real option + L"-----------------", + + L"Option044", // arynn : note : everything south of here (should) only ever show in debug.. i doubt translating would prove useful + L"Option045", + L"Option046", + L"Option047", + L"Option048", + L"Option049", + L"Option050", + L"Option051", + L"Option052", + L"Option053", + L"Option054", + L"Option055", + L"Option056", + L"Option057", + L"Option058", + L"Option059", + L"Option060", + L"Option061", + L"Option062", + L"Option063", + L"Option064", + L"Option065", + L"Option066", + L"Option067", + L"Option068", + L"Option069", + L"Option070", + L"Option071", + L"Option072", + L"Option073", + L"Option074", + L"Option075", + L"Option076", + L"Option077", + L"Option078", + L"Option079", + L"Option080", + L"Option081", + L"Option082", + L"Option083", + L"Option084", + L"Option085", + L"Option086", + L"Option087", + L"Option088", + L"Option089", + L"Option090", + L"Option091", + L"Option092", + L"Option093", + L"Option094", + L"Option095", + L"Option096", + L"Option097", + L"Option098", + L"Option099", + L"Option100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"THE_LAST_OPTION", + }; //This is the help text associated with the above toggles. @@ -3761,6 +3836,81 @@ STR16 zOptionsScreenHelpText[] = L"When ON, game will run with much lower CPU usage.", L"When ON, enhanced descriptions will be shown for items and weapons.", L"When ON and enemy present, Turn Base mode persists untill sector is free (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // arynn : add forced turn mode + // arynn : immediate effect option that fixes corrupt ja2.set keeping of toggle options + L"Click me to fix corrupt game settings", + L"Click me to fix corrupt game settings", + // arynn : a sample options screen options header, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Allows debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file", + // arynn : a sample option which affects options screen listing only + L"Toggle to display debugging render options", + // arynn : a sample DEBUG build option + L"Attempts to display slash-rects around mouse regions", + // arynn : a sample options screen options divider, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", + // text past this point is for debugging, translating would doubtfully prove usefull + L"044", + L"045", + L"046", + L"047", + L"048", + L"049", + L"050", + L"051", + L"052", + L"053", + L"054", + L"055", + L"056", + L"057", + L"058", + L"059", + L"060", + L"061", + L"062", + L"063", + L"064", + L"065", + L"066", + L"067", + L"068", + L"069", + L"070", + L"071", + L"072", + L"073", + L"074", + L"075", + L"076", + L"077", + L"078", + L"079", + L"080", + L"081", + L"082", + L"083", + L"084", + L"085", + L"086", + L"087", + L"088", + L"089", + L"090", + L"091", + L"092", + L"093", + L"094", + L"095", + L"096", + L"097", + L"098", + L"099", + L"100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"TOPTION_LAST_OPTION", + }; diff --git a/Utils/_EnglishText.cpp b/Utils/_EnglishText.cpp index 3254ba757..535ae77f8 100644 --- a/Utils/_EnglishText.cpp +++ b/Utils/_EnglishText.cpp @@ -3515,7 +3515,7 @@ STR16 zOptionsText[] = //Confirmation pop when the user selects.. L"Quit game and return to the main menu?", - L"You need either the Speech option, or the Subtitle option to be enabled.", + L"You need either the Speech option, or the Subtitle option to be enabled.", // arynn : defunct : no more nag screen }; @@ -3691,7 +3691,82 @@ STR16 zOptionsToggleText[] = L"Silent Skyrider", L"Low CPU usage", L"Enhanced Description Box", - L"Forced Turn Mode", // arynn : add forced turn mode + // arynn : add forced turn mode + L"Forced Turn Mode", + // arynn : reset all toggle options, in cases for corrupted JA2.set files (and general debugging of options) + L"Reset ALL game options", + L"Do you really want to reset?", + // arynn : a sample options screen options header, just text, not a real option + L"--DEBUG OPTIONS--", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Retain Debug Options in Rel", + // arynn : a sample option which affects options screen listing only + L"DEBUG Render Option group", + // arynn : a sample DEBUG build option, this will draw slash-rects through current mouse region "hot spots" + L"Render Mouse Regions", + // arynn : a sample options screen options divider, just text, not a real option + L"-----------------", + + L"Option044", // arynn : note : everything south of here (should) only ever show in debug.. i doubt translating would prove useful + L"Option045", + L"Option046", + L"Option047", + L"Option048", + L"Option049", + L"Option050", + L"Option051", + L"Option052", + L"Option053", + L"Option054", + L"Option055", + L"Option056", + L"Option057", + L"Option058", + L"Option059", + L"Option060", + L"Option061", + L"Option062", + L"Option063", + L"Option064", + L"Option065", + L"Option066", + L"Option067", + L"Option068", + L"Option069", + L"Option070", + L"Option071", + L"Option072", + L"Option073", + L"Option074", + L"Option075", + L"Option076", + L"Option077", + L"Option078", + L"Option079", + L"Option080", + L"Option081", + L"Option082", + L"Option083", + L"Option084", + L"Option085", + L"Option086", + L"Option087", + L"Option088", + L"Option089", + L"Option090", + L"Option091", + L"Option092", + L"Option093", + L"Option094", + L"Option095", + L"Option096", + L"Option097", + L"Option098", + L"Option099", + L"Option100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"THE_LAST_OPTION", }; //This is the help text associated with the above toggles. @@ -3773,7 +3848,82 @@ STR16 zOptionsScreenHelpText[] = L"When ON, Skyrider will not talk anymore.", L"When ON, game will run with much lower CPU usage.", L"When ON, enhanced descriptions will be shown for items and weapons.", - L"When ON and enemy present, Turn Base mode persists untill sector is free (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // arynn : add forced turn mode + // arynn : add forced turn mode + L"When ON and enemy present, Turn Base mode persists untill sector is free (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", + // arynn : immediate effect option that fixes corrupt ja2.set keeping of toggle options + L"Click me to fix corrupt game settings", + L"Click me to fix corrupt game settings", + // arynn : a sample options screen options header, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Allows debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file", + // arynn : a sample option which affects options screen listing only + L"Toggle to display debugging render options", + // arynn : a sample DEBUG build option + L"Attempts to display slash-rects around mouse regions", + // arynn : a sample options screen options divider, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", + // text past this point is for debugging, translating would doubtfully prove usefull + L"044", + L"045", + L"046", + L"047", + L"048", + L"049", + L"050", + L"051", + L"052", + L"053", + L"054", + L"055", + L"056", + L"057", + L"058", + L"059", + L"060", + L"061", + L"062", + L"063", + L"064", + L"065", + L"066", + L"067", + L"068", + L"069", + L"070", + L"071", + L"072", + L"073", + L"074", + L"075", + L"076", + L"077", + L"078", + L"079", + L"080", + L"081", + L"082", + L"083", + L"084", + L"085", + L"086", + L"087", + L"088", + L"089", + L"090", + L"091", + L"092", + L"093", + L"094", + L"095", + L"096", + L"097", + L"098", + L"099", + L"100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"TOPTION_LAST_OPTION", }; diff --git a/Utils/_FrenchText.cpp b/Utils/_FrenchText.cpp index 1750f5102..597951455 100644 --- a/Utils/_FrenchText.cpp +++ b/Utils/_FrenchText.cpp @@ -3693,6 +3693,81 @@ STR16 zOptionsToggleText[] = L"Faible consommation processeur", L"EDB (mod rajoutant info utiles)", L"Mode tour par tour forc", // arynn : add forced turn mode + // arynn : reset all toggle options, in cases for corrupted JA2.set files (and general debugging of options) + L"Reset ALL game options", + L"Do you really want to reset?", + // arynn : a sample options screen options header, just text, not a real option + L"--DEBUG OPTIONS--", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Retain Debug Options in Rel", + // arynn : a sample option which affects options screen listing only + L"DEBUG Render Option group", + // arynn : a sample DEBUG build option, this will draw slash-rects through current mouse region "hot spots" + L"Render Mouse Regions", + // arynn : a sample options screen options divider, just text, not a real option + L"-----------------", + + L"Option044", // arynn : note : everything south of here (should) only ever show in debug.. i doubt translating would prove useful + L"Option045", + L"Option046", + L"Option047", + L"Option048", + L"Option049", + L"Option050", + L"Option051", + L"Option052", + L"Option053", + L"Option054", + L"Option055", + L"Option056", + L"Option057", + L"Option058", + L"Option059", + L"Option060", + L"Option061", + L"Option062", + L"Option063", + L"Option064", + L"Option065", + L"Option066", + L"Option067", + L"Option068", + L"Option069", + L"Option070", + L"Option071", + L"Option072", + L"Option073", + L"Option074", + L"Option075", + L"Option076", + L"Option077", + L"Option078", + L"Option079", + L"Option080", + L"Option081", + L"Option082", + L"Option083", + L"Option084", + L"Option085", + L"Option086", + L"Option087", + L"Option088", + L"Option089", + L"Option090", + L"Option091", + L"Option092", + L"Option093", + L"Option094", + L"Option095", + L"Option096", + L"Option097", + L"Option098", + L"Option099", + L"Option100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"THE_LAST_OPTION", + }; //This is the help text associated with the above toggles. @@ -3775,6 +3850,81 @@ STR16 zOptionsScreenHelpText[] = L"Si activ, le jeu restreint l'utilisation du processeur.", L"Si activ, l'EDB sera affich pour les armes et objets.", L"Si cette option est active et que des ennemis sont prsents, \nle mode tour par tour est actif tant qu'il reste \ndes ennemis dans le secteur (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // arynn : add forced turn mode + // arynn : immediate effect option that fixes corrupt ja2.set keeping of toggle options + L"Click me to fix corrupt game settings", + L"Click me to fix corrupt game settings", + // arynn : a sample options screen options header, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Allows debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file", + // arynn : a sample option which affects options screen listing only + L"Toggle to display debugging render options", + // arynn : a sample DEBUG build option + L"Attempts to display slash-rects around mouse regions", + // arynn : a sample options screen options divider, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", + // text past this point is for debugging, translating would doubtfully prove usefull + L"044", + L"045", + L"046", + L"047", + L"048", + L"049", + L"050", + L"051", + L"052", + L"053", + L"054", + L"055", + L"056", + L"057", + L"058", + L"059", + L"060", + L"061", + L"062", + L"063", + L"064", + L"065", + L"066", + L"067", + L"068", + L"069", + L"070", + L"071", + L"072", + L"073", + L"074", + L"075", + L"076", + L"077", + L"078", + L"079", + L"080", + L"081", + L"082", + L"083", + L"084", + L"085", + L"086", + L"087", + L"088", + L"089", + L"090", + L"091", + L"092", + L"093", + L"094", + L"095", + L"096", + L"097", + L"098", + L"099", + L"100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"TOPTION_LAST_OPTION", + }; diff --git a/Utils/_GermanText.cpp b/Utils/_GermanText.cpp index 89fd15ffc..69074ca5a 100644 --- a/Utils/_GermanText.cpp +++ b/Utils/_GermanText.cpp @@ -3498,6 +3498,81 @@ STR16 zOptionsToggleText[] = L"Niedrige CPU Belastung", L"Erweiterte Gegenstandsinfo (EDB)", L"Erzwungender Runden-Modus", + // arynn : reset all toggle options, in cases for corrupted JA2.set files (and general debugging of options) + L"Reset ALL game options", + L"Do you really want to reset?", + // arynn : a sample options screen options header, just text, not a real option + L"--DEBUG OPTIONS--", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Retain Debug Options in Rel", + // arynn : a sample option which affects options screen listing only + L"DEBUG Render Option group", + // arynn : a sample DEBUG build option, this will draw slash-rects through current mouse region "hot spots" + L"Render Mouse Regions", + // arynn : a sample options screen options divider, just text, not a real option + L"-----------------", + + L"Option044", // arynn : note : everything south of here (should) only ever show in debug.. i doubt translating would prove useful + L"Option045", + L"Option046", + L"Option047", + L"Option048", + L"Option049", + L"Option050", + L"Option051", + L"Option052", + L"Option053", + L"Option054", + L"Option055", + L"Option056", + L"Option057", + L"Option058", + L"Option059", + L"Option060", + L"Option061", + L"Option062", + L"Option063", + L"Option064", + L"Option065", + L"Option066", + L"Option067", + L"Option068", + L"Option069", + L"Option070", + L"Option071", + L"Option072", + L"Option073", + L"Option074", + L"Option075", + L"Option076", + L"Option077", + L"Option078", + L"Option079", + L"Option080", + L"Option081", + L"Option082", + L"Option083", + L"Option084", + L"Option085", + L"Option086", + L"Option087", + L"Option088", + L"Option089", + L"Option090", + L"Option091", + L"Option092", + L"Option093", + L"Option094", + L"Option095", + L"Option096", + L"Option097", + L"Option098", + L"Option099", + L"Option100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"THE_LAST_OPTION", + }; //This is the help text associated with the above toggles. @@ -3580,6 +3655,81 @@ STR16 zOptionsScreenHelpText[] = L"Wenn diese Funktion aktiviert ist, wird das Spiel mit viel geringerer CPU Belastung laufen.", L"Wenn diese Funktion aktiviert ist, werden erweiterte Beschreibungen zu den Waffen und Gegenstnden angezeigt.", L"Wenn diese Funktion aktiviert ist und noch Gegner im Sektor sind, bleibt das Spiel im Runden-Mods bis alle Feinde tot sind (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", + // arynn : immediate effect option that fixes corrupt ja2.set keeping of toggle options + L"Click me to fix corrupt game settings", + L"Click me to fix corrupt game settings", + // arynn : a sample options screen options header, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Allows debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file", + // arynn : a sample option which affects options screen listing only + L"Toggle to display debugging render options", + // arynn : a sample DEBUG build option + L"Attempts to display slash-rects around mouse regions", + // arynn : a sample options screen options divider, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", + // text past this point is for debugging, translating would doubtfully prove usefull + L"044", + L"045", + L"046", + L"047", + L"048", + L"049", + L"050", + L"051", + L"052", + L"053", + L"054", + L"055", + L"056", + L"057", + L"058", + L"059", + L"060", + L"061", + L"062", + L"063", + L"064", + L"065", + L"066", + L"067", + L"068", + L"069", + L"070", + L"071", + L"072", + L"073", + L"074", + L"075", + L"076", + L"077", + L"078", + L"079", + L"080", + L"081", + L"082", + L"083", + L"084", + L"085", + L"086", + L"087", + L"088", + L"089", + L"090", + L"091", + L"092", + L"093", + L"094", + L"095", + L"096", + L"097", + L"098", + L"099", + L"100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"TOPTION_LAST_OPTION", + }; STR16 gzGIOScreenText[] = diff --git a/Utils/_ItalianText.cpp b/Utils/_ItalianText.cpp index debed2a62..9a746cde4 100644 --- a/Utils/_ItalianText.cpp +++ b/Utils/_ItalianText.cpp @@ -3672,6 +3672,81 @@ STR16 zOptionsToggleText[] = L"Low CPU usage", L"Enhanced Description Box", L"Forced Turn Mode", // arynn : add forced turn mode + // arynn : reset all toggle options, in cases for corrupted JA2.set files (and general debugging of options) + L"Reset ALL game options", + L"Do you really want to reset?", + // arynn : a sample options screen options header, just text, not a real option + L"--DEBUG OPTIONS--", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Retain Debug Options in Rel", + // arynn : a sample option which affects options screen listing only + L"DEBUG Render Option group", + // arynn : a sample DEBUG build option, this will draw slash-rects through current mouse region "hot spots" + L"Render Mouse Regions", + // arynn : a sample options screen options divider, just text, not a real option + L"-----------------", + + L"Option044", // arynn : note : everything south of here (should) only ever show in debug.. i doubt translating would prove useful + L"Option045", + L"Option046", + L"Option047", + L"Option048", + L"Option049", + L"Option050", + L"Option051", + L"Option052", + L"Option053", + L"Option054", + L"Option055", + L"Option056", + L"Option057", + L"Option058", + L"Option059", + L"Option060", + L"Option061", + L"Option062", + L"Option063", + L"Option064", + L"Option065", + L"Option066", + L"Option067", + L"Option068", + L"Option069", + L"Option070", + L"Option071", + L"Option072", + L"Option073", + L"Option074", + L"Option075", + L"Option076", + L"Option077", + L"Option078", + L"Option079", + L"Option080", + L"Option081", + L"Option082", + L"Option083", + L"Option084", + L"Option085", + L"Option086", + L"Option087", + L"Option088", + L"Option089", + L"Option090", + L"Option091", + L"Option092", + L"Option093", + L"Option094", + L"Option095", + L"Option096", + L"Option097", + L"Option098", + L"Option099", + L"Option100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"THE_LAST_OPTION", + }; //This is the help text associated with the above toggles. @@ -3754,6 +3829,81 @@ STR16 zOptionsScreenHelpText[] = L"When ON, game will run with much lower CPU usage.", L"When ON, enhanced descriptions will be shown for items and weapons.", L"When ON and enemy present, Turn Base mode persists untill sector is free (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // arynn : add forced turn mode + // arynn : immediate effect option that fixes corrupt ja2.set keeping of toggle options + L"Click me to fix corrupt game settings", + L"Click me to fix corrupt game settings", + // arynn : a sample options screen options header, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Allows debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file", + // arynn : a sample option which affects options screen listing only + L"Toggle to display debugging render options", + // arynn : a sample DEBUG build option + L"Attempts to display slash-rects around mouse regions", + // arynn : a sample options screen options divider, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", + // text past this point is for debugging, translating would doubtfully prove usefull + L"044", + L"045", + L"046", + L"047", + L"048", + L"049", + L"050", + L"051", + L"052", + L"053", + L"054", + L"055", + L"056", + L"057", + L"058", + L"059", + L"060", + L"061", + L"062", + L"063", + L"064", + L"065", + L"066", + L"067", + L"068", + L"069", + L"070", + L"071", + L"072", + L"073", + L"074", + L"075", + L"076", + L"077", + L"078", + L"079", + L"080", + L"081", + L"082", + L"083", + L"084", + L"085", + L"086", + L"087", + L"088", + L"089", + L"090", + L"091", + L"092", + L"093", + L"094", + L"095", + L"096", + L"097", + L"098", + L"099", + L"100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"TOPTION_LAST_OPTION", + }; diff --git a/Utils/_PolishText.cpp b/Utils/_PolishText.cpp index 6a619f952..8798b662f 100644 --- a/Utils/_PolishText.cpp +++ b/Utils/_PolishText.cpp @@ -3686,6 +3686,81 @@ STR16 zOptionsToggleText[] = L"Niskie obcienie procesora", L"Rozszerzone Okno Opisu (EDB)", //Enhanced Description Box L"Wymu tryb turowy", // arynn : add forced turn mode + // arynn : reset all toggle options, in cases for corrupted JA2.set files (and general debugging of options) + L"Reset ALL game options", + L"Do you really want to reset?", + // arynn : a sample options screen options header, just text, not a real option + L"--DEBUG OPTIONS--", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Retain Debug Options in Rel", + // arynn : a sample option which affects options screen listing only + L"DEBUG Render Option group", + // arynn : a sample DEBUG build option, this will draw slash-rects through current mouse region "hot spots" + L"Render Mouse Regions", + // arynn : a sample options screen options divider, just text, not a real option + L"-----------------", + + L"Option044", // arynn : note : everything south of here (should) only ever show in debug.. i doubt translating would prove useful + L"Option045", + L"Option046", + L"Option047", + L"Option048", + L"Option049", + L"Option050", + L"Option051", + L"Option052", + L"Option053", + L"Option054", + L"Option055", + L"Option056", + L"Option057", + L"Option058", + L"Option059", + L"Option060", + L"Option061", + L"Option062", + L"Option063", + L"Option064", + L"Option065", + L"Option066", + L"Option067", + L"Option068", + L"Option069", + L"Option070", + L"Option071", + L"Option072", + L"Option073", + L"Option074", + L"Option075", + L"Option076", + L"Option077", + L"Option078", + L"Option079", + L"Option080", + L"Option081", + L"Option082", + L"Option083", + L"Option084", + L"Option085", + L"Option086", + L"Option087", + L"Option088", + L"Option089", + L"Option090", + L"Option091", + L"Option092", + L"Option093", + L"Option094", + L"Option095", + L"Option096", + L"Option097", + L"Option098", + L"Option099", + L"Option100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"THE_LAST_OPTION", + }; //This is the help text associated with the above toggles. @@ -3768,6 +3843,81 @@ STR16 zOptionsScreenHelpText[] = L"Jeli WCZONE, gra bdzie obciaa procesor w mniejszym stopniu.", L"Jeli WCZONE, rozszerzone opisy bd pokazane dla przedmiotw i broni.", L"Jeli WCZONE i wrg jest obecny, \ntryb turowy jest wczony, \ndopki sektor nie zostanie oczyszczony (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // arynn : add forced turn mode + // arynn : immediate effect option that fixes corrupt ja2.set keeping of toggle options + L"Click me to fix corrupt game settings", + L"Click me to fix corrupt game settings", + // arynn : a sample options screen options header, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Allows debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file", + // arynn : a sample option which affects options screen listing only + L"Toggle to display debugging render options", + // arynn : a sample DEBUG build option + L"Attempts to display slash-rects around mouse regions", + // arynn : a sample options screen options divider, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", + // text past this point is for debugging, translating would doubtfully prove usefull + L"044", + L"045", + L"046", + L"047", + L"048", + L"049", + L"050", + L"051", + L"052", + L"053", + L"054", + L"055", + L"056", + L"057", + L"058", + L"059", + L"060", + L"061", + L"062", + L"063", + L"064", + L"065", + L"066", + L"067", + L"068", + L"069", + L"070", + L"071", + L"072", + L"073", + L"074", + L"075", + L"076", + L"077", + L"078", + L"079", + L"080", + L"081", + L"082", + L"083", + L"084", + L"085", + L"086", + L"087", + L"088", + L"089", + L"090", + L"091", + L"092", + L"093", + L"094", + L"095", + L"096", + L"097", + L"098", + L"099", + L"100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"TOPTION_LAST_OPTION", + }; STR16 gzGIOScreenText[] = diff --git a/Utils/_RussianText.cpp b/Utils/_RussianText.cpp index 1f706ec53..18f8b425b 100644 --- a/Utils/_RussianText.cpp +++ b/Utils/_RussianText.cpp @@ -3687,6 +3687,81 @@ STR16 zOptionsToggleText[] = L" ", L" ", //Enhanced Description Box L" ", // arynn : add Forced Turn Mode + // arynn : reset all toggle options, in cases for corrupted JA2.set files (and general debugging of options) + L"Reset ALL game options", + L"Do you really want to reset?", + // arynn : a sample options screen options header, just text, not a real option + L"--DEBUG OPTIONS--", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Retain Debug Options in Rel", + // arynn : a sample option which affects options screen listing only + L"DEBUG Render Option group", + // arynn : a sample DEBUG build option, this will draw slash-rects through current mouse region "hot spots" + L"Render Mouse Regions", + // arynn : a sample options screen options divider, just text, not a real option + L"-----------------", + + L"Option044", // arynn : note : everything south of here (should) only ever show in debug.. i doubt translating would prove useful + L"Option045", + L"Option046", + L"Option047", + L"Option048", + L"Option049", + L"Option050", + L"Option051", + L"Option052", + L"Option053", + L"Option054", + L"Option055", + L"Option056", + L"Option057", + L"Option058", + L"Option059", + L"Option060", + L"Option061", + L"Option062", + L"Option063", + L"Option064", + L"Option065", + L"Option066", + L"Option067", + L"Option068", + L"Option069", + L"Option070", + L"Option071", + L"Option072", + L"Option073", + L"Option074", + L"Option075", + L"Option076", + L"Option077", + L"Option078", + L"Option079", + L"Option080", + L"Option081", + L"Option082", + L"Option083", + L"Option084", + L"Option085", + L"Option086", + L"Option087", + L"Option088", + L"Option089", + L"Option090", + L"Option091", + L"Option092", + L"Option093", + L"Option094", + L"Option095", + L"Option096", + L"Option097", + L"Option098", + L"Option099", + L"Option100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"THE_LAST_OPTION", + }; //This is the help text associated with the above toggles. @@ -3769,6 +3844,81 @@ STR16 zOptionsScreenHelpText[] = L" , \n .", L" , \n .", //EDB description L" , \n \n (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", //When ON and enemy present, Turn Base mode persists untill sector is free (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T). // arynn : add forced turn mode + // arynn : immediate effect option that fixes corrupt ja2.set keeping of toggle options + L"Click me to fix corrupt game settings", + L"Click me to fix corrupt game settings", + // arynn : a sample options screen options header, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Allows debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file", + // arynn : a sample option which affects options screen listing only + L"Toggle to display debugging render options", + // arynn : a sample DEBUG build option + L"Attempts to display slash-rects around mouse regions", + // arynn : a sample options screen options divider, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", + // text past this point is for debugging, translating would doubtfully prove usefull + L"044", + L"045", + L"046", + L"047", + L"048", + L"049", + L"050", + L"051", + L"052", + L"053", + L"054", + L"055", + L"056", + L"057", + L"058", + L"059", + L"060", + L"061", + L"062", + L"063", + L"064", + L"065", + L"066", + L"067", + L"068", + L"069", + L"070", + L"071", + L"072", + L"073", + L"074", + L"075", + L"076", + L"077", + L"078", + L"079", + L"080", + L"081", + L"082", + L"083", + L"084", + L"085", + L"086", + L"087", + L"088", + L"089", + L"090", + L"091", + L"092", + L"093", + L"094", + L"095", + L"096", + L"097", + L"098", + L"099", + L"100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"TOPTION_LAST_OPTION", + }; diff --git a/Utils/_TaiwaneseText.cpp b/Utils/_TaiwaneseText.cpp index b2f903915..9f65b00a3 100644 --- a/Utils/_TaiwaneseText.cpp +++ b/Utils/_TaiwaneseText.cpp @@ -3691,6 +3691,81 @@ STR16 zOptionsToggleText[] = L"Low CPU usage", L"Enhanced Description Box", L"Forced Turn Mode", // arynn : add forced turn mode + // arynn : reset all toggle options, in cases for corrupted JA2.set files (and general debugging of options) + L"Reset ALL game options", + L"Do you really want to reset?", + // arynn : a sample options screen options header, just text, not a real option + L"--DEBUG OPTIONS--", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Retain Debug Options in Rel", + // arynn : a sample option which affects options screen listing only + L"DEBUG Render Option group", + // arynn : a sample DEBUG build option, this will draw slash-rects through current mouse region "hot spots" + L"Render Mouse Regions", + // arynn : a sample options screen options divider, just text, not a real option + L"-----------------", + + L"Option044", // arynn : note : everything south of here (should) only ever show in debug.. i doubt translating would prove useful + L"Option045", + L"Option046", + L"Option047", + L"Option048", + L"Option049", + L"Option050", + L"Option051", + L"Option052", + L"Option053", + L"Option054", + L"Option055", + L"Option056", + L"Option057", + L"Option058", + L"Option059", + L"Option060", + L"Option061", + L"Option062", + L"Option063", + L"Option064", + L"Option065", + L"Option066", + L"Option067", + L"Option068", + L"Option069", + L"Option070", + L"Option071", + L"Option072", + L"Option073", + L"Option074", + L"Option075", + L"Option076", + L"Option077", + L"Option078", + L"Option079", + L"Option080", + L"Option081", + L"Option082", + L"Option083", + L"Option084", + L"Option085", + L"Option086", + L"Option087", + L"Option088", + L"Option089", + L"Option090", + L"Option091", + L"Option092", + L"Option093", + L"Option094", + L"Option095", + L"Option096", + L"Option097", + L"Option098", + L"Option099", + L"Option100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"THE_LAST_OPTION", + }; //This is the help text associated with the above toggles. @@ -3773,6 +3848,81 @@ STR16 zOptionsScreenHelpText[] = L"When ON, game will run with much lower CPU usage.", L"When ON, enhanced descriptions will be shown for items and weapons.", L"When ON and enemy present, Turn Base mode persists untill sector is free (|C|T|R|L+|S|H|I|F|T+|A|L|T+|T).", // arynn : add forced turn mode + // arynn : immediate effect option that fixes corrupt ja2.set keeping of toggle options + L"Click me to fix corrupt game settings", + L"Click me to fix corrupt game settings", + // arynn : a sample options screen options header, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_HEADER", + // arynn : allow debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file + L"Allows debug options that were set in debug.exe to continue in a rel.exe that shares same JA2.set file", + // arynn : a sample option which affects options screen listing only + L"Toggle to display debugging render options", + // arynn : a sample DEBUG build option + L"Attempts to display slash-rects around mouse regions", + // arynn : a sample options screen options divider, this pop up help text never render (well as of yet) + L"(text not rendered)TOPTION_DEBUG_MODE_OPTIONS_END", + // text past this point is for debugging, translating would doubtfully prove usefull + L"044", + L"045", + L"046", + L"047", + L"048", + L"049", + L"050", + L"051", + L"052", + L"053", + L"054", + L"055", + L"056", + L"057", + L"058", + L"059", + L"060", + L"061", + L"062", + L"063", + L"064", + L"065", + L"066", + L"067", + L"068", + L"069", + L"070", + L"071", + L"072", + L"073", + L"074", + L"075", + L"076", + L"077", + L"078", + L"079", + L"080", + L"081", + L"082", + L"083", + L"084", + L"085", + L"086", + L"087", + L"088", + L"089", + L"090", + L"091", + L"092", + L"093", + L"094", + L"095", + L"096", + L"097", + L"098", + L"099", + L"100", + + // arynn : this is THE LAST option that exists (debug the options screen, doesnt do anything, except exist) + L"TOPTION_LAST_OPTION", + }; diff --git a/builddefines.h b/builddefines.h index e69f9c483..798e81569 100644 --- a/builddefines.h +++ b/builddefines.h @@ -22,7 +22,7 @@ #define FORCE_ASSERTS_ON -#define BLOOD_N_GORE_ENABLED +//#define BLOOD_N_GORE_ENABLED // arynn : del_me : defunct, german build's differed with blood and gore option.. it got universalized //#ifdef _DEBUG // #ifndef JA2TESTVERSION diff --git a/gameloop.cpp b/gameloop.cpp index 21599f48b..f36f78167 100644 --- a/gameloop.cpp +++ b/gameloop.cpp @@ -37,6 +37,9 @@ #include "Rain.h" // end rain +// arynn : render mouse regions +#include "line.h" + //network headers #include "connect.h" @@ -355,6 +358,41 @@ void GameLoop(void) // rain RenderRain(); + //DEBUG MODE : DEBUG RENDER ENTRY : point to drop in debugging render code + if( (gGameSettings.fOptions[TOPTION_RETAIN_DEBUG_OPTIONS_IN_RELEASE]) || (JA2BETAVERSION_FLAG)) + { + // arynn : render mouse regions + if(gGameSettings.fOptions[TOPTION_RENDER_MOUSE_REGIONS]) + { + MOUSE_REGION *curr; + UINT32 uiDestPitchBYTES; + UINT8 *pDestBuf; + + curr = get_first_entry_in_MSYS_RegList(); + + while((curr != NULL) ) + { + pDestBuf = LockVideoSurface( FRAME_BUFFER, &uiDestPitchBYTES ); + SetClippingRegionAndImageWidth( uiDestPitchBYTES, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT ); + LineDraw( TRUE, curr->RegionTopLeftX, curr->RegionTopLeftY, + curr->RegionBottomRightX, curr->RegionBottomRightY, + Get16BPPColor( FROMRGB( 200, 200, 200 )), pDestBuf); + RectangleDraw( TRUE, curr->RegionTopLeftX, curr->RegionTopLeftY, + curr->RegionBottomRightX, curr->RegionBottomRightY, + Get16BPPColor( FROMRGB( 200, 200, 200 )), pDestBuf); + curr = get_next_entry_in_MSYS_RegList(curr); + UnLockVideoSurface( FRAME_BUFFER ); + } + } + } + else + { + //when coming from a recent debug.exe to a rel.exe, and option to carry over debug functions is off, disable debug mode options + gGameSettings.fOptions[TOPTION_RENDER_MOUSE_REGIONS] = FALSE; + } + + + if( gfSkipFrame ) gfSkipFrame = FALSE; else