aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGene Pasquet <dev@etenil.net>2024-05-26 10:40:07 +0100
committerGene Pasquet <dev@etenil.net>2024-05-26 10:40:07 +0100
commit1f52f437c6555b23d0359eccf25d364493cf69aa (patch)
treee896de07d24f8cdb43e594a887a57b00be022c93
parent838ba7744fbc4360722e215d1869784d53febb1c (diff)
Fix engine sound effects
-rw-r--r--TODO.org2
-rw-r--r--turbo.scm23
2 files changed, 19 insertions, 6 deletions
diff --git a/TODO.org b/TODO.org
index c91d2af..d883a04 100644
--- a/TODO.org
+++ b/TODO.org
@@ -27,6 +27,6 @@
** TODO Reduce lanes to 3 from level 10
*** TODO Handle vehicles lane change for reductions
** DONE Add music
-** STARTED Add sound effects
+** DONE Add sound effects
** TODO Draw sprites in batch for perf
** TODO Package as flatpack
diff --git a/turbo.scm b/turbo.scm
index 3bd3d99..d86598a 100644
--- a/turbo.scm
+++ b/turbo.scm
@@ -148,10 +148,25 @@
(define (level-min-speed)
(+ player-min-speed (* (- level-difficulty 1) 36)))
+(define car-gears 5)
+
+(define (gearing-range)
+ (/ (* 1.05 player-max-speed) car-gears))
+
+(define (speed->gear speed)
+ (let ((gear-range (gearing-range)))
+ (floor (/ speed gear-range))))
+
+(define (speed->engine-power speed)
+ (let* ((gear (speed->gear speed))
+ (speed-range (* gear (gearing-range))))
+ (/ (- speed speed-range) speed-range)))
+
(define (set-player-speed! new-speed)
(let* ((min-speed (level-min-speed))
(player-speed (max (min new-speed player-max-speed) min-speed))
- (pitch-factor (* 0.10 (- player-speed min-speed))))
+ (engine-power (speed->engine-power player-speed))
+ (pitch-factor (+ 1 engine-power)))
(set-vehicle-speed! player-car player-speed)
(set-source-pitch! engine-sound (+ 1 pitch-factor))))
@@ -208,7 +223,7 @@
(set-source-volume! music 0.5)
-(source-play music)
+; (source-play music)
(source-play engine-sound)
(define (update interval)
@@ -230,9 +245,7 @@
(let ((new-speed (+ (vehicle-speed player-car)
(* player-current-acceleration interval))))
- (set-vehicle-speed! player-car (min player-max-speed
- (max (level-min-speed)
- new-speed))))
+ (set-player-speed! new-speed))
(when (and game-started? (player-collides?))
(off-road-player)