diff -r 168f44ef9b67 -r 5f00829c55ec rust/landgen/src/template_based.rs --- a/rust/landgen/src/template_based.rs Mon Feb 13 10:39:37 2023 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -use crate::{ - outline::OutlinePoints, outline_template::OutlineTemplate, LandGenerationParameters, - LandGenerator, -}; -use land2d::Land2D; - -pub struct TemplatedLandGenerator { - outline_template: OutlineTemplate, -} - -impl TemplatedLandGenerator { - pub fn new(outline_template: OutlineTemplate) -> Self { - Self { outline_template } - } -} - -impl LandGenerator for TemplatedLandGenerator { - fn generate_land>( - &self, - parameters: &LandGenerationParameters, - random_numbers: &mut I, - ) -> Land2D { - let mut land = Land2D::new(&self.outline_template.size, parameters.basic); - - let mut points = OutlinePoints::from_outline_template( - &self.outline_template, - land.play_box(), - land.size().size(), - random_numbers, - ); - - // mirror - if self.outline_template.can_mirror { - if let Some(b) = random_numbers.next() { - if b & 1 != 0 { - points.mirror(); - } - } - } - - // flip - if self.outline_template.can_flip { - if let Some(b) = random_numbers.next() { - if b & 1 != 0 { - points.flip(); - } - } - } - - if !parameters.skip_distort { - points.distort(parameters.distance_divisor, random_numbers); - } - - if !parameters.skip_bezier { - points.bezierize(5); - } - - points.draw(&mut land, parameters.zero); - - for p in &points.fill_points { - land.fill(*p, parameters.zero, parameters.zero) - } - - points.draw(&mut land, parameters.basic); - - land - } -}