diff --git a/src/game.h b/src/game.h index fc306d4..be3ca0d 100644 --- a/src/game.h +++ b/src/game.h @@ -226,8 +226,9 @@ namespace Game { if (slot > -1) { if (forced) { + level->loadGame(slot); level->loadLevel(saveSlots[slot].getLevelID()); - level->loadNextLevel(); + level->loadNextLevelData(); } else { level->loadGame(slot); } diff --git a/src/level.h b/src/level.h index a89352c..ed38ea8 100644 --- a/src/level.h +++ b/src/level.h @@ -2051,6 +2051,14 @@ struct Level : IGame { controller->render(camera->frustum, mesh, type, room.flags.water); } + void loadNextLevelData() { + isEnded = true; + char buf[64]; + TR::getGameLevelFile(buf, level.version, nextLevel); + nextLevel = TR::LVL_MAX; + new Stream(buf, loadLevelAsync); + } + void update() { if (isEnded) return; @@ -2121,11 +2129,7 @@ struct Level : IGame { showStats = false; return; } - isEnded = true; - char buf[64]; - TR::getGameLevelFile(buf, level.version, nextLevel); - nextLevel = TR::LVL_MAX; - new Stream(buf, loadLevelAsync); + loadNextLevelData(); return; }