Allow reloading individual kyradat resources with a different language. Until now, our multi-language games did not require this, but for more or less random reasons (e. g. it just isn't possible to restart the intro or the main menu after changing the language ingame). However, the Chinese MR versions require this for the font loading.
This is only one of two steps. It slightly changes the detection so that the game always "remembers" whether it is Simplified or Traditional Chinese, even when the language is set to English, German or French.
(When skipping over a scene by left-clicking, sometimes parts of the ongoing animation would remain visible on screen, e. g. some of Herman's body parts in the cave at the beginning)
(in the first cave, when trying to cross the broken bridge and falling into the river, a "cut off" Herman's head could appear on screen beside the death dialog)
The animator code is a bit different here between versions. Our code was apparently based only on DOS CD (Talkie).
Animations often run at full speed without any delays. Apparently the target hardware of that time (286/386, Amiga, Mac) would ensure sufficient slowdown. Unfortunately, comparing with DOSBox, ScummVM runs somewhat faster. I have tried to add extra delays depending on the amount of onscreen activity. I have finally gotten a result which is very similiar to DOSBox execution.
Basing this on the screen activity is not optimal. Ideally, it would be based on the orignal cpu activity. But we can hardly do that...
(regression from 6f2df10d)
The dialog text displayer functions really only handle '\n' in the Mac version. But the equivalent function to our Screen::printText() function actually handles both '\r' and '\n'.
Apparently, as I have been told, there are (still) OS'es with non-compositing window managers which may cause glitches when drawing windows over the ScummVM window, unless the engine keeps updating the screen. So, now we do that, even if there isn't any actual on-screen activity. The whole thing is a bit more tricky than it would appear at first glance, since one misplaced/untimely screen update may cause palette glitches. I have implemented a timer which is reset whenever actual on-screen activity happens. That should work around any such glitches.
Maybe the rates for the timer have to be tweaked some more. I have also added an ifdef so this could be disabled or restricted to certain platforms if required.
Mac uses '\n' instead of '\r'. I have verified from disasm that it only uses '\n'. '\r' is not used at all.
Now, I know only 2 cases where it matters and these are hard coded cases: "That snake must\nbe poisonous!" and "The flask is now filled\nwith %s water.". So I could just hard code these differently.
But the scripts might have more of these linebreaks, so it makes sense to have it accurate...
(the Chinese font code is similiar enough between the KYRA games, but with some differences (e. g. LoK has the Ascii glyphs in an extra file, MR has these in the executable; LoK has a lookup table for the two-byte glyphs etc.)