builder_data/
builder_data.rs

1use 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}