diff options
author | Gene Pasquet <dev@etenil.net> | 2024-05-22 10:30:58 +0100 |
---|---|---|
committer | Gene Pasquet <dev@etenil.net> | 2024-05-22 10:30:58 +0100 |
commit | 0092c594e89e491df926693012f4cd70a85c461e (patch) | |
tree | fa5f1525f4b71649430e2d8d77d9e658e749286e /turbo | |
parent | ab5aac9c5907adf55320b5e8396689b971b7361b (diff) |
Start extracting code into modules
Diffstat (limited to 'turbo')
-rw-r--r-- | turbo/vehicles.scm | 43 |
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)))) |