/** * Loads the selected save. * @param action Pointer to an action. */ void LoadGameState::lstSavesClick(Action *action) { try { _game->setRuleset(new XcomRuleset()); SavedGame *s = new SavedGame(DIFF_BEGINNER); s->load(Language::wstrToUtf8(_lstSaves->getCell(_lstSaves->getSelectedRow(), 0)->getText()), _game->getRuleset()); _game->setSavedGame(s); if (_game->getSavedGame()->getBattleGame() == 0) { _game->setState(new GeoscapeState(_game)); } else { _game->setState(new BattlescapeState(_game)); } } catch (Exception &e) { std::cerr << "ERROR: " << e.what() << std::endl; _game->pushState(new GeoscapeErrorState(_game, "STR_LOAD_UNSUCCESSFUL")); } catch (YAML::Exception &e) { std::cerr << "ERROR: " << e.what() << std::endl; _game->pushState(new GeoscapeErrorState(_game, "STR_LOAD_UNSUCCESSFUL")); } }
/** * Loads the selected save. * @param action Pointer to an action. */ void LoadState::lstSavesPress(Action *action) { if (action->getDetails()->button.button == SDL_BUTTON_LEFT) { updateStatus("STR_LOADING_GAME"); SavedGame *s = new SavedGame(); try { #ifdef _WIN32 std::string filename = Language::wstrToCp(_lstSaves->getCellText(_lstSaves->getSelectedRow(), 0)); #else std::string filename = Language::wstrToUtf8(_lstSaves->getCellText(_lstSaves->getSelectedRow(), 0)); #endif s->load(filename, _game->getRuleset()); _game->setSavedGame(s); _game->setState(new GeoscapeState(_game)); if (_game->getSavedGame()->getBattleGame() != 0) { _game->getSavedGame()->getBattleGame()->loadMapResources(_game->getResourcePack()); BattlescapeState *bs = new BattlescapeState(_game); _game->pushState(bs); _game->getSavedGame()->getBattleGame()->setBattleState(bs); } } catch (Exception &e) { Log(LOG_ERROR) << e.what(); std::wstringstream error; error << _game->getLanguage()->getString("STR_LOAD_UNSUCCESSFUL") << L'\x02' << Language::utf8ToWstr(e.what()); if (_geo) _game->pushState(new ErrorMessageState(_game, error.str(), Palette::blockOffset(8)+10, "BACK01.SCR", 6)); else _game->pushState(new ErrorMessageState(_game, error.str(), Palette::blockOffset(0), "TAC00.SCR", -1)); delete s; _game->setSavedGame(0); } catch (YAML::Exception &e) { Log(LOG_ERROR) << e.what(); std::wstringstream error; error << _game->getLanguage()->getString("STR_LOAD_UNSUCCESSFUL") << L'\x02' << Language::utf8ToWstr(e.what()); if (_geo) _game->pushState(new ErrorMessageState(_game, error.str(), Palette::blockOffset(8)+10, "BACK01.SCR", 6)); else _game->pushState(new ErrorMessageState(_game, error.str(), Palette::blockOffset(0), "TAC00.SCR", -1)); delete s; _game->setSavedGame(0); } } else if (action->getDetails()->button.button == SDL_BUTTON_RIGHT) { if(_geo) _game->pushState(new DeleteGameState(_game, _lstSaves->getCellText(_lstSaves->getSelectedRow(),0), Palette::blockOffset(8)+10, "BACK01.SCR", 6, this)); else _game->pushState(new DeleteGameState(_game, _lstSaves->getCellText(_lstSaves->getSelectedRow(),0), Palette::blockOffset(0), "TAC00.SCR", -1, this)); } }
/** * Quick load game. * @param filename16 name of file without ".sav" */ void LoadState::quickLoad(const std::wstring &filename16) { if (_showMsg) updateStatus("STR_LOADING_GAME"); #ifdef _WIN32 std::string filename = Language::wstrToCp(filename16); #else std::string filename = Language::wstrToUtf8(filename16); #endif SavedGame *s = new SavedGame(); try { s->load(filename, _game->getRuleset()); _game->setSavedGame(s); _game->setState(new GeoscapeState(_game)); if (_game->getSavedGame()->getSavedBattle() != 0) { _game->getSavedGame()->getSavedBattle()->loadMapResources(_game); BattlescapeState *bs = new BattlescapeState(_game); _game->pushState(bs); _game->getSavedGame()->getSavedBattle()->setBattleState(bs); } } catch (Exception &e) { Log(LOG_ERROR) << e.what(); std::wstringstream error; error << tr("STR_LOAD_UNSUCCESSFUL") << L'\x02' << Language::utf8ToWstr(e.what()); if (_geo) _game->pushState(new ErrorMessageState(_game, error.str(), Palette::blockOffset(8)+10, "BACK01.SCR", 6)); else _game->pushState(new ErrorMessageState(_game, error.str(), Palette::blockOffset(0), "TAC00.SCR", -1)); if (_game->getSavedGame() == s) _game->setSavedGame(0); else delete s; } catch (YAML::Exception &e) { Log(LOG_ERROR) << e.what(); std::wstringstream error; error << tr("STR_LOAD_UNSUCCESSFUL") << L'\x02' << Language::utf8ToWstr(e.what()); if (_geo) _game->pushState(new ErrorMessageState(_game, error.str(), Palette::blockOffset(8)+10, "BACK01.SCR", 6)); else _game->pushState(new ErrorMessageState(_game, error.str(), Palette::blockOffset(0), "TAC00.SCR", -1)); if (_game->getSavedGame() == s) _game->setSavedGame(0); else delete s; } }
/** * Loads the specified save. */ void LoadGameState::think() { State::think(); // Make sure it gets drawn properly if (_firstRun < 10) { _firstRun++; } else { _game->popState(); // Load the game SavedGame *s = new SavedGame(); try { s->load(_filename, _game->getMod()); _game->setSavedGame(s); if (_game->getSavedGame()->getEnding() != END_NONE) { Options::baseXResolution = Screen::ORIGINAL_WIDTH; Options::baseYResolution = Screen::ORIGINAL_HEIGHT; _game->getScreen()->resetDisplay(false); _game->setState(new StatisticsState); } else { Options::baseXResolution = Options::baseXGeoscape; Options::baseYResolution = Options::baseYGeoscape; _game->getScreen()->resetDisplay(false); _game->setState(new GeoscapeState); if (_game->getSavedGame()->getSavedBattle() != 0) { _game->getSavedGame()->getSavedBattle()->loadMapResources(_game->getMod()); Options::baseXResolution = Options::baseXBattlescape; Options::baseYResolution = Options::baseYBattlescape; _game->getScreen()->resetDisplay(false); BattlescapeState *bs = new BattlescapeState; _game->pushState(bs); _game->getSavedGame()->getSavedBattle()->setBattleState(bs); } } } catch (Exception &e) { error(e.what(), s); } catch (YAML::Exception &e) { error(e.what(), s); } CrossPlatform::flashWindow(); } }
/** * Loads the selected save. * @param action Pointer to an action. */ void LoadGameState::lstSavesClick(Action *action) { //Ruleset *r = new XcomRuleset(); SavedGame *s = new SavedGame(); try { //_game->setRuleset(r); s->load(Language::wstrToUtf8(_lstSaves->getCellText(_lstSaves->getSelectedRow(), 0)), _game->getRuleset()); _game->setSavedGame(s); _game->setState(new GeoscapeState(_game)); if (_game->getSavedGame()->getBattleGame() != 0) { _game->getSavedGame()->getBattleGame()->loadMapResources(_game->getResourcePack()); _game->pushState(new BattlescapeState(_game)); } } catch (Exception &e) { std::cerr << "ERROR: " << e.what() << std::endl; std::wstring error = _game->getLanguage()->getString("STR_LOAD_UNSUCCESSFUL") + L'\x02' + Language::utf8ToWstr(e.what()); if (_geo) _game->pushState(new ErrorMessageState(_game, error, Palette::blockOffset(8)+10, "BACK01.SCR", 6)); else _game->pushState(new ErrorMessageState(_game, error, Palette::blockOffset(0), "TAC00.SCR", -1)); //delete r; delete s; //_game->setRuleset(0); _game->setSavedGame(0); } catch (YAML::Exception &e) { std::cerr << "ERROR: " << e.what() << std::endl; std::wstring error = _game->getLanguage()->getString("STR_LOAD_UNSUCCESSFUL") + L'\x02' + Language::utf8ToWstr(e.what()); if (_geo) _game->pushState(new ErrorMessageState(_game, error, Palette::blockOffset(8)+10, "BACK01.SCR", 6)); else _game->pushState(new ErrorMessageState(_game, error, Palette::blockOffset(0), "TAC00.SCR", -1)); //delete r; delete s; //_game->setRuleset(0); _game->setSavedGame(0); } }
/** * Loads the specified save. */ void LoadGameState::think() { State::think(); // Make sure it gets drawn properly if (_firstRun < 10) { _firstRun++; } else { _game->popState(); // Load the game SavedGame *s = new SavedGame(); try { s->load(_filename, _game->getMod()); _game->setSavedGame(s); Options::baseXResolution = Options::baseXGeoscape; Options::baseYResolution = Options::baseYGeoscape; _game->getScreen()->resetDisplay(false); _game->setState(new GeoscapeState); if (_game->getSavedGame()->getSavedBattle() != 0) { _game->getSavedGame()->getSavedBattle()->loadMapResources(_game->getMod()); Options::baseXResolution = Options::baseXBattlescape; Options::baseYResolution = Options::baseYBattlescape; _game->getScreen()->resetDisplay(false); BattlescapeState *bs = new BattlescapeState; _game->pushState(bs); _game->getSavedGame()->getSavedBattle()->setBattleState(bs); } } catch (Exception &e) { Log(LOG_ERROR) << e.what(); std::wostringstream error; error << tr("STR_LOAD_UNSUCCESSFUL") << L'\x02' << Language::fsToWstr(e.what()); if (_origin != OPT_BATTLESCAPE) _game->pushState(new ErrorMessageState(error.str(), _palette, _game->getMod()->getInterface("errorMessages")->getElement("geoscapeColor")->color, "BACK01.SCR", _game->getMod()->getInterface("errorMessages")->getElement("geoscapePalette")->color)); else _game->pushState(new ErrorMessageState(error.str(), _palette, _game->getMod()->getInterface("errorMessages")->getElement("battlescapeColor")->color, "TAC00.SCR", _game->getMod()->getInterface("errorMessages")->getElement("battlescapePalette")->color)); if (_game->getSavedGame() == s) _game->setSavedGame(0); else delete s; } catch (YAML::Exception &e) { Log(LOG_ERROR) << e.what(); std::wostringstream error; error << tr("STR_LOAD_UNSUCCESSFUL") << L'\x02' << Language::fsToWstr(e.what()); if (_origin != OPT_BATTLESCAPE) _game->pushState(new ErrorMessageState(error.str(), _palette, _game->getMod()->getInterface("errorMessages")->getElement("geoscapeColor")->color, "BACK01.SCR", _game->getMod()->getInterface("errorMessages")->getElement("geoscapePalette")->color)); else _game->pushState(new ErrorMessageState(error.str(), _palette, _game->getMod()->getInterface("errorMessages")->getElement("battlescapeColor")->color, "TAC00.SCR", _game->getMod()->getInterface("errorMessages")->getElement("battlescapePalette")->color)); if (_game->getSavedGame() == s) _game->setSavedGame(0); else delete s; } CrossPlatform::flashWindow(); } }
/** * Loads the specified save. */ void LoadGameState::init() { State::init(); // Ignore quick loads without a save available if (_filename == SavedGame::QUICKSAVE && !CrossPlatform::fileExists(Options::getUserFolder() + _filename)) { _game->popState(); return; } // Make sure message is shown (if any) blit(); _game->getScreen()->flip(); _game->popState(); // Load the game SavedGame *s = new SavedGame(); try { s->load(_filename, _game->getRuleset()); _game->setSavedGame(s); Options::baseXResolution = Options::baseXGeoscape; Options::baseYResolution = Options::baseYGeoscape; _game->getScreen()->resetDisplay(false); _game->setState(new GeoscapeState(_game)); if (_game->getSavedGame()->getSavedBattle() != 0) { _game->getSavedGame()->getSavedBattle()->loadMapResources(_game); Options::baseXResolution = Options::baseXBattlescape; Options::baseYResolution = Options::baseYBattlescape; _game->getScreen()->resetDisplay(false); BattlescapeState *bs = new BattlescapeState(_game); _game->pushState(bs); _game->getSavedGame()->getSavedBattle()->setBattleState(bs); } } catch (Exception &e) { Log(LOG_ERROR) << e.what(); std::wostringstream error; error << tr("STR_LOAD_UNSUCCESSFUL") << L'\x02' << Language::fsToWstr(e.what()); if (_origin != OPT_BATTLESCAPE) _game->pushState(new ErrorMessageState(_game, error.str(), _palette, Palette::blockOffset(8) + 10, "BACK01.SCR", 6)); else _game->pushState(new ErrorMessageState(_game, error.str(), _palette, Palette::blockOffset(0), "TAC00.SCR", -1)); if (_game->getSavedGame() == s) _game->setSavedGame(0); else delete s; } catch (YAML::Exception &e) { Log(LOG_ERROR) << e.what(); std::wostringstream error; error << tr("STR_LOAD_UNSUCCESSFUL") << L'\x02' << Language::fsToWstr(e.what()); if (_origin != OPT_BATTLESCAPE) _game->pushState(new ErrorMessageState(_game, error.str(), _palette, Palette::blockOffset(8) + 10, "BACK01.SCR", 6)); else _game->pushState(new ErrorMessageState(_game, error.str(), _palette, Palette::blockOffset(0), "TAC00.SCR", -1)); if (_game->getSavedGame() == s) _game->setSavedGame(0); else delete s; } CrossPlatform::flashWindow(); }