aboutsummaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-06-20 14:00:38 +0200
committermetamuffin <metamuffin@disroot.org>2024-06-23 19:21:49 +0200
commit5bf50cd276a568f55fb1d5aedef96e614bed015b (patch)
tree94adf4dbed06a407e3b3223175d4e5a4e0a21e22 /server
parent7d721cae4241e01dd3f88b38a7d005d18d647454 (diff)
downloadhurrycurry-5bf50cd276a568f55fb1d5aedef96e614bed015b.tar
hurrycurry-5bf50cd276a568f55fb1d5aedef96e614bed015b.tar.bz2
hurrycurry-5bf50cd276a568f55fb1d5aedef96e614bed015b.tar.zst
generated recipes, adjust duration, rename items, other stuff
Diffstat (limited to 'server')
-rw-r--r--server/src/data.rs19
-rw-r--r--server/src/game.rs13
2 files changed, 22 insertions, 10 deletions
diff --git a/server/src/data.rs b/server/src/data.rs
index fd268cb5..9c200e5b 100644
--- a/server/src/data.rs
+++ b/server/src/data.rs
@@ -31,7 +31,10 @@ pub struct RecipeDecl {
#[derive(Debug, Clone, Deserialize)]
pub struct InitialMap {
map: Vec<String>,
- tiles: HashMap<String, String>,
+ tiles: HashMap<char, String>,
+ items: HashMap<char, String>,
+ chef_spawn: char,
+ customer_spawn: char,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
@@ -55,7 +58,7 @@ pub struct Gamedata {
pub item_names: Vec<String>,
pub tile_names: Vec<String>,
#[serde(skip)]
- pub initial_map: HashMap<IVec2, TileIndex>,
+ pub initial_map: HashMap<IVec2, (TileIndex, Option<ItemIndex>)>,
pub chef_spawn: Vec2,
pub customer_spawn: Vec2,
}
@@ -121,17 +124,17 @@ pub fn build_gamedata(
for (y, line) in map_in.map.iter().enumerate() {
for (x, tile) in line.trim().char_indices() {
let pos = IVec2::new(x as i32, y as i32);
- let mut tilename = map_in.tiles[&tile.to_string()].clone();
- if tilename == "chef-spawn" {
+ if tile == map_in.chef_spawn {
chef_spawn = pos.as_vec2();
- tilename = "floor".to_owned();
}
- if tilename == "customer-spawn" {
+ if tile == map_in.customer_spawn {
customer_spawn = pos.as_vec2();
- tilename = "floor".to_owned();
}
+ let tilename = map_in.tiles[&tile].clone();
+ let itemname = map_in.items.get(&tile).cloned();
let tile = TileIndex(register(&tile_names, tilename));
- initial_map.insert(pos, tile);
+ let item = itemname.map(|i| ItemIndex(register(&item_names, i)));
+ initial_map.insert(pos, (tile, item));
}
}
diff --git a/server/src/game.rs b/server/src/game.rs
index e4693e4a..973b257b 100644
--- a/server/src/game.rs
+++ b/server/src/game.rs
@@ -54,8 +54,17 @@ impl Game {
players: Default::default(),
tiles: Default::default(),
};
- for (&p, &t) in &gamedata.initial_map {
- g.tiles.insert(p, t.into());
+ for (&p, (tile, item)) in &gamedata.initial_map {
+ g.tiles.insert(
+ p,
+ Tile {
+ kind: *tile,
+ item: item.map(|i| Item {
+ kind: i,
+ active: None,
+ }),
+ },
+ );
}
g
}