Ticket #3860: tinsel-multiflags.patch
File tinsel-multiflags.patch, 13.7 KB (added by , 16 years ago) |
---|
-
engines/tinsel/config.h
30 30 31 31 namespace Tinsel { 32 32 33 // None of these defined -> 1 language, in ENGLISH.TXT34 //#define USE_5FLAGS 1 // All 5 flags35 //#define USE_4FLAGS 1 // French, German, Italian, Spanish36 //#define USE_3FLAGS 1 // French, German, Spanish37 38 33 // The Hebrew version appears to the software as being English 39 34 // but it needs to have subtitles on... 40 35 //#define HEBREW 1 -
engines/tinsel/tinsel.cpp
697 697 698 698 // Set language - we'll be clever here and use the ScummVM language setting 699 699 language = TXT_ENGLISH; 700 switch (getLanguage()) { 700 Common::Language lang = getLanguage(); 701 if (lang == Common::UNK_LANG && ConfMan.hasKey("language")) 702 lang = Common::parseLanguage(ConfMan.get("language")); // For multi-lingual versions, fall back to user settings 703 switch (lang) { 701 704 case Common::FR_FRA: 702 705 language = TXT_FRENCH; 703 706 break; -
engines/tinsel/config.cpp
24 24 * This file contains configuration functionality 25 25 */ 26 26 27 //#define USE_3FLAGS 128 29 27 #include "tinsel/config.h" 30 28 #include "tinsel/dw.h" 31 29 #include "tinsel/sound.h" … … 93 91 //bSwapButtons = ConfMan.getBool("swap_buttons") == 1 ? true : false; 94 92 //ConfigData.language = language; // not necessary, as language has been set in the launcher 95 93 //ConfigData.bAmerica = bAmerica; // EN_USA / EN_GRB 96 97 // The flags here control how many country flags are displayed in one of the option dialogs.98 #if defined(USE_3FLAGS) || defined(USE_4FLAGS) || defined(USE_5FLAGS)99 language = ConfigData.language;100 #ifdef USE_3FLAGS101 if (language == TXT_ENGLISH || language == TXT_ITALIAN) {102 language = TXT_GERMAN;103 bSubtitles = true;104 }105 #endif106 #ifdef USE_4FLAGS107 if (language == TXT_ENGLISH) {108 language = TXT_GERMAN;109 bSubtitles = true;110 }111 #endif112 #else113 language = TXT_ENGLISH;114 #endif115 94 } 116 95 117 96 bool isJapanMode() { -
engines/tinsel/inventory.cpp
29 29 * And there's still a bit of tidying and commenting to do yet. 30 30 */ 31 31 32 //#define USE_3FLAGS 133 34 32 #include "tinsel/actors.h" 35 33 #include "tinsel/anim.h" 36 34 #include "tinsel/background.h" … … 370 368 NOFUNC, SAVEGAME, LOADGAME, IQUITGAME, CLOSEWIN, 371 369 OPENLOAD, OPENSAVE, OPENREST, 372 370 OPENSOUND, OPENCONT, 373 #ifndef JAPAN374 371 OPENSUBT, 375 #endif376 372 OPENQUIT, 377 373 INITGAME, MIDIVOL, 378 374 CLANG, RLANG … … 402 398 #define SIX_RESTART_OPTION 2 403 399 #define SIX_SOUND_OPTION 3 404 400 #define SIX_CONTROL_OPTION 4 405 #ifndef JAPAN406 401 #define SIX_SUBTITLES_OPTION 5 407 #endif408 402 #define SIX_QUIT_OPTION 6 409 403 #define SIX_RESUME_OPTION 7 410 404 #define SIX_LOAD_HEADING 8 … … 568 562 569 563 570 564 /*-------------------------------------------------------------*\ 571 | This is the subtitles 'menu'. 565 | This is the subtitles 'menu'. | 572 566 \*-------------------------------------------------------------*/ 573 567 574 #ifndef JAPAN575 568 CONFBOX subtitlesBox[] = { 576 569 577 #ifdef USE_5FLAGS 570 { SLIDER, NOFUNC, NULL, SIX_TSPEED_SLIDER, 142, 20, 100, 2, &speedText, 0 }, 571 { TOGGLE, NOFUNC, NULL, SIX_STITLE_TOGGLE, 142, 20+40, 23, 19, &bSubtitles, 0 }, 572 573 }; 574 575 CONFBOX subtitlesBox3Flags[] = { 576 577 { FRGROUP, NOFUNC, NULL, USE_POINTER, 15, 118, 56, 32, NULL, FIX_FR }, 578 { FRGROUP, NOFUNC, NULL, USE_POINTER, 85, 118, 56, 32, NULL, FIX_GR }, 579 { FRGROUP, NOFUNC, NULL, USE_POINTER, 155, 118, 56, 32, NULL, FIX_SP }, 580 581 { SLIDER, NOFUNC, NULL, SIX_TSPEED_SLIDER, 142, 20, 100, 2, &speedText, 0 }, 582 { TOGGLE, NOFUNC, NULL, SIX_STITLE_TOGGLE, 142, 20+40, 23, 19, &bSubtitles, 0 }, 583 584 { ARSGBUT, CLANG, NULL, USE_POINTER, 230, 110, 23, 19, NULL, IX_TICK1 }, 585 { AAGBUT, RLANG, NULL, USE_POINTER, 230, 140, 23, 19, NULL, IX_CROSS1 } 586 587 }; 588 589 CONFBOX subtitlesBox4Flags[] = { 590 591 { FRGROUP, NOFUNC, NULL, USE_POINTER, 20, 100, 56, 32, NULL, FIX_FR }, 592 { FRGROUP, NOFUNC, NULL, USE_POINTER, 108, 100, 56, 32, NULL, FIX_GR }, 593 { FRGROUP, NOFUNC, NULL, USE_POINTER, 64, 137, 56, 32, NULL, FIX_IT }, 594 { FRGROUP, NOFUNC, NULL, USE_POINTER, 152, 137, 56, 32, NULL, FIX_SP }, 595 596 { SLIDER, NOFUNC, NULL, SIX_TSPEED_SLIDER, 142, 20, 100, 2, &speedText, 0 }, 597 { TOGGLE, NOFUNC, NULL, SIX_STITLE_TOGGLE, 142, 20+40, 23, 19, &bSubtitles, 0 }, 598 599 { ARSGBUT, CLANG, NULL, USE_POINTER, 230, 110, 23, 19, NULL, IX_TICK1 }, 600 { AAGBUT, RLANG, NULL, USE_POINTER, 230, 140, 23, 19, NULL, IX_CROSS1 } 601 602 }; 603 604 CONFBOX subtitlesBox5Flags[] = { 605 578 606 { FRGROUP, NOFUNC, NULL, USE_POINTER, 15, 100, 56, 32, NULL, FIX_UK }, 579 607 { FRGROUP, NOFUNC, NULL, USE_POINTER, 85, 100, 56, 32, NULL, FIX_FR }, 580 608 { FRGROUP, NOFUNC, NULL, USE_POINTER, 155, 100, 56, 32, NULL, FIX_GR }, 581 609 { FRGROUP, NOFUNC, NULL, USE_POINTER, 50, 137, 56, 32, NULL, FIX_IT }, 582 610 { FRGROUP, NOFUNC, NULL, USE_POINTER, 120, 137, 56, 32, NULL, FIX_SP }, 583 #endif584 #ifdef USE_4FLAGS585 { FRGROUP, NOFUNC, NULL, USE_POINTER, 20, 100, 56, 32, NULL, FIX_FR },586 { FRGROUP, NOFUNC, NULL, USE_POINTER, 108, 100, 56, 32, NULL, FIX_GR },587 { FRGROUP, NOFUNC, NULL, USE_POINTER, 64, 137, 56, 32, NULL, FIX_IT },588 { FRGROUP, NOFUNC, NULL, USE_POINTER, 152, 137, 56, 32, NULL, FIX_SP },589 #endif590 #ifdef USE_3FLAGS591 { FRGROUP, NOFUNC, NULL, USE_POINTER, 15, 118, 56, 32, NULL, FIX_FR },592 { FRGROUP, NOFUNC, NULL, USE_POINTER, 85, 118, 56, 32, NULL, FIX_GR },593 { FRGROUP, NOFUNC, NULL, USE_POINTER, 155, 118, 56, 32, NULL, FIX_SP },594 #endif595 611 596 612 { SLIDER, NOFUNC, NULL, SIX_TSPEED_SLIDER, 142, 20, 100, 2, &speedText, 0 }, 597 613 { TOGGLE, NOFUNC, NULL, SIX_STITLE_TOGGLE, 142, 20+40, 23, 19, &bSubtitles, 0 }, 598 614 599 #if defined(USE_3FLAGS) || defined(USE_4FLAGS) || defined(USE_5FLAGS)600 615 { ARSGBUT, CLANG, NULL, USE_POINTER, 230, 110, 23, 19, NULL, IX_TICK1 }, 601 616 { AAGBUT, RLANG, NULL, USE_POINTER, 230, 140, 23, 19, NULL, IX_CROSS1 } 602 #endif603 617 604 618 }; 605 #endif606 619 607 620 608 621 /*-------------------------------------------------------------*\ … … 610 623 \*-------------------------------------------------------------*/ 611 624 612 625 CONFBOX quitBox[] = { 613 #ifdef JAPAN626 #ifdef g 614 627 { AAGBUT, IQUITGAME, NULL, USE_POINTER,70, 44, 23, 19, NULL, IX_TICK1 }, 615 628 { AAGBUT, CLOSEWIN, NULL, USE_POINTER, 30, 44, 23, 19, NULL, IX_CROSS1 } 616 629 #else … … 652 665 #else 653 666 CONFINIT ciControl = { 10, 5, 20, 16, false, controlBox, ARRAYSIZE(controlBox), NO_HEADING }; 654 667 #endif 655 #ifndef JAPAN 656 #if defined(USE_3FLAGS) || defined(USE_4FLAGS) || defined(USE_5FLAGS) 657 CONFINIT ciSubtitles = { 10, 6, 20, 16, false, subtitlesBox, ARRAYSIZE(subtitlesBox), NO_HEADING }; 658 #else 668 659 669 CONFINIT ciSubtitles = { 10, 3, 20, 16, false, subtitlesBox, ARRAYSIZE(subtitlesBox), NO_HEADING }; 660 #endif 661 #endif 670 662 671 CONFINIT ciQuit = { 4, 2, 98, 53, false, quitBox, ARRAYSIZE(quitBox), SIX_QUIT_HEADING }; 663 672 664 673 CONFINIT ciTopWin = { 6, 5, 72, 23, false, topwinBox, 0, NO_HEADING }; … … 762 771 763 772 764 773 765 #ifndef JAPAN766 774 bool LanguageChange(void) { 767 775 LANGUAGE nLang; 768 776 769 #ifdef USE_3FLAGS 770 // VERY quick dodgy bodge771 if (cd.selBox == 0)772 nLang = TXT_FRENCH; // = 1773 else if (cd.selBox == 1)774 nLang = TXT_GERMAN; // = 2775 else776 nLang = TXT_SPANISH; // = 4777 #elif defined(USE_4FLAGS) 778 nLang = (LANGUAGE)(cd.selBox + 1);779 #else 780 nLang = (LANGUAGE)cd.selBox;781 #endif 777 if (_vm->getFeatures() & GF_USE_3FLAGS) { 778 // VERY quick dodgy bodge 779 if (cd.selBox == 0) 780 nLang = TXT_FRENCH; // = 1 781 else if (cd.selBox == 1) 782 nLang = TXT_GERMAN; // = 2 783 else 784 nLang = TXT_SPANISH; // = 4 785 } else if (_vm->getFeatures() & GF_USE_4FLAGS) { 786 nLang = (LANGUAGE)(cd.selBox + 1); 787 } else if (_vm->getFeatures() & GF_USE_5FLAGS) { 788 nLang = (LANGUAGE)cd.selBox; 789 } 782 790 783 791 if (nLang != language) { 784 792 KillInventory(); … … 788 796 } else 789 797 return false; 790 798 } 791 #endif792 799 793 800 /**************************************************************************/ 794 801 /******************** Some miscellaneous functions ************************/ … … 1212 1219 1213 1220 break; 1214 1221 1215 #if defined(USE_3FLAGS) || defined(USE_4FLAGS) || defined(USE_5FLAGS)1216 1222 case FRGROUP: 1223 assert((_vm->getFeatures() & GF_USE_3FLAGS) || (_vm->getFeatures() & GF_USE_4FLAGS) || (_vm->getFeatures() & GF_USE_5FLAGS)); 1217 1224 iconArray[HL2] = RectangleObject(BackPal(), COL_HILIGHT, cd.Box[i].w+6, cd.Box[i].h+6); 1218 1225 MultiInsertObject(GetPlayfieldList(FIELD_STATUS), iconArray[HL2]); 1219 1226 MultiSetAniXY(iconArray[HL2], … … 1222 1229 MultiSetZPosition(iconArray[HL2], Z_INV_BRECT+1); 1223 1230 1224 1231 break; 1225 #endif 1232 1226 1233 default: 1227 1234 break; 1228 1235 } … … 2124 2131 2125 2132 break; 2126 2133 2127 #if defined(USE_3FLAGS) || defined(USE_4FLAGS) || defined(USE_5FLAGS)2128 2134 case FRGROUP: 2135 assert((_vm->getFeatures() & GF_USE_3FLAGS) || (_vm->getFeatures() & GF_USE_4FLAGS) || (_vm->getFeatures() & GF_USE_5FLAGS)); 2129 2136 assert(flagFilm != 0); // Language flags not declared! 2130 2137 2131 2138 pfilm = (const FILM *)LockMem(flagFilm); … … 2139 2146 *pi += 1; 2140 2147 2141 2148 break; 2142 #endif 2149 2143 2150 case FLIP: 2144 2151 pfilm = (const FILM *)LockMem(winPartsf); 2145 2152 … … 2901 2908 SetConfGlobals(&ciSound); 2902 2909 break; 2903 2910 2904 #ifndef JAPAN2905 2911 case SUBT: 2912 if (_vm->getFeatures() & GF_USE_3FLAGS) { 2913 ciSubtitles.v = 6; 2914 ciSubtitles.Box = subtitlesBox3Flags; 2915 ciSubtitles.NumBoxes = ARRAYSIZE(subtitlesBox3Flags); 2916 } else if (_vm->getFeatures() & GF_USE_4FLAGS) { 2917 ciSubtitles.v = 6; 2918 ciSubtitles.Box = subtitlesBox4Flags; 2919 ciSubtitles.NumBoxes = ARRAYSIZE(subtitlesBox4Flags); 2920 } else if (_vm->getFeatures() & GF_USE_5FLAGS) { 2921 ciSubtitles.v = 6; 2922 ciSubtitles.Box = subtitlesBox4Flags; 2923 ciSubtitles.NumBoxes = ARRAYSIZE(subtitlesBox4Flags); 2924 } else { 2925 ciSubtitles.v = 3; 2926 ciSubtitles.Box = subtitlesBox; 2927 ciSubtitles.NumBoxes = ARRAYSIZE(subtitlesBox); 2928 } 2929 2906 2930 SetConfGlobals(&ciSubtitles); 2907 2931 break; 2908 #endif2909 2932 2910 2933 case TOPWIN: 2911 2934 SetConfGlobals(&ciTopWin); … … 2925 2948 2926 2949 if (type == SAVE || type == LOAD) 2927 2950 Select(0, false); 2928 #ifndef JAPAN2929 #if !defined(USE_3FLAGS) || !defined(USE_4FLAGS) || !defined(USE_5FLAGS)2930 2951 else if (type == SUBT) { 2931 #ifdef USE_3FLAGS 2932 // VERY quick dirty bodges2933 if (language == TXT_FRENCH)2934 Select(0, false);2935 else if (language == TXT_GERMAN)2936 Select(1, false);2937 else2938 Select(2, false);2939 #elif defined(USE_4FLAGS) 2940 Select(language-1, false);2941 #else 2942 Select(language, false);2943 #endif 2952 if (_vm->getFeatures() & GF_USE_3FLAGS) { 2953 // VERY quick dirty bodges 2954 if (language == TXT_FRENCH) 2955 Select(0, false); 2956 else if (language == TXT_GERMAN) 2957 Select(1, false); 2958 else 2959 Select(2, false); 2960 } else if (_vm->getFeatures() & GF_USE_4FLAGS) { 2961 Select(language-1, false); 2962 } else if (_vm->getFeatures() & GF_USE_5FLAGS) { 2963 Select(language, false); 2964 } 2944 2965 } 2945 #endif2946 #endif // JAPAN2947 2966 2948 2967 GetCursorXY(&curX, &curY, false); 2949 2968 InvCursor(IC_AREA, curX, curY); … … 3096 3115 KillInventory(); 3097 3116 PopUpConf(CONTROLS); 3098 3117 break; 3099 #ifndef JAPAN3100 3118 case OPENSUBT: 3101 3119 KillInventory(); 3102 3120 PopUpConf(SUBT); 3103 3121 break; 3104 #endif3105 3122 case OPENQUIT: 3106 3123 KillInventory(); 3107 3124 PopUpConf(QUIT); … … 3110 3127 KillInventory(); 3111 3128 bRestart = true; 3112 3129 break; 3113 #if defined(USE_3FLAGS) || defined(USE_4FLAGS) || defined(USE_5FLAGS)3114 3130 case CLANG: 3115 3131 if (!LanguageChange()) 3116 3132 KillInventory(); … … 3118 3134 case RLANG: 3119 3135 KillInventory(); 3120 3136 break; 3121 #endif3122 3137 default: 3123 3138 break; 3124 3139 } … … 3342 3357 3343 3358 case S_END: // End of a drag on the slider 3344 3359 AddBoxes(false); // Might change position slightly 3345 #ifndef JAPAN3346 3360 if (ino == INV_CONF && cd.Box == subtitlesBox) 3347 3361 Select(language, false); 3348 #endif3349 3362 break; 3350 3363 } 3351 3364 } … … 3778 3791 } 3779 3792 break; 3780 3793 3781 #if defined(USE_3FLAGS) || defined(USE_4FLAGS) || defined(USE_5FLAGS)3782 3794 case FRGROUP: 3795 assert((_vm->getFeatures() & GF_USE_3FLAGS) || (_vm->getFeatures() & GF_USE_4FLAGS) || (_vm->getFeatures() & GF_USE_5FLAGS)); 3783 3796 if (dbl) { 3784 3797 Select(i, false); 3785 3798 LanguageChange(); … … 3787 3800 Select(i, false); 3788 3801 } 3789 3802 break; 3790 #endif3791 3803 3792 3804 case AAGBUT: 3793 3805 case ARSGBUT: -
engines/tinsel/tinsel.h
55 55 GF_DEMO = 1 << 0, 56 56 GF_CD = 1 << 1, 57 57 GF_FLOPPY = 1 << 2, 58 GF_SCNFILES = 1 << 3 58 GF_SCNFILES = 1 << 3, 59 60 // The GF_USE_?FLAGS values specify how many country flags are displayed 61 // in the subtitles options dialog. 62 // None of these defined -> 1 language, in ENGLISH.TXT 63 GF_USE_3FLAGS = 1 << 4, // French, German, Spanish 64 GF_USE_4FLAGS = 1 << 5, // French, German, Italian, Spanish 65 GF_USE_5FLAGS = 1 << 6 // All 5 flags 59 66 }; 60 67 61 68 enum TinselEngineVersion { -
engines/tinsel/detection.cpp
130 130 TINSEL_V1, 131 131 }, 132 132 133 { // Multilingual CD with english speech and *.gra files. 134 // Note: It contains no english subtitles. 135 { 136 "dw", 137 "CD", 138 { 139 {"dw.gra", 0, "c8808ccd988d603dd35dff42013ae7fd", 781656}, 140 {"english.smp", 0, NULL, -1}, 141 {"french.txt", 0, NULL, -1}, 142 {"german.txt", 0, NULL, -1}, 143 {"italian.txt", 0, NULL, -1}, 144 {"spanish.txt", 0, NULL, -1}, 145 {NULL, 0, NULL, 0} 146 }, 147 Common::UNK_LANG, 148 Common::kPlatformPC, 149 Common::ADGF_NO_FLAGS 150 }, 151 GID_DW1, 152 0, 153 GF_CD | GF_USE_4FLAGS, 154 TINSEL_V1, 155 }, 156 133 157 { // English CD with SCN files 134 158 { 135 159 "dw",