here_be_dragons/examples/builder_data.rs

38 lines
903 B
Rust

use here_be_dragons::{
filter::{
AreaStartingPosition, CellularAutomata, CullUnreachable, NoiseGenerator, XStart, YStart,
},
MapBuilder, MapFilter,
};
#[derive(Clone, Default)]
struct MyData {
value: usize,
}
struct IncrementData;
impl MapFilter<MyData> for IncrementData {
fn modify_map(
&self,
_rng: &mut rand::prelude::StdRng,
map: &here_be_dragons::Map<MyData>,
) -> here_be_dragons::Map<MyData> {
let mut map = map.clone();
map.data.value += 1;
map
}
}
fn main() {
let map = MapBuilder::<MyData>::new(20, 20)
.with(NoiseGenerator::uniform())
.with(CellularAutomata::new())
.with(AreaStartingPosition::new(XStart::CENTER, YStart::CENTER))
.with(CullUnreachable::new())
.with(Box::new(IncrementData))
.build();
println!("{:}\n{}", map, map.data.value);
}