--[[ These are the default implementations of the override actions. If you want to add custom logic into your game you can define a "proc.lua" in your map dir. The following functions are also available via our C library: void c_update_player_pos (dx, dy) boolean c_player_can_move (dx, dy) boolean c_enemy_can_move (id, dx, dy) c_spawn_enemy (x, y) c_destroy_enemy (id) c_trigger_win() c_trigger_loss(msg) c_fatal(msg) --]] require "include.constants"; local algs = require "include.algs"; --- setup random --math.randomseed(os.time()) ---@param pressedKey number function onKeyPress(pressedKey) dx = 0 dy = 0 if (pressedKey == KEY_W) then dy = -1 elseif pressedKey == KEY_A then dx = -1 elseif pressedKey == KEY_S then dy = 1 elseif pressedKey == KEY_D then dx = 1 end c_move_player(dx, dy) end function onUpdate() enemies = c_get_enemies() -- external assert(type(enemies) == "table", "Enemies not a table") player = c_get_player_position() -- external assert(type(player) == "table", "Player is not a table") map = c_get_map(); assert(type(map) == "table", "map is not a table") for _, v in ipairs(enemies) do local next = algs.pathfind(v, player, map) c_move_enemy(v.id, next.dx, next.dy) end end --- allow for requiring in other files for usage return { onKeyPress = onKeyPress, onUpdate = onUpdate, }