diff --git a/crates/border-wars/src/map/spawnpoint.rs b/crates/border-wars/src/map/spawnpoint.rs index f6036f9..0b46769 100644 --- a/crates/border-wars/src/map/spawnpoint.rs +++ b/crates/border-wars/src/map/spawnpoint.rs @@ -1,7 +1,6 @@ //! TODO use bevy::prelude::*; -use bevy::utils::hashbrown::HashSet; use super::generation::EndMapGeneration; use super::ownership::Owner; @@ -34,36 +33,29 @@ fn init_spawn_point( return; } - let target_ring = TilePosition::new(0, 0) - .ring(radius as usize / 2) - .collect::>(); - - let mut sorted_tiles = map - .iter_mut() - .filter(|(_, p, _)| target_ring.contains(*p)) - .collect::>(); - - println!("{}", sorted_tiles.len()); - - sorted_tiles.sort_by(|a, b| compare_spawnpoint_entity(a.1, b.1)); - let mut sorted_players = players.iter().collect::>(); sorted_players.sort_by(|a: &&Player, b: &&Player| compare_player(a, b)); let mut sorted_players = sorted_players.iter(); let number_players = sorted_players.len(); - for (i, (entity, _, tile)) in sorted_tiles.iter_mut().enumerate() { - if i % radius as usize * 3 / number_players != 0 { + for (i, target_pos) in TilePosition::new(0, 0) + .ring(radius as usize / 2) + .enumerate() + { + let Some((entity, _, mut tile)) = map.iter_mut().find(|(_, p, _)| **p == target_pos) + else { + continue; + }; + + if i % ((radius as usize * 3) / number_players) != 0 { continue; } - **tile = Tile::Castle; + *tile = Tile::Castle; let Some(player) = sorted_players.next() else { continue; }; - commands - .entity(*entity) - .insert(Owner(Player::clone(player))); + commands.entity(entity).insert(Owner(Player::clone(player))); } } }