Skip to content
This repository has been archived by the owner on Jun 8, 2022. It is now read-only.

Commit

Permalink
STARK: Seperate Save and Load menu
Browse files Browse the repository at this point in the history
  • Loading branch information
Dougaak committed May 29, 2018
1 parent f4d4254 commit 340b55f
Show file tree
Hide file tree
Showing 7 changed files with 89 additions and 17 deletions.
15 changes: 10 additions & 5 deletions engines/stark/services/userinterface.cpp
Expand Up @@ -52,7 +52,8 @@ UserInterface::UserInterface(Gfx::Driver *gfx) :
_diaryIndexScreen(nullptr),
_mainMenuScreen(nullptr),
_settingsMenuScreen(nullptr),
_saveLoadMenuScreen(nullptr),
_saveMenuScreen(nullptr),
_loadMenuScreen(nullptr),
_exitGame(false),
_fmvScreen(nullptr),
_gameScreen(nullptr),
Expand All @@ -72,7 +73,8 @@ UserInterface::~UserInterface() {
delete _cursor;
delete _mainMenuScreen;
delete _settingsMenuScreen;
delete _saveLoadMenuScreen;
delete _saveMenuScreen;
delete _loadMenuScreen;
}

void UserInterface::init() {
Expand All @@ -82,7 +84,8 @@ void UserInterface::init() {
_gameScreen = new GameScreen(_gfx, _cursor);
_diaryIndexScreen = new DiaryIndexScreen(_gfx, _cursor);
_settingsMenuScreen = new SettingsMenuScreen(_gfx, _cursor);
_saveLoadMenuScreen = new SaveLoadMenuScreen(_gfx, _cursor);
_saveMenuScreen = new SaveMenuScreen(_gfx, _cursor);
_loadMenuScreen = new LoadMenuScreen(_gfx, _cursor);
_fmvScreen = new FMVScreen(_gfx, _cursor);

_prevScreenNameStack.push(Screen::kScreenMainMenu);
Expand Down Expand Up @@ -195,8 +198,10 @@ Screen *UserInterface::getScreenByName(Screen::Name screenName) const {
return _mainMenuScreen;
case Screen::kScreenSettingsMenu:
return _settingsMenuScreen;
case Screen::kScreenSaveLoadMenu:
return _saveLoadMenuScreen;
case Screen::kScreenSaveMenu:
return _saveMenuScreen;
case Screen::kScreenLoadMenu:
return _loadMenuScreen;
default:
error("Unhandled screen name '%d'", screenName);
}
Expand Down
6 changes: 4 additions & 2 deletions engines/stark/services/userinterface.h
Expand Up @@ -48,7 +48,8 @@ class DiaryIndexScreen;
class GameScreen;
class MainMenuScreen;
class SettingsMenuScreen;
class SaveLoadMenuScreen;
class SaveMenuScreen;
class LoadMenuScreen;
class Cursor;
class FMVScreen;

Expand Down Expand Up @@ -155,7 +156,8 @@ class UserInterface {
DiaryIndexScreen *_diaryIndexScreen;
MainMenuScreen *_mainMenuScreen;
SettingsMenuScreen *_settingsMenuScreen;
SaveLoadMenuScreen *_saveLoadMenuScreen;
SaveMenuScreen *_saveMenuScreen;
LoadMenuScreen *_loadMenuScreen;

Screen *_currentScreen;
Common::Stack<Screen::Name> _prevScreenNameStack;
Expand Down
7 changes: 6 additions & 1 deletion engines/stark/ui/menu/diaryindex.cpp
Expand Up @@ -123,7 +123,9 @@ void DiaryIndexScreen::quitHandler() {

void DiaryIndexScreen::loadHandler() {
// TODO: Implement the original load screen
StarkUserInterface->changeScreen(Screen::kScreenLoadMenu);

/*
GUI::SaveLoadChooser slc(_("Load game:"), _("Load"), false);
g_engine->pauseEngine(true);
Expand All @@ -140,11 +142,14 @@ void DiaryIndexScreen::loadHandler() {
dialog.runModal();
}
}
*/
}

void DiaryIndexScreen::saveHandler() {
// TODO: Implement the original save screen
StarkUserInterface->changeScreen(Screen::kScreenSaveMenu);

/*
GUI::SaveLoadChooser slc(_("Save game:"), _("Save"), true);
g_engine->pauseEngine(true);
Expand All @@ -160,7 +165,7 @@ void DiaryIndexScreen::saveHandler() {
}
StarkUserInterface->changeScreen(Screen::kScreenGame);
}
}*/
}

} // End of namespace Stark
2 changes: 1 addition & 1 deletion engines/stark/ui/menu/mainmenu.cpp
Expand Up @@ -172,7 +172,7 @@ void MainMenuScreen::newGameHandler() {
}

void MainMenuScreen::loadHandler() {
StarkUserInterface->changeScreen(Screen::kScreenSaveLoadMenu);
StarkUserInterface->changeScreen(Screen::kScreenLoadMenu);
}

void MainMenuScreen::settingsHandler() {
Expand Down
34 changes: 28 additions & 6 deletions engines/stark/ui/menu/saveloadmenu.cpp
Expand Up @@ -21,11 +21,13 @@
*/

#include "engines/stark/ui/menu/saveloadmenu.h"
#include "engines/stark/services/services.h"
#include "engines/stark/services/userinterface.h"

namespace Stark {

SaveLoadMenuScreen::SaveLoadMenuScreen(Gfx::Driver *gfx, Cursor *cursor) :
StaticLocationScreen(gfx, cursor, "LoadSaveLocation", Screen::kScreenSaveLoadMenu) {
SaveLoadMenuScreen::SaveLoadMenuScreen(Gfx::Driver *gfx, Cursor *cursor, Screen::Name screenName) :
StaticLocationScreen(gfx, cursor, "LoadSaveLocation", screenName) {
}

SaveLoadMenuScreen::~SaveLoadMenuScreen() {
Expand All @@ -40,14 +42,16 @@ void SaveLoadMenuScreen::open() {
nullptr));

_widgets.push_back(new StaticLocationWidget(
"Cancel",
nullptr,
"back to index",
CLICK_HANDLER(SaveLoadMenuScreen, backHandler),
nullptr));
_widgets.back()->setupSounds(0, 1);

_widgets.push_back(new StaticLocationWidget(
"back to index",
nullptr,
"Cancel",
CLICK_HANDLER(SaveLoadMenuScreen, backHandler),
nullptr));
_widgets.back()->setupSounds(0, 1);

_widgets.push_back(new StaticLocationWidget(
"SaveText",
Expand All @@ -63,12 +67,30 @@ void SaveLoadMenuScreen::open() {
"Back",
nullptr,
nullptr));
_widgets.back()->setupSounds(0, 1);
_widgets.back()->setTextColor(_textColorBlack);

_widgets.push_back(new StaticLocationWidget(
"Next",
nullptr,
nullptr));
_widgets.back()->setupSounds(0, 1);
_widgets.back()->setTextColor(_textColorBlack);

}

void SaveLoadMenuScreen::backHandler() {
StarkUserInterface->backPrevScreen();
}

void SaveMenuScreen::open() {
SaveLoadMenuScreen::open();
_widgets[kWidgetLoadText]->setVisible(false);
}

void LoadMenuScreen::open() {
SaveLoadMenuScreen::open();
_widgets[kWidgetSaveText]->setVisible(false);
}

} // End of namespace Stark
39 changes: 38 additions & 1 deletion engines/stark/ui/menu/saveloadmenu.h
Expand Up @@ -32,11 +32,48 @@ namespace Stark {
*/
class SaveLoadMenuScreen : public StaticLocationScreen {
public:
SaveLoadMenuScreen(Gfx::Driver *gfx, Cursor *cursor);
SaveLoadMenuScreen(Gfx::Driver *gfx, Cursor *cursor, Screen::Name screenName);
virtual ~SaveLoadMenuScreen();

// StaticLocationScreen API
void open() override;

protected:
enum WidgetIndex {
kWidgetSaveText = 3,
kWidgetLoadText = 4,
};

private:
static const uint32 _textColorBlack = 0xFF000000;

void backHandler();
};

/**
* The save menu of the game
*/
class SaveMenuScreen : public SaveLoadMenuScreen {
public:
SaveMenuScreen(Gfx::Driver *gfx, Cursor *cursor) :
SaveLoadMenuScreen(gfx, cursor, Screen::kScreenSaveMenu) {}
virtual ~SaveMenuScreen() {}

// SaveLoadMenuScreen API
void open() override;
};

/**
* The load menu of the game
*/
class LoadMenuScreen : public SaveLoadMenuScreen {
public:
LoadMenuScreen(Gfx::Driver *gfx, Cursor *cursor) :
SaveLoadMenuScreen(gfx, cursor, Screen::kScreenLoadMenu) {}
virtual ~LoadMenuScreen() {}

// SaveLoadMenuScreen API
void open() override;
};

} // End of namespace Stark
Expand Down
3 changes: 2 additions & 1 deletion engines/stark/ui/screen.h
Expand Up @@ -41,7 +41,8 @@ class Screen {
kScreenFMV,
kScreenDiaryIndex,
kScreenSettingsMenu,
kScreenSaveLoadMenu
kScreenSaveMenu,
kScreenLoadMenu
};

explicit Screen(Name name) : _name(name) {};
Expand Down

0 comments on commit 340b55f

Please sign in to comment.