rust/landgen/src/template_based.rs
changeset 14078 bf40b5f938b0
parent 14069 abb42ba345b6
child 14095 b2feb190e4bc
equal deleted inserted replaced
14077:5ade484f3351 14078:bf40b5f938b0
    21     fn generate_land<T: Copy + PartialEq, I: Iterator<Item = u32>>(
    21     fn generate_land<T: Copy + PartialEq, I: Iterator<Item = u32>>(
    22         &self,
    22         &self,
    23         parameters: LandGenerationParameters<T>,
    23         parameters: LandGenerationParameters<T>,
    24         random_numbers: &mut I,
    24         random_numbers: &mut I,
    25     ) -> Land2D<T> {
    25     ) -> Land2D<T> {
       
    26         let mut land = Land2D::new(self.outline_template.size, parameters.basic);
       
    27 
    26         let mut points =
    28         let mut points =
    27             OutlinePoints::from_outline_template(&self.outline_template, random_numbers);
    29             OutlinePoints::from_outline_template(&self.outline_template, land.play_box(), land.size(), random_numbers);
    28 
       
    29         let mut land = Land2D::new(points.size, parameters.basic);
       
    30 
       
    31         let top_left = Point::new(
       
    32             (land.width() - land.play_width() / 2) as i32,
       
    33             (land.height() - land.play_height()) as i32,
       
    34         );
       
    35 
       
    36         points.size = land.size();
       
    37 
       
    38         points.iter_mut().for_each(|p| *p += top_left);
       
    39 
    30 
    40         // mirror
    31         // mirror
    41         if self.outline_template.can_mirror {
    32         if self.outline_template.can_mirror {
    42             if let Some(b) = random_numbers.next() {
    33             if let Some(b) = random_numbers.next() {
    43                 if b & 1 != 0 {
    34                 if b & 1 != 0 {
    70         points.draw(&mut land, parameters.basic);
    61         points.draw(&mut land, parameters.basic);
    71 
    62 
    72         land
    63         land
    73     }
    64     }
    74 }
    65 }
    75 
       
    76 #[test()]
       
    77 fn points_test() {
       
    78     let mut points = OutlinePoints {
       
    79         islands: vec![vec![]],
       
    80         fill_points: vec![Point::new(1, 1)],
       
    81         size: Size::square(100),
       
    82     };
       
    83 
       
    84     points.iter_mut().for_each(|p| p.x = 2);
       
    85     assert_eq!(points.fill_points[0].x, 2);
       
    86 }