diff options
Diffstat (limited to 'turbo.scm')
-rw-r--r-- | turbo.scm | 49 |
1 files changed, 48 insertions, 1 deletions
@@ -1,12 +1,59 @@ (use-modules (chickadee graphics sprite) (chickadee) (chickadee graphics viewport) + (chickadee math vector) + (chickadee math rect) + (srfi srfi-9) (chickadee audio) (ice-9 pretty-print) (ice-9 format) - (turbo vehicles) (srfi srfi-1)) + +;;;; Vehicles module +(define vehicle-height 44) +(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) + (rect (vec2-x (vehicle-position vehicle)) + (vec2-y (vehicle-position vehicle)) + 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)))) + (> (abs (- vehicle2-x vehicle1-x)) + (+ (* 3 vehicle-length))))) + +(define (vehicle-speed- vehicle1 vehicle2) + (- (vehicle-speed vehicle1) (vehicle-speed vehicle2))) + +(define (vehicle-move! vehicle translation) + (set-vehicle-position! + vehicle + (vec2+ (vehicle-position vehicle) translation))) + +(define (vehicle-inactive? vehicle) + (not (vehicle-active? vehicle))) + +(define (vehicle= vehicle1 vehicle2) + (= (vehicle-id vehicle1) (vehicle-id vehicle2))) +;;;; End vehicles module + ;;;; Constants and variables (define the-font (load-bitmap-font "fonts/thick_8x8.xml")) |