diff options
Diffstat (limited to 'turbo/vehicles.scm')
-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)))) |