diff --git a/src/saland.cpp b/src/saland.cpp index 38e48c1..6b5e066 100644 --- a/src/saland.cpp +++ b/src/saland.cpp @@ -269,6 +269,10 @@ private: std::string config_key; std::string config_value; public: + ButtonConfigValue() { + setPopOnRun(true); + } + void setConfigValues(const std::string& key, const std::string& value) { config_key = key; config_value = value; @@ -282,28 +286,37 @@ public: void runWorldSelect() { Menu m(globalData.screen, true); ButtonConfigValue bWorld1; - bWorld1.setPopOnRun(true); bWorld1.setLabel("World 1"); bWorld1.setConfigValues("world", "world1"); m.addButton(&bWorld1); ButtonConfigValue bWorld2; - bWorld2.setPopOnRun(true); bWorld2.setLabel("World 2"); bWorld1.setConfigValues("world", "world2"); m.addButton(&bWorld2); ButtonConfigValue bWorld3; - bWorld3.setPopOnRun(true); bWorld3.setLabel("World 3"); bWorld1.setConfigValues("world", "world3"); m.addButton(&bWorld3); ButtonConfigValue bWorld4; - bWorld4.setPopOnRun(true); bWorld4.setLabel("World 4"); bWorld1.setConfigValues("world", "world4"); m.addButton(&bWorld4); RunGameState(m); } +void runPlayerSelect() { + Menu m(globalData.screen, true); + ButtonConfigValue bPlayer1; + bPlayer1.setLabel("Player 1"); + bPlayer1.setConfigValues("player", "player1"); + m.addButton(&bPlayer1); + ButtonConfigValue bPlayer2; + bPlayer2.setLabel("Player 2"); + bPlayer2.setConfigValues("player", "player2"); + m.addButton(&bPlayer2); + RunGameState(m); +} + void ResetFullscreen() { sago::SagoDataHolder& dataHolder = *globalData.dataHolder; @@ -339,9 +352,9 @@ static void runHelpAbout() { RunGameState(helpAbout); } -class WouldSelectButton : public Button { +class WorldSelectButton : public Button { public: - WouldSelectButton() { + WorldSelectButton() { this->setLabel(SPrintStringF("World: %s", Config::getInstance()->getString("world").c_str())); } @@ -351,6 +364,18 @@ public: } }; +class PlayerSelectButton : public Button { +public: + PlayerSelectButton() { + this->setLabel(SPrintStringF("Player: %s", Config::getInstance()->getString("player").c_str() )); + } + + virtual void doAction() override { + runPlayerSelect(); + this->setLabel(SPrintStringF("Player: %s", Config::getInstance()->getString("player").c_str() )); + } +}; + void runGame() { int width = 1280, height = 800; @@ -390,8 +415,10 @@ void runGame() { bStart.setLabel("Start"); bStart.setAction(runStartGame); m.addButton(&bStart); - WouldSelectButton bWorldSelect; + WorldSelectButton bWorldSelect; m.addButton(&bWorldSelect); + PlayerSelectButton bPlayerSelect; + m.addButton(&bPlayerSelect); Button bOptions; bOptions.setLabel("Options"); bOptions.setAction(runMenuOptions);