aboutsummaryrefslogtreecommitdiff
path: root/turbo/vehicles.scm
blob: 618d80821bcaf5d6a57941f2b0d8ea9c6fad1879 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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))))