diff options
author | metamuffin <metamuffin@disroot.org> | 2024-08-14 13:05:45 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-08-14 13:05:45 +0200 |
commit | 8253658aa03294fba2a43ba287ca1870a2b6b4cb (patch) | |
tree | aa4f3460652b6825320eb70c5e7e2bef764ad08f /server/src | |
parent | 2a63061552ae15abd03bdf3efdeaf87be3d0ef3b (diff) | |
download | hurrycurry-8253658aa03294fba2a43ba287ca1870a2b6b4cb.tar hurrycurry-8253658aa03294fba2a43ba287ca1870a2b6b4cb.tar.bz2 hurrycurry-8253658aa03294fba2a43ba287ca1870a2b6b4cb.tar.zst |
sort maps in data packet
Diffstat (limited to 'server/src')
-rw-r--r-- | server/src/data/mod.rs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/server/src/data/mod.rs b/server/src/data/mod.rs index f7f184d2..60e2d2c9 100644 --- a/server/src/data/mod.rs +++ b/server/src/data/mod.rs @@ -21,6 +21,7 @@ pub mod demands; use crate::entity::{construct_entity, Entities, EntityDecl}; use anyhow::{anyhow, bail, Result}; use demands::generate_demands; +use hurrycurry_bot::algos::ALGO_CONSTRUCTORS; use hurrycurry_protocol::{ glam::{IVec2, Vec2}, Gamedata, ItemIndex, MapMetadata, Recipe, TileIndex, @@ -145,7 +146,7 @@ impl DataIndex { let recipes_in = serde_yml::from_str(&self.read_recipes(recipes).await?)?; Ok(build_data( - self.maps.clone(), + &self.maps, spec.clone(), map.to_string(), map_in, @@ -155,7 +156,7 @@ impl DataIndex { } pub fn build_data( - maps: HashMap<String, MapMetadata>, + maps: &HashMap<String, MapMetadata>, spec: String, map_name: String, map_in: InitialMap, @@ -273,6 +274,18 @@ pub fn build_data( let demands = generate_demands(&tiles_used, &items_used, &raw_demands, &recipes); + let bot_algos = ALGO_CONSTRUCTORS + .iter() + .map(|(name, _)| (*name).to_owned()) + .collect::<Vec<String>>(); + + let mut maps = maps + .iter() + .map(|(k, v)| (k.to_owned(), v.to_owned())) + .collect::<Vec<(String, MapMetadata)>>(); + maps.sort_unstable_by_key(|(_, m)| m.difficulty); + maps.sort_by_key(|(_, m)| m.players); + let item_names = reg.items.into_inner().unwrap(); let tile_names = reg.tiles.into_inner().unwrap(); let tile_collide = tile_names @@ -286,6 +299,7 @@ pub fn build_data( Ok(( Gamedata { + bot_algos, current_map: map_name, maps, tile_collide, |