generated from tipragot/rust
Adding a map creation plugin #57
|
@ -41,25 +41,25 @@ fn generate_map(
|
||||||
mut event: EventReader<StartMapGeneration>,
|
mut event: EventReader<StartMapGeneration>,
|
||||||
mut end_map_event: EventWriter<EndMapGeneration>,
|
mut end_map_event: EventWriter<EndMapGeneration>,
|
||||||
mut commands: Commands,
|
mut commands: Commands,
|
||||||
mut noise: Local<Option<Perlin>>,
|
mut local_noise: Local<Option<Perlin>>,
|
||||||
mut spiral: Local<Option<HexSpiral<i32>>>,
|
mut local_spiral: Local<Option<HexSpiral<i32>>>,
|
||||||
) {
|
) {
|
||||||
// Handle map generation events.
|
// Handle map generation events.
|
||||||
for event in event.read() {
|
for event in event.read() {
|
||||||
*noise = Some(Perlin::new(event.seed));
|
*local_noise = Some(Perlin::new(event.seed));
|
||||||
*spiral = Some(TilePosition::new(0,0).spiral(event.radius as usize));
|
*local_spiral = Some(TilePosition::new(0,0).spiral(event.radius as usize));
|
||||||
}
|
}
|
||||||
|
|
||||||
if let (None, None) = (noise.as_ref(), spiral.as_mut()) {
|
let (Some(noise), Some(spiral)) = (local_noise.as_ref(), local_spiral.as_mut()) else {
|
||||||
return;
|
return;
|
||||||
}
|
};
|
||||||
if let Some(position) = spiral.as_mut().unwrap().next() {
|
if let Some(position) = spiral.next() {
|
||||||
let pixel_position = position.to_pixel_coordinates((0.2, 0.2));
|
let pixel_position = position.to_pixel_coordinates((0.2, 0.2));
|
||||||
commands.spawn((get_type(pixel_position, &noise.unwrap()), position as TilePosition));
|
commands.spawn((get_type(pixel_position, &noise), position as TilePosition));
|
||||||
} else {
|
} else {
|
||||||
end_map_event.send(EndMapGeneration);
|
end_map_event.send(EndMapGeneration);
|
||||||
*noise = None;
|
*local_noise = None;
|
||||||
*spiral = None;
|
*local_spiral = None;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CoCo_Sol marked this conversation as resolved
|
|||||||
|
|
Loading…
Reference in a new issue
This should be in the get_type function and the value shouldn't be hard coded