49 lines
1.2 KiB
C
49 lines
1.2 KiB
C
/**
|
|
* 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);
|
|
} |