From 0a2e64b903a65e9ffcfc3f7f81eba708c774d0f2 Mon Sep 17 00:00:00 2001 From: Thierry Crozat Date: Sat, 3 Aug 2013 16:45:05 +0100 Subject: DEVTOOLS: Include English menu in mortevielle dat file --- devtools/create_mortdat/create_mortdat.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'devtools/create_mortdat/create_mortdat.cpp') diff --git a/devtools/create_mortdat/create_mortdat.cpp b/devtools/create_mortdat/create_mortdat.cpp index 653a0754eb..93ca721d95 100644 --- a/devtools/create_mortdat/create_mortdat.cpp +++ b/devtools/create_mortdat/create_mortdat.cpp @@ -41,6 +41,7 @@ #include "create_mortdat.h" #include "enginetext.h" #include "gametext.h" +#include "menudata.h" bool File::open(const char *filename, AccessMode mode) { @@ -200,10 +201,36 @@ void writeGameStrings() { writeStaticStrings(gameDataDe, kGameStrings, 2); } +/** + * Write out the data for the English menu + */ +void writeMenuBlock() { + // Write out a section header to the output file and the font data + const char menuHeader[4] = { 'M', 'E', 'N', 'U' }; + outputFile.write(menuHeader, 4); // Section Id + outputFile.writeWord(strlen(menuDataEn) / 8); // Section size + // Write each 8-characters block as a byte (one bit per character) + // ' ' -> 0, anything else -> 1 + byte value; + int valueCpt = 0; + const char* str = menuDataEn; + while (*str != 0) { + if (*(str++) != ' ') + value |= (1 << (7 - valueCpt)); + ++valueCpt; + if (valueCpt == 8) { + outputFile.writeByte(value); + value = 0; + valueCpt = 0; + } + } +} + void process() { writeFontBlock(); writeGameStrings(); writeEngineStrings(); + writeMenuBlock(); } /** -- cgit v1.2.3