aboutsummaryrefslogtreecommitdiff
path: root/src/macroknight/systems.hy
diff options
context:
space:
mode:
Diffstat (limited to 'src/macroknight/systems.hy')
-rw-r--r--src/macroknight/systems.hy20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/macroknight/systems.hy b/src/macroknight/systems.hy
new file mode 100644
index 0000000..2762247
--- /dev/null
+++ b/src/macroknight/systems.hy
@@ -0,0 +1,20 @@
+;; Define systems here
+(setv GRAVITY 5)
+
+(defn apply-gravity [entity entities]
+ (when (not entity.fixed)
+ (.move entity #(0 GRAVITY))))
+
+(defn apply-collisions [entity entities]
+ (for [ent entities]
+ (when (and (!= ent.id entity.id)
+ (.colliderect entity.rect ent.rect)
+ (not entity.fixed))
+ (let [collision-rect (.clip entity.rect ent.rect)
+ move-x (get entity.total-move 0)
+ move-y (get entity.total-move 1)]
+ (when (!= move-x 0)
+ (.move entity #((* (if (> move-x 0) -1 1) collision-rect.width) 0)))
+ (when (!= move-y 0)
+ (.move entity #(0 (* (if (> move-y 0) -1 1) collision-rect.height)))))
+ (.ground entity))))