diff options
author | Steph Enders <smenders@gmail.com> | 2022-06-16 16:14:18 -0400 |
---|---|---|
committer | Steph Enders <smenders@gmail.com> | 2022-06-16 16:16:34 -0400 |
commit | c57ae8c42c1f2f2ed576719c00cff5cf613fe650 (patch) | |
tree | 0e0c6533b099edbe2c283a8961b1b240d29ad904 /include/defaults.lua | |
parent | 750b308d70cf1c903812316deeb0a8c4befa37ce (diff) |
Added onUpdate logic to move the enemies etc
Created some algorithm logic for enemy movement
Allowed for default overrides
Diffstat (limited to 'include/defaults.lua')
-rw-r--r-- | include/defaults.lua | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/include/defaults.lua b/include/defaults.lua new file mode 100644 index 0000000..a6cefe5 --- /dev/null +++ b/include/defaults.lua @@ -0,0 +1,61 @@ +--[[ +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, +}
\ No newline at end of file |