aboutsummaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/src')
-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,