--- a/src/GameSrc/cutsloop.c +++ b/src/GameSrc/cutsloop.c @@ -292,11 +292,38 @@ +#ifdef __ANDROID__ +// The intro (cutscene 0) ships in one file per language - localized +// voice-over - each holding the same resource id (cutscene_anims[0]), so +// opening the current language's file instead is all it takes. The death +// and ending cutscenes only have one version. +static char *intro_files_by_language[3] = +{ + "res/data/svgaintr.res", // English + "res/data/svfrintr.res", // French + "res/data/svgeintr.res" // German +}; + +static int open_cutscene_file(int id) +{ + if (id == 0 && which_lang > 0 && which_lang < 3) + { + int handle = ResOpenFile(intro_files_by_language[(int)which_lang]); + if (handle > 0) + return handle; + // Not installed for this language - fall back to English below. + } + return ResOpenFile(cutscene_files[id]); +} +#else +#define open_cutscene_file(id) ResOpenFile(cutscene_files[id]) +#endif + short play_cutscene(int id, bool show_credits) { MacTuneKillCurrentTheme(); - cutscene_filehandle = ResOpenFile(cutscene_files[id]); + cutscene_filehandle = open_cutscene_file(id); if (cutscene_filehandle <= 0) { // If we failed to play the cutscene, go to setup / credits. _new_mode = SETUP_LOOP;