Adding a map creation plugin #57

Merged
CoCo_Sol merged 39 commits from map-generation into main 2024-02-21 20:10:03 +00:00
Showing only changes of commit 74d81721c7 - Show all commits

View file

@ -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
Review

This should be in the get_type function and the value shouldn't be hard coded

This should be in the get_type function and the value shouldn't be hard coded