rust/landgen/src/wavefront_collapse/wavefront_collapse.rs
branchtransitional_engine
changeset 15923 d46ad15c6dec
parent 15922 da6b67f13c12
child 15924 9502611bffc1
equal deleted inserted replaced
15922:da6b67f13c12 15923:d46ad15c6dec
    43         &mut self,
    43         &mut self,
    44         map_size: &Size,
    44         map_size: &Size,
    45         seed_fn: F,
    45         seed_fn: F,
    46         random_numbers: &mut I,
    46         random_numbers: &mut I,
    47     ) {
    47     ) {
    48         self.grid = Vec2D::new(&map_size, Tile::Empty);
    48         self.grid = Vec2D::new(map_size, Tile::Empty);
    49 
    49 
    50         seed_fn(&mut self.grid);
    50         seed_fn(&mut self.grid);
    51 
    51 
    52         while self.collapse_step(random_numbers) {}
    52         while self.collapse_step(random_numbers) {}
    53     }
    53     }
    54 
    54 
    55     pub fn set_rules(&mut self, rules: Vec<CollapseRule>) {
    55     pub fn set_rules(&mut self, rules: Vec<CollapseRule>) {
    56         self.rules = rules;
    56         self.rules = rules;
    57     }
    57     }
    58 
    58 
    59     pub fn add_rule(&mut self, rule: CollapseRule) {
       
    60         self.rules.push(rule);
       
    61     }
       
    62 
       
    63     fn get_tile(&self, y: usize, x: usize) -> Tile {
    59     fn get_tile(&self, y: usize, x: usize) -> Tile {
    64         self.grid.get(y, x).map(|p| *p).unwrap_or_default()
    60         self.grid.get(y, x).copied().unwrap_or_default()
    65     }
    61     }
    66 
    62 
    67     fn collapse_step<I: Iterator<Item = u32>>(&mut self, random_numbers: &mut I) -> bool {
    63     fn collapse_step<I: Iterator<Item = u32>>(&mut self, random_numbers: &mut I) -> bool {
    68         let mut tiles_to_collapse = (usize::max_value(), Vec::new());
    64         let mut tiles_to_collapse = (usize::max_value(), Vec::new());
    69 
    65 
   117                             "Neighbour tiles are: {:?} {:?} {:?} {:?}",
   113                             "Neighbour tiles are: {:?} {:?} {:?} {:?}",
   118                             right_tile, bottom_tile, left_tile, top_tile
   114                             right_tile, bottom_tile, left_tile, top_tile
   119                         );
   115                         );
   120                         println!("Rules are: {:?}", self.rules);*/
   116                         println!("Rules are: {:?}", self.rules);*/
   121 
   117 
   122                         todo!("no collapse possible - what to do?")
   118                         //todo!("no collapse possible - what to do?")
   123                     }
   119                     }
   124                 }
   120                 }
   125             }
   121             }
   126         }
   122         }
   127 
   123