#ifndef DNG_API_H #define DNG_API_H #include "Level.h" #include #include extern std::shared_ptr lvl; static int c_update_player_pos(lua_State* L) { // stack ordering int dy = static_cast(lua_tonumber(L, -1)); int dx = static_cast(lua_tonumber(L, -2)); bool res = false; if (lvl->canStep(dx, dy)) { lvl->player.x += dx; lvl->player.y += dy; res = true; } lua_pushboolean(L, res); return 1; } static int c_player_can_move(lua_State* L) { // stack ordering int dy = static_cast(lua_tonumber(L, -1)); int dx = static_cast(lua_tonumber(L, -2)); bool res = lvl->canStep(dx, dy); lua_pushboolean(L, res); return 1; } static int c_enemy_can_move(lua_State* L) { return 1; } static int c_spawn_enemy(lua_State* L) { return 1; } static int c_destroy_enemy(lua_State* L) { return 1; } static void init_c_api(lua_State* L) { lua_register(L, "c_update_player_pos", c_update_player_pos); lua_register(L, "c_player_can_move", c_player_can_move); lua_register(L, "c_enemy_can_move", c_enemy_can_move); lua_register(L, "c_spawn_enemy", c_spawn_enemy); lua_register(L, "c_destroy_enemy", c_destroy_enemy); } #endif // DNG_API_H