diff options
Diffstat (limited to 'engines/lure/menu.cpp')
-rw-r--r-- | engines/lure/menu.cpp | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/engines/lure/menu.cpp b/engines/lure/menu.cpp index 5856056e5c..1a03118476 100644 --- a/engines/lure/menu.cpp +++ b/engines/lure/menu.cpp @@ -32,11 +32,11 @@ #include "lure/strings.h" #include "lure/room.h" #include "lure/events.h" +#include "lure/lure.h" namespace Lure { -MenuRecord::MenuRecord(uint16 hsxstartVal, uint16 hsxendVal, uint16 xstartVal, - uint16 widthVal, int numParams, ...) { +MenuRecord::MenuRecord(const MenuRecordBounds *bounds, int numParams, ...) { // Store list of pointers to strings va_list params; @@ -48,8 +48,9 @@ MenuRecord::MenuRecord(uint16 hsxstartVal, uint16 hsxendVal, uint16 xstartVal, _entries[index] = va_arg(params, const char *); // Store position data - _xstart = xstartVal; _width = widthVal; - _hsxstart = hsxstartVal; _hsxend = hsxendVal; + _hsxstart = bounds->left; _hsxend = bounds->right; + _xstart = bounds->contentsX << 3; + _width = (bounds->contentsWidth + 3) << 3; } const char *MenuRecord::getEntry(uint8 index) { @@ -61,19 +62,33 @@ const char *MenuRecord::getEntry(uint8 index) { static Menu *int_menu = NULL; +const MenuRecordLanguage menuList[] = { +// {EN_ANY, {{40, 87, 20, 80}, {127, 179, 100, 120}, {224, 281, 210, 105}}}, + {EN_ANY, {{40, 87, 3, 7}, {127, 179, 13, 12}, {224, 281, 27, 10}}}, + {IT_ITA, {{40, 98, 4, 6}, {120, 195, 14, 11}, {208, 281, 24, 13}}}, + {UNK_LANG, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}} +}; + Menu::Menu() { int_menu = this; StringList &sl = Resources::getReference().stringList(); + Common::Language language = LureEngine::getReference().getLanguage(); MemoryBlock *data = Disk::getReference().getEntry(MENU_RESOURCE_ID); PictureDecoder decoder; _menu = decoder.decode(data, SCREEN_SIZE); delete data; - _menus[0] = new MenuRecord(40, 87, 20, 80, 1, sl.getString(S_CREDITS)); - _menus[1] = new MenuRecord(127, 179, 100, 120, 3, + const MenuRecordLanguage *rec = &menuList[0]; + while ((rec->language != UNK_LANG) && (rec->language != language)) + ++rec; + if (rec->language == UNK_LANG) + error("Unknown language encountered in top line handler"); + + _menus[0] = new MenuRecord(&rec->menus[0], 1, sl.getString(S_CREDITS)); + _menus[1] = new MenuRecord(&rec->menus[1], 3, sl.getString(S_RESTART_GAME), sl.getString(S_SAVE_GAME), sl.getString(S_RESTORE_GAME)); - _menus[2] = new MenuRecord(224, 281, 210, 105, 3, + _menus[2] = new MenuRecord(&rec->menus[2], 3, sl.getString(S_QUIT), sl.getString(S_SLOW_TEXT), sl.getString(S_SOUND_ON)); _selectedMenu = NULL; |