示例#1
0
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));
}
示例#2
0
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;
}
示例#3
0
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",
示例#4
0
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));
}
示例#5
0
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;
}