/** * Copyright (c) 2025 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #pragma once #include "script/scriptcontext.h" #include "debug/debug.h" #include "assert/assert.h" #include "rpg/overworld/map.h" int moduleMapLoad(lua_State *L) { assertNotNull(L, "Lua state cannot be NULL"); if(!lua_isstring(L, 1)) { luaL_error(L, "Expected string map filename"); return 0; } // Potentially provide up to 3 params chunkpos_t initial = { .x = 0, .y = 0, .z = 0 }; if(lua_isnumber(L, 2)) { initial.x = (chunkunit_t)luaL_checkinteger(L, 2); } if(lua_isnumber(L, 3)) { initial.y = (chunkunit_t)luaL_checkinteger(L, 3); } if(lua_isnumber(L, 4)) { initial.z = (chunkunit_t)luaL_checkinteger(L, 4); } // Load the map. errorret_t ret = mapLoad(luaL_checkstring(L, 1), initial); if(ret.code != ERROR_OK) { luaL_error(L, "Failed to load map"); errorCatch(errorPrint(ret)); return 0; } return 0; } void moduleMapSystem(scriptcontext_t *context) { assertNotNull(context, "Script context cannot be NULL"); scriptContextRegFunc(context, "mapLoad", moduleMapLoad); }