void MenuState::enterLoadMenu() { Menu menu{{{"BACK", [=] { enterMainMenu(); }}}, glm::vec2(20.f, 30.f)}; auto saves = SaveGame::getAllSaveGameInfo(); for (SaveGameInfo& save : saves) { if (save.valid) { std::stringstream ss; ss << save.basicState.saveTime.year << " " << save.basicState.saveTime.month << " " << save.basicState.saveTime.day << " " << save.basicState.saveTime.hour << ":" << save.basicState.saveTime.minute << " "; auto name = GameStringUtil::fromString(ss.str(), FONT_ARIAL); name += save.basicState.saveName; auto loadsave = [=] { game->getStateManager().enter<IngameState>(game, false); game->loadGame(save.savePath); }; menu.lambda(name, loadsave); } else { menu.lambda("CORRUPT", [=] {}); } } setNextMenu(std::move(menu)); }
MenuSourceItem * MenuSourceButton::copy() { auto ret = construct<MenuSourceButton>(); ret->setName(_name); ret->setNameIcon(_nameIcon); ret->setValue(_name); ret->setValueIcon(_nameIcon); ret->setSelected(_selected); ret->setNextMenu(_nextMenu); ret->setCallback(_callback); ret->setCustomData(_customData); return ret; }
Menu DebugState::createMapMenu() { CharacterObject* player = nullptr; if (game->getWorld()->getPlayer()) { player = game->getWorld()->getPlayer()->getCharacter(); } Menu menu{ {{"Back", [=] { setNextMenu(createDebugMenu()); }}, {"Jump to Docks", [=] { jumpCharacter(game, player, glm::vec3(1390.f, -837.f, 100.f)); }}, {"Jump to Garage", [=] { jumpCharacter(game, player, glm::vec3(270.f, -605.f, 40.f)); }}, {"Jump to Airport",
void MenuState::enterMainMenu() { auto& t = game->getGameData().texts; Menu menu{ {{t.text(MenuDefaults::kStartGameId), [=] { game->getStateManager().enter<IngameState>(game); }}, {t.text(MenuDefaults::kLoadGameId), [=] { enterLoadMenu(); }}, {t.text(MenuDefaults::kDebugId), [=] { game->getStateManager().enter<IngameState>(game, true, "test"); }}, {t.text(MenuDefaults::kOptionsId), [] { RW_UNIMPLEMENTED("Options Menu"); }}, {t.text(MenuDefaults::kQuitGameId), [=] { game->getStateManager().clear(); }}}, glm::vec2(200.f, 200.f)}; setNextMenu(std::move(menu)); }
Menu DebugState::createDebugMenu() { CharacterObject* player = nullptr; if (game->getWorld()->getPlayer()) { player = game->getWorld()->getPlayer()->getCharacter(); } Menu menu{ {{"Jump to Debug Camera", [=] { jumpCharacter(game, player, _debugCam.position + _debugCam.rotation * glm::vec3(3.f, 0.f, 0.f), false); }}, {"-Map", [=] { setNextMenu(createMapMenu()); }}, {"-Vehicles", [=] { setNextMenu(createVehicleMenu()); }}, {"-AI", [=] { setNextMenu(createAIMenu()); }}, {"-Weapons", [=] { setNextMenu(createWeaponMenu()); }}, {"-Weather", [=] { setNextMenu(createWeatherMenu()); }}, {"-Missions", [=] { setNextMenu(createMissionsMenu()); }}, {"Set Super Jump", [=] { player->setJumpSpeed(20.f); }}, {"Set Normal Jump", [=] { player->setJumpSpeed(CharacterObject::DefaultJumpSpeed); }}, {"Full Health", [=] { player->getCurrentState().health = 100.f; }}, {"Full Armour", [=] { player->getCurrentState().armour = 100.f; }}, {"Cull Here", [=] { game->getRenderer().setCullOverride(true, _debugCam); }}}, kDebugMenuOffset, kDebugFont, kDebugEntryHeight}; // Optional block if the player is in a vehicle auto cv = player->getCurrentVehicle(); if (cv) { menu.lambda("Flip vehicle", [=] { cv->setRotation(cv->getRotation() * glm::quat(glm::vec3(0.f, glm::pi<float>(), 0.f))); }); } return menu; }