summaryrefslogtreecommitdiff
path: root/server/src/data/mod.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-08-14 13:05:45 +0200
committermetamuffin <metamuffin@disroot.org>2024-08-14 13:05:45 +0200
commit8253658aa03294fba2a43ba287ca1870a2b6b4cb (patch)
treeaa4f3460652b6825320eb70c5e7e2bef764ad08f /server/src/data/mod.rs
parent2a63061552ae15abd03bdf3efdeaf87be3d0ef3b (diff)
downloadhurrycurry-8253658aa03294fba2a43ba287ca1870a2b6b4cb.tar
hurrycurry-8253658aa03294fba2a43ba287ca1870a2b6b4cb.tar.bz2
hurrycurry-8253658aa03294fba2a43ba287ca1870a2b6b4cb.tar.zst
sort maps in data packet
Diffstat (limited to 'server/src/data/mod.rs')
-rw-r--r--server/src/data/mod.rs18
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,