From be34dd0cb75c4bdad209122a321cfad7e982230e Mon Sep 17 00:00:00 2001 From: Gleb Mazovetskiy Date: Sun, 12 Nov 2023 18:52:04 +0000 Subject: [PATCH] Add `dev.level.seed()` debug command --- Source/lua/modules/dev/level.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Source/lua/modules/dev/level.cpp b/Source/lua/modules/dev/level.cpp index 002e57be4..be3d6b6d0 100644 --- a/Source/lua/modules/dev/level.cpp +++ b/Source/lua/modules/dev/level.cpp @@ -1,6 +1,7 @@ #ifdef _DEBUG #include "lua/modules/dev/level.hpp" +#include #include #include #include @@ -24,9 +25,7 @@ namespace { std::string ExportDun() { - std::string levelName = StrCat(currlevel, "-", glSeedTbl[currlevel], ".dun"); - std::string cmdLabel = "[exportdun] "; - + const std::string levelName = StrCat(currlevel, "-", glSeedTbl[currlevel], ".dun"); FILE *dunFile = OpenFile(levelName.c_str(), "ab"); WriteLE16(dunFile, DMAXX); @@ -108,6 +107,15 @@ std::string DebugCmdResetLevel(uint8_t level, std::optional seed) return StrCat("Successfully reset level ", level, "."); } +std::string DebugCmdLevelSeed(std::optional level) +{ + constexpr size_t NumLevels = sizeof(glSeedTbl) / sizeof(glSeedTbl[0]); + if (level.has_value() && *level >= NumLevels) { + return StrCat("level out of range, max: ", NumLevels - 1); + } + return StrCat(glSeedTbl[level.value_or(currlevel)]); +} + } // namespace sol::table LuaDevLevelModule(sol::state_view &lua) @@ -116,6 +124,7 @@ sol::table LuaDevLevelModule(sol::state_view &lua) SetDocumented(table, "exportDun", "()", "Save the current level as a dun-file.", &ExportDun); SetDocumented(table, "map", "", "Automap-related commands.", LuaDevLevelMapModule(lua)); SetDocumented(table, "reset", "(n: number, seed: number = nil)", "Resets specified level.", &DebugCmdResetLevel); + SetDocumented(table, "seed", "(level: number = nil)", "Get the seed of the current or given level.", &DebugCmdLevelSeed); SetDocumented(table, "warp", "", "Warp to a level or a custom map.", LuaDevLevelWarpModule(lua)); return table; }