From 87a53f2a09a204ca9bcdde9c73db414c79075326 Mon Sep 17 00:00:00 2001 From: Steph Enders Date: Fri, 17 Jun 2022 11:19:51 -0400 Subject: Add scene controls and win/loss scenarios Setup ability to check collisions and transition game scene --- src/Api.h | 114 -------------------------------------------------------------- 1 file changed, 114 deletions(-) delete mode 100644 src/Api.h (limited to 'src/Api.h') diff --git a/src/Api.h b/src/Api.h deleted file mode 100644 index f9e7e8d..0000000 --- a/src/Api.h +++ /dev/null @@ -1,114 +0,0 @@ -#ifndef DNG_API_H -#define DNG_API_H - -#include "Level.h" -#include -#include - -extern std::shared_ptr lvl; - -static int c_get_player_position(lua_State *L) { - lua_createtable(L, 0, 2); - lua_pushnumber(L, lvl->player.y + 1); - lua_setfield(L, -2, "y"); - lua_pushnumber(L, lvl->player.x + 1); - lua_setfield(L, -2, "x"); - - return 1; -} - -static int c_move_player(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->playerCanStep(dx, dy)) { - lvl->player.x += dx; - lvl->player.y += dy; - res = true; - } - - lua_pushboolean(L, res); - - return 1; -} - -static int c_move_enemy(lua_State *L) { - // stack ordering - int dy = static_cast(lua_tonumber(L, -1)); - int dx = static_cast(lua_tonumber(L, -2)); - int id = static_cast(lua_tonumber(L, -3)); - - int i = lvl->getEnemyIndex(id); - // guard against enemy not found - if (i == -1) { - lua_pushboolean(L, false); - return 1; - } - - bool res = false; - if (lvl->enemyCanStep(lvl->enemyPositions[i], dx, dy)) { - lvl->enemyPositions[i].x += dx; - lvl->enemyPositions[i].y += dy; - res = true; - } - - lua_pushboolean(L, res); - - return 1; -} - -static int c_get_enemies(lua_State *L) { - lua_createtable(L, int(lvl->enemyPositions.size()), 0); - - int idx = 0; - - for (auto &pos : lvl->enemyPositions) { - lua_pushnumber(L, ++idx); - lua_createtable(L, 0, 3); - lua_pushnumber(L, pos.id); - lua_setfield(L, -2, "id"); - lua_pushnumber(L, pos.x + 1); - lua_setfield(L, -2, "x"); - lua_pushnumber(L, pos.y + 1); - lua_setfield(L, -2, "y"); - lua_settable(L, -3); - } - - return 1; -} - -static int c_spawn_enemy(lua_State *L) { return 1; } - -static int c_destroy_enemy(lua_State *L) { return 1; } - -static int c_get_map(lua_State *L) { - lua_createtable(L, int(lvl->map.size()), 0); - int idx = 0; - for (auto &vec : lvl->map) { - lua_pushnumber(L, ++idx); - lua_createtable(L, int(vec.size()), 0); - int inner_idx = 0; - for (auto &c : vec) { - lua_pushnumber(L, ++inner_idx); - lua_pushnumber(L, c == WALL_SPACE ? 1 : 0); - lua_rawset(L, -3); - } - lua_rawset(L, -3); - } - return 1; -} - -static void init_c_api(lua_State *L) { - lua_register(L, "c_move_player", c_move_player); - lua_register(L, "c_move_enemy", c_move_enemy); - lua_register(L, "c_spawn_enemy", c_spawn_enemy); - lua_register(L, "c_destroy_enemy", c_destroy_enemy); - lua_register(L, "c_get_enemies", c_get_enemies); - lua_register(L, "c_get_player_position", c_get_player_position); - lua_register(L, "c_get_map", c_get_map); -} - -#endif // DNG_API_H \ No newline at end of file -- cgit v1.2.3-54-g00ecf