From 956f00d8f06b72df82018d9732978761e9f4603f Mon Sep 17 00:00:00 2001 From: CoCo_Sol007 Date: Thu, 4 Apr 2024 07:51:17 +0200 Subject: [PATCH] save --- crates/border-wars/src/map/spawnpoint.rs | 27 +++++++++++++++++------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/crates/border-wars/src/map/spawnpoint.rs b/crates/border-wars/src/map/spawnpoint.rs index 0cff0e8..f6036f9 100644 --- a/crates/border-wars/src/map/spawnpoint.rs +++ b/crates/border-wars/src/map/spawnpoint.rs @@ -30,29 +30,40 @@ fn init_spawn_point( }; if radius == 0 { + warn!("The map radius is 0 "); return; } - let ring: HashSet = - TilePosition::new(0, 0).ring(radius as usize / 2).collect(); + let target_ring = TilePosition::new(0, 0) + .ring(radius as usize / 2) + .collect::>(); let mut sorted_tiles = map .iter_mut() - .filter(|(_, p, _)| ring.contains(*p)) + .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(); - for (i, tile) in sorted_tiles.iter_mut().enumerate() { - let Some(player) = sorted_players.get(i) else { + 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 { + continue; + } + **tile = Tile::Castle; + let Some(player) = sorted_players.next() else { continue; }; - println!("{:?}", player); - *tile.2 = Tile::Castle; - commands.entity(tile.0).insert(Owner(Player::clone(player))); + commands + .entity(*entity) + .insert(Owner(Player::clone(player))); } } }