This commit is contained in:
Mikkel Troels Kongsted 2026-04-27 16:23:41 +02:00
parent 12fdcb312b
commit 5164ceee20

View File

@ -287,17 +287,13 @@ impl SegmentFactory {
} }
pub fn new_random_segment(&self, pos: V3) -> Segment { pub fn new_random_segment(&self, pos: V3) -> Segment {
use SegmentKind::*;
let choice: usize = random::next() as usize; let choice: usize = random::next() as usize;
let segment_kind = &[RandomObstacles, MovingObstacles, SlalomObstacles][choice % 3]; match choice % 3 {
0 => self.random_obstacle_segment(pos),
dbg!(segment_kind); 1 => self.moving_obstacle_segment(pos),
2 => self.slalom_obstacle_segment(pos),
match segment_kind { _ => unreachable!(),
SegmentKind::RandomObstacles => self.random_obstacle_segment(pos),
SegmentKind::MovingObstacles => self.moving_obstacle_segment(pos),
SegmentKind::SlalomObstacles => self.slalom_obstacle_segment(pos),
} }
} }
} }
@ -339,7 +335,7 @@ impl SegmentManager {
} }
} }
pub fn shuffle(&mut self) { pub fn add_new_segment(&mut self) {
self.segments.pop_front().unwrap(); self.segments.pop_front().unwrap();
let last = self.segments.back().unwrap(); let last = self.segments.back().unwrap();
self.segments self.segments
@ -349,7 +345,7 @@ impl SegmentManager {
last.pos.2 + self.segment_depth, last.pos.2 + self.segment_depth,
))); )));
} }
pub fn should_shuffle(&self, z: f64) -> bool { pub fn should_add_new_segment(&self, z: f64) -> bool {
let first = self.segments.front().unwrap(); let first = self.segments.front().unwrap();
first.pos.2 + self.segment_depth < z first.pos.2 + self.segment_depth < z
} }
@ -441,8 +437,11 @@ impl<R: Renderer> engine::Game<R> for Game {
self.segment_manager.update(&mut cx, delta_time); self.segment_manager.update(&mut cx, delta_time);
if self.segment_manager.should_shuffle(self.camera_pos.2) { if self
self.segment_manager.shuffle(); .segment_manager
.should_add_new_segment(self.camera_pos.2)
{
self.segment_manager.add_new_segment();
} }
} }