diff --git a/gui.cpp b/gui.cpp index e68fe88a0ae..dc9e4bf2557 100644 --- a/gui.cpp +++ b/gui.cpp @@ -630,7 +630,7 @@ void Gui::handleCommand(int cmd) { close(); return; case 9: /* options button */ - options(); + options(_s); draw(0, 100); return; default: @@ -772,7 +772,7 @@ byte Gui::getDefaultColor(int color) { void Gui::init(Scumm *s) { _s = s; - if (_s->_gameId && !(_s->_features & GF_SMALL_HEADER)) { + if (_s->_gameId && !(_s->_features & GF_SMALL_HEADER) && !(_s->_features & GF_AFTER_V7)) { _bgcolor = getDefaultColor(0); _color = getDefaultColor(1); _textcolor = getDefaultColor(2); @@ -787,7 +787,8 @@ void Gui::init(Scumm *s) { } } -void Gui::loop() { +void Gui::loop(Scumm *s) { + init(s); if (_active==1) { _active++; draw(0,200); // was 100 @@ -837,7 +838,8 @@ void Gui::close() { #endif } -void Gui::saveLoadDialog() { +void Gui::saveLoadDialog(Scumm *s) { + init(s); _widgets[0] = save_load_dialog; _editString = -1; _cur_page = 0; @@ -845,21 +847,24 @@ void Gui::saveLoadDialog() { _dialog = SAVELOAD_DIALOG; } -void Gui::pause() { +void Gui::pause(Scumm *s) { + init(s); _widgets[0] = pause_dialog; _cur_page = 0; _active = true; _dialog = PAUSE_DIALOG; } -void Gui::options() { +void Gui::options(Scumm *s) { + init(s); _widgets[0] = options_dialog; _active = true; _cur_page = 0; _dialog = OPTIONS_DIALOG; } -void Gui::launcher() { +void Gui::launcher(Scumm *s) { + init(s); _widgets[0] = launcher_dialog; _active = true; _cur_page = 0; diff --git a/gui.h b/gui.h index 82ac0c856cb..0b1cd15d2a7 100644 --- a/gui.h +++ b/gui.h @@ -113,7 +113,7 @@ struct Gui { int _editLen; bool valid_games[9]; char game_names[9][SAVEGAME_NAME_LEN]; - void loop(); + void loop(Scumm *s); void init(Scumm *s); void draw(int start, int end); void draw(int item) { draw(item,-1); } @@ -140,10 +140,10 @@ struct Gui { byte getDefaultColor(int color); // Dialogs - void saveLoadDialog(); - void pause(); - void options(); - void launcher(); + void saveLoadDialog(Scumm *s); + void pause(Scumm *s); + void options(Scumm *s); + void launcher(Scumm *s); void handleSoundDialogCommand(int cmd); void handleOptionsDialogCommand(int cmd); diff --git a/scummvm.cpp b/scummvm.cpp index 235dae4c177..f2d8cbbc226 100644 --- a/scummvm.cpp +++ b/scummvm.cpp @@ -734,11 +734,11 @@ void Scumm::unkRoomFunc4(int a, int b, int c, int d, int e) { } void Scumm::pauseGame(bool user) { - ((Gui*)_gui)->pause(); + ((Gui*)_gui)->pause(this); } void Scumm::setOptions() { - ((Gui*)_gui)->options(); + ((Gui*)_gui)->options(this); } void Scumm::shutDown(int i) { @@ -758,7 +758,7 @@ void Scumm::processKbd() { _virtual_mouse_y-=16; if (_virtual_mouse_y < 0) - _virtual_mouse_y = -1; + _virtual_mouse_y =-1; if (_features & GF_OLD256) { if (_virtual_mouse_y >= virtscr[0].height + virtscr[0].topline) _virtual_mouse_y = -1; @@ -795,7 +795,7 @@ void Scumm::processKbd() { } else if (_lastKeyHit==_vars[VAR_SAVELOADDIALOG_KEY] && _currentRoom != 0) { if ( _features & GF_AFTER_V7) runScript(_vars[VAR_UNK_SCRIPT],0,0,0); - ((Gui*)_gui)->saveLoadDialog(); + ((Gui*)_gui)->saveLoadDialog(this); if ( _features & GF_AFTER_V7) runScript(_vars[VAR_UNK_SCRIPT_2],0,0,0); } else if (_lastKeyHit==_vars[VAR_TALKSTOP_KEY]) { diff --git a/sdl.cpp b/sdl.cpp index c5b53e29d51..a77335f3d1e 100644 --- a/sdl.cpp +++ b/sdl.cpp @@ -866,7 +866,7 @@ void launcherLoop() { int delta = 0; last_time = SDL_GetTicks(); - gui.launcher(); + gui.launcher(scumm); do { updateScreen(scumm); @@ -875,7 +875,7 @@ void launcherLoop() { last_time = SDL_GetTicks(); if (gui._active) { - gui.loop(); + gui.loop(scumm); delta = 5; } else error("gui closed!"); @@ -2003,7 +2003,7 @@ int OSystem::waitTick(int delta) waitForTimer(scumm, delta * 15 + last_time - new_time); last_time = SDL_GetTicks(); if (gui._active) { - gui.loop(); + gui.loop(scumm); delta = 5; } }while(gui._active);