builder_data/
builder_data.rs1use here_be_dragons::{
2 filter::{
3 AreaStartingPosition, CellularAutomata, CullUnreachable, NoiseGenerator, XStart, YStart,
4 },
5 MapBuilder, MapFilter,
6};
7
8#[derive(Clone, Default)]
9struct MyData {
10 value: usize,
11}
12
13struct IncrementData;
14
15impl MapFilter<MyData> for IncrementData {
16 fn modify_map(
17 &self,
18 _rng: &mut rand::prelude::StdRng,
19 map: &here_be_dragons::Map<MyData>,
20 ) -> here_be_dragons::Map<MyData> {
21 let mut map = map.clone();
22 map.data.value += 1;
23 map
24 }
25}
26
27fn main() {
28 let map = MapBuilder::<MyData>::new(20, 20)
29 .with(NoiseGenerator::uniform())
30 .with(CellularAutomata::new())
31 .with(AreaStartingPosition::new(XStart::CENTER, YStart::CENTER))
32 .with(CullUnreachable::new())
33 .with(Box::new(IncrementData))
34 .build();
35
36 println!("{:}\n{}", map, map.data.value);
37}