summaryrefslogtreecommitdiff
path: root/include/defaults.lua
diff options
context:
space:
mode:
Diffstat (limited to 'include/defaults.lua')
-rw-r--r--include/defaults.lua61
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