diff --git a/src/game.h b/src/game.h index 4a0988a..5607d62 100644 --- a/src/game.h +++ b/src/game.h @@ -186,11 +186,18 @@ namespace Game { if (level->isEnded) return true; + #ifdef _DEBUG if (Input::down[ik0] && !level->inventory->isActive()) { level->inventory->toggle(0, Inventory::PAGE_LEVEL_STATS); Input::down[ik0] = false; } + if (Input::down[ikF]) { + level->flipMap(); + Input::down[ikF] = false; + } + #endif + if (Input::down[ik5] && !level->inventory->isActive()) { if (level->players[0]->canSaveGame()) level->saveGame(true, false); diff --git a/src/level.h b/src/level.h index b47f945..d84f921 100644 --- a/src/level.h +++ b/src/level.h @@ -71,34 +71,35 @@ struct Level : IGame { // IGame implementation ======== virtual void loadLevel(TR::LevelID id) { - if (nextLevel != TR::LVL_MAX) return; - sndWater = sndTrack = NULL; Sound::stopAll(); - - if (!level.isTitle() && loadSlot == -1 && !TR::isCutsceneLevel(level.id)) { - // update statistics info for current level - saveGame(false, true); - // save next level - level.id = TR::getNextSaveLevel(level.id); // get next not cutscene level - if (level.id != TR::LVL_MAX && !level.isTitle()) { - memset(&level.stats, 0, sizeof(level.stats)); - saveGame(false, false); - loadSlot = getSaveSlot(level.id, false); - } - } - nextLevel = id; } virtual void loadNextLevel() { + TR::LevelID id = TR::LVL_MAX; #ifdef _OS_WEB if (level.id == TR::LVL_TR1_2 && level.version != TR::VER_TR1_PC) { - loadLevel(TR::LVL_TR1_TITLE); + id = TR::LVL_TR1_TITLE; return; - } + } else #endif - loadLevel((level.isEnd() || level.isHome()) ? level.getTitleId() : TR::LevelID(level.id + 1)); + id = (level.isEnd() || level.isHome()) ? level.getTitleId() : TR::LevelID(level.id + 1); + + if (nextLevel == TR::LVL_MAX) { + if (!level.isTitle() && loadSlot == -1 && !TR::isCutsceneLevel(level.id)) { + // update statistics info for current level + saveGame(false, true); + // save next level + level.id = TR::getNextSaveLevel(level.id); // get next not cutscene level + if (level.id != TR::LVL_MAX && !level.isTitle()) { + memset(&level.stats, 0, sizeof(level.stats)); + saveGame(false, false); + loadSlot = getSaveSlot(level.id, false); + } + } + loadLevel(id); + } } virtual void invShow(int playerIndex, int page, int itemIndex = -1) { @@ -2435,11 +2436,6 @@ struct Level : IGame { Core::setViewport(Core::x, Core::y, Core::width, Core::height); camera->setup(true); - - if (Input::down[ikF]) { - flipMap(); - Input::down[ikF] = false; - } Debug::begin(); /* diff --git a/src/ui.h b/src/ui.h index 10154fd..1a49a7c 100644 --- a/src/ui.h +++ b/src/ui.h @@ -393,13 +393,13 @@ namespace UI { MeshBuilder *mesh = game->getMesh(); int seq = level->extra.glyphs; - int x = int(pos.x) + getLeftOffset(text, align, width); + int x = int(pos.x) + getLeftOffset(text, align, int(width)); int y = int(pos.y); while (char c = *text++) { if (c == '@') { - x = int(pos.x) + getLeftOffset(text, align, width); + x = int(pos.x) + getLeftOffset(text, align, int(width)); y += 16; continue; }