38 lines
903 B
Rust
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);
|
|
}
|