aboutsummaryrefslogtreecommitdiff
path: root/turbo
diff options
context:
space:
mode:
authorGene Pasquet <dev@etenil.net>2024-05-22 10:30:58 +0100
committerGene Pasquet <dev@etenil.net>2024-05-22 10:30:58 +0100
commit0092c594e89e491df926693012f4cd70a85c461e (patch)
treefa5f1525f4b71649430e2d8d77d9e658e749286e /turbo
parentab5aac9c5907adf55320b5e8396689b971b7361b (diff)
Start extracting code into modules
Diffstat (limited to 'turbo')
-rw-r--r--turbo/vehicles.scm43
1 files changed, 43 insertions, 0 deletions
diff --git a/turbo/vehicles.scm b/turbo/vehicles.scm
new file mode 100644
index 0000000..618d808
--- /dev/null
+++ b/turbo/vehicles.scm
@@ -0,0 +1,43 @@
+(define-module (turbo vehicles)
+ #:use-module (srfi srfi-9)
+ #:export (make-vehicle
+ make-inactive-vehicle
+ vehicle-height
+ vehicle-length
+ vehicle-steering-speed
+ vehicle-id
+ vehicle-sprite
+ vehicle-position
+ vehicle-speed
+ vehicle-active?
+ set-vehicle-position!
+ set-vehicle-speed!
+ set-vehicle-active!
+ vehicle-hitbox
+ vehicle-safety-distance?))
+
+(define vehicle-height 45)
+(define vehicle-length 100)
+(define vehicle-steering-speed 4.0)
+
+(define-record-type <vehicle>
+ (make-vehicle id sprite position speed active?)
+ vechicle?
+ (id vehicle-id)
+ (sprite vehicle-sprite)
+ (position vehicle-position set-vehicle-position!)
+ (speed vehicle-speed set-vehicle-speed!)
+ (active? vehicle-active? set-vehicle-active!))
+
+(define (make-inactive-vehicle id tile initial-position)
+ (make-vehicle id tile initial-position 4 #f))
+
+(define (vehicle-hitbox vehicle-pos)
+ (rect (vec2-x vehicle-pos) (vec2-y vehicle-pos) vehicle-length vehicle-height))
+
+(define (vehicle-safety-distance? vehicle1 vehicle2)
+ (let ((vehicle1-x (vec2-x (vehicle-position vehicle1)))
+ (vehicle2-x (vec2-x (vehicle-position vehicle2))))
+ (> vehicle2-x
+ (+ (* 2 vehicle-length)
+ vehicle1-x))))