From 66117d14aada8a900c495ad61fe7f1a4f160e0df Mon Sep 17 00:00:00 2001
From: Ategon <benjamin@barbeau.net>
Date: Tue, 27 Aug 2024 19:49:56 -0400
Subject: [PATCH] Add track weights

---
 src/main.gd | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/main.gd b/src/main.gd
index 0bc2ed9..679cce1 100644
--- a/src/main.gd
+++ b/src/main.gd
@@ -52,7 +52,18 @@ func _get_track():
 	if _tracks.size() == 0:
 		return null
 	
-	return _tracks.pick_random()
+	var weight = _tracks.reduce(func(accum, track): return accum + (track.weight if track.has("weight") else 1), 0)
+	
+	var rand = randf() * weight
+	var current_weight = 0
+	
+	for track in _tracks:
+		current_weight += track.weight if track.has("weight") else 1
+		
+		if current_weight >= rand:
+			return track
+	
+	return null