MCPcopy Create free account
hub / github.com/OpenXcom/OpenXcom / init

Method init

src/Menu/LoadGameState.cpp:123–191  ·  view source on GitHub ↗

* Loads the specified save. */

Source from the content-addressed store, hash-verified

121 * Loads the specified save.
122 */
123void LoadGameState::init()
124{
125 State::init();
126
127 // Ignore quick loads without a save available
128 if (_filename == SavedGame::QUICKSAVE && !CrossPlatform::fileExists(Options::getUserFolder() + _filename))
129 {
130 _game->popState();
131 return;
132 }
133
134 // Make sure message is shown (if any)
135 blit();
136 _game->getScreen()->flip();
137 _game->popState();
138
139 // Load the game
140 SavedGame *s = new SavedGame();
141 try
142 {
143 s->load(_filename, _game->getRuleset());
144 _game->setSavedGame(s);
145 Options::baseXResolution = Options::baseXGeoscape;
146 Options::baseYResolution = Options::baseYGeoscape;
147 _game->getScreen()->resetDisplay(false);
148 _game->setState(new GeoscapeState(_game));
149 if (_game->getSavedGame()->getSavedBattle() != 0)
150 {
151 _game->getSavedGame()->getSavedBattle()->loadMapResources(_game);
152 Options::baseXResolution = Options::baseXBattlescape;
153 Options::baseYResolution = Options::baseYBattlescape;
154 _game->getScreen()->resetDisplay(false);
155 BattlescapeState *bs = new BattlescapeState(_game);
156 _game->pushState(bs);
157 _game->getSavedGame()->getSavedBattle()->setBattleState(bs);
158 }
159 }
160 catch (Exception &e)
161 {
162 Log(LOG_ERROR) << e.what();
163 std::wostringstream error;
164 error << tr("STR_LOAD_UNSUCCESSFUL") << L'\x02' << Language::fsToWstr(e.what());
165 if (_origin != OPT_BATTLESCAPE)
166 _game->pushState(new ErrorMessageState(_game, error.str(), _palette, Palette::blockOffset(8) + 10, "BACK01.SCR", 6));
167 else
168 _game->pushState(new ErrorMessageState(_game, error.str(), _palette, Palette::blockOffset(0), "TAC00.SCR", -1));
169
170 if (_game->getSavedGame() == s)
171 _game->setSavedGame(0);
172 else
173 delete s;
174 }
175 catch (YAML::Exception &e)
176 {
177 Log(LOG_ERROR) << e.what();
178 std::wostringstream error;
179 error << tr("STR_LOAD_UNSUCCESSFUL") << L'\x02' << Language::fsToWstr(e.what());
180 if (_origin != OPT_BATTLESCAPE)

Callers

nothing calls this directly

Calls 15

initFunction · 0.85
fileExistsFunction · 0.85
getUserFolderFunction · 0.85
flashWindowFunction · 0.85
flipMethod · 0.80
getScreenMethod · 0.80
setSavedGameMethod · 0.80
resetDisplayMethod · 0.80
setStateMethod · 0.80
getSavedBattleMethod · 0.80
getSavedGameMethod · 0.80
loadMapResourcesMethod · 0.80

Tested by

no test coverage detected