This fixes bug #6728 (crash when loading game from GMM in bull's
head scene). I am not sure the call to Logic::Engine is necessary, but
that way the same sequence of calls is done when restoring a game
from the original GUI and when restoring from GMM.
Because of the way the speech is compressed with duplicate samples
being stored with a negative size and a single value, when reading the
data with the wrong endianess we can end up with a lot of duplicate
samples which biased the result with the way the old heuristic was
coded. Hopefully this change to skip duplicate samples will make it
more robust.
Because the data is compressed (a repeated sample is coded as a
negative length followed by the value), when the length is read with
the wrong endianess we get completely wrong data. So to get the BE
data we cannot just read them assuming LE and byteswap afterward.
Each engine now only has to provide a single configure.engine file
adding the engine into the configure script, which then produces the
required other files automatically.
This is the third and final commit enabling fully pluggable engines.
Now providing an engine folder contains a configure.engine, engine.mk
and engine-plugin.h file, it will be picked up automatically by the
configure script.
This is the second part of allowing engines to be added dynamically.
Each folder in engines/ which must contain a file named "engine.mk"
containing the make definitions for that engine.
This is the first part of allowing engines to be added dynamically.
They are placed into a folder in engines/ which must contain a file
named "configure.engine" to add the engine, which is pulled into the
top level configure script automatically.
This allows to keep the engines to specfiy the files for translation close to
the engine sources itself.
Thanks to criezy for his suggestion on this approach.
This affects the Console / debugger classes of multiple engines.
An alternative solution would have been to remove the unused _vm
member vars. However, it seems likely that in the future, the _vm
member could be useful for methods added to the console. So instead,
we add a simple assert(_vm) to silence the clang warning.
If the language is explicitly set to American English, use the
American version of the panel for the main control panel. In all
other aspects, American English will behave as British English,
so it shouldn't break anything.
It was using textId 0, which is not the subtitle we want anyway. So
instead of using the wrong subtitle, it is probably better to not display
a subtitle at all. A test case for this is with the demo when using
non-english language as several subtitles are missing toward the end.