equal
deleted
inserted
replaced
3 use LandGenerationParameters; |
3 use LandGenerationParameters; |
4 use LandGenerator; |
4 use LandGenerator; |
5 |
5 |
6 use outline::OutlinePoints; |
6 use outline::OutlinePoints; |
7 use outline_template::OutlineTemplate; |
7 use outline_template::OutlineTemplate; |
8 |
|
9 |
8 |
10 pub struct TemplatedLandGenerator { |
9 pub struct TemplatedLandGenerator { |
11 outline_template: OutlineTemplate, |
10 outline_template: OutlineTemplate, |
12 } |
11 } |
13 |
12 |
23 parameters: LandGenerationParameters<T>, |
22 parameters: LandGenerationParameters<T>, |
24 random_numbers: &mut I, |
23 random_numbers: &mut I, |
25 ) -> Land2D<T> { |
24 ) -> Land2D<T> { |
26 let mut land = Land2D::new(self.outline_template.size, parameters.basic); |
25 let mut land = Land2D::new(self.outline_template.size, parameters.basic); |
27 |
26 |
28 let mut points = |
27 let mut points = OutlinePoints::from_outline_template( |
29 OutlinePoints::from_outline_template(&self.outline_template, land.play_box(), land.size(), random_numbers); |
28 &self.outline_template, |
|
29 land.play_box(), |
|
30 land.size(), |
|
31 random_numbers, |
|
32 ); |
30 |
33 |
31 // mirror |
34 // mirror |
32 if self.outline_template.can_mirror { |
35 if self.outline_template.can_mirror { |
33 if let Some(b) = random_numbers.next() { |
36 if let Some(b) = random_numbers.next() { |
34 if b & 1 != 0 { |
37 if b & 1 != 0 { |
44 points.flip(); |
47 points.flip(); |
45 } |
48 } |
46 } |
49 } |
47 } |
50 } |
48 |
51 |
49 points.distort(random_numbers); |
52 points.distort(parameters.distance_divisor, random_numbers); |
50 |
53 |
51 points.draw(&mut land, parameters.zero); |
54 points.draw(&mut land, parameters.zero); |
52 |
55 |
53 for p in &points.fill_points { |
56 for p in &points.fill_points { |
54 land.fill(*p, parameters.zero, parameters.zero) |
57 land.fill(*p, parameters.zero, parameters.zero) |