2022-03-12 20:10:29 +00:00
|
|
|
use mapgen::{
|
|
|
|
filter::{
|
|
|
|
AreaStartingPosition, CellularAutomata, CullUnreachable, NoiseGenerator, XStart, YStart,
|
|
|
|
},
|
2022-03-14 02:14:59 +00:00
|
|
|
MapBuilder, MapFilter,
|
2022-03-12 20:10:29 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#[derive(Clone, Default)]
|
|
|
|
struct MyData {
|
|
|
|
value: usize,
|
|
|
|
}
|
|
|
|
|
|
|
|
struct IncrementData;
|
|
|
|
|
2022-03-14 02:14:59 +00:00
|
|
|
impl<D: Clone + Default> MapFilter<D> for IncrementData {
|
2022-03-12 20:10:29 +00:00
|
|
|
fn modify_map(&self, rng: &mut rand::prelude::StdRng, map: &mapgen::Map<D>) -> mapgen::Map<D> {
|
|
|
|
let 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())
|
2022-03-14 02:14:59 +00:00
|
|
|
.with(Box::new(IncrementData::<MyData>))
|
2022-03-12 20:10:29 +00:00
|
|
|
.build();
|
|
|
|
|
|
|
|
println!("{:}", &map);
|
|
|
|
}
|