diff -r 31cc1e450273 -r 1860852892c0 rust/landgen/src/maze.rs --- a/rust/landgen/src/maze.rs Tue Sep 10 13:56:51 2024 +0200 +++ b/rust/landgen/src/maze.rs Tue Sep 10 18:21:31 2024 +0200 @@ -4,12 +4,12 @@ use land2d::Land2D; pub struct MazeTemplate { - width: usize, - height: usize, - cell_size: usize, - inverted: bool, - distortion_limiting_factor: u32, - braidness: usize, + pub width: usize, + pub height: usize, + pub cell_size: usize, + pub inverted: bool, + pub distortion_limiting_factor: u32, + pub braidness: usize, } pub struct MazeLandGenerator { @@ -48,7 +48,7 @@ let mut step_done = vec![false; num_steps]; let mut last_cell = vec![Point::diag(0); num_steps]; let mut came_from_pos = vec![0; num_steps]; - let mut came_from = vec![vec![Point::diag(0); num_cells.area()]; num_steps]; + let mut came_from = vec![vec![Point::diag(0); num_steps]; num_cells.area()]; let mut done = false; let mut seen_list = vec![vec![None as Option; seen_cells.width]; seen_cells.height]; @@ -66,22 +66,21 @@ / num_steps; last_cell[current_step] = Point::new( (x + current_step * seen_cells.width / num_steps) as i32, - random_numbers.next().unwrap_or_default() as i32 / num_steps as i32, + random_numbers.next().unwrap_or_default() as i32 % seen_cells.height as i32, ); } let see_cell = |current_step: usize, start_dir: Point, seen_list: &mut Vec>>, x_walls: &mut Vec>, y_walls: &mut Vec>, last_cell: &mut Vec, came_from: &mut Vec>, came_from_pos: &mut Vec| { + let mut dir = start_dir; loop { - let p = last_cell[current_step]; - seen_list[p.y as usize][p.x as usize] = Some(current_step); - - let mut dir = start_dir; + let p = dbg!(last_cell[current_step]); + seen_list[p.y as usize][p.x as usize] = Some(dbg!(current_step)); let next_dir_clockwise = true;//random_numbers.next().unwrap_or_default() % 2 == 0; for _ in 0..5 { - let sp = p + dir; + let sp = dbg!(p) + dbg!(dir); let when_seen = if sp.x < 0 || sp.x >= seen_cells.width as i32 @@ -130,9 +129,10 @@ if dir.x == 1 { y_walls[p.y as usize][p.x as usize] = false; } - last_cell[current_step] = p + dir; + last_cell[current_step] = dbg!(sp); came_from_pos[current_step] += 1; came_from[came_from_pos[current_step] as usize][current_step] = p; + return true; } _ => { return true; @@ -277,7 +277,7 @@ OutlinePoints { islands, - fill_points: vec![], + fill_points: vec![Point::new(1, 1 + off_y)], size: *size, play_box, intersections_box,