aboutsummaryrefslogtreecommitdiff
path: root/server/data/src/entities.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/data/src/entities.rs')
-rw-r--r--server/data/src/entities.rs23
1 files changed, 10 insertions, 13 deletions
diff --git a/server/data/src/entities.rs b/server/data/src/entities.rs
index 68dbe479..04d4e1c5 100644
--- a/server/data/src/entities.rs
+++ b/server/data/src/entities.rs
@@ -16,11 +16,12 @@
*/
-use hurrycurry_protocol::glam::{IVec2, Vec2};
+use hurrycurry_protocol::{
+ ItemIndex, TileIndex,
+ glam::{IVec2, Vec2},
+};
use serde::{Deserialize, Serialize};
-use crate::ItemTileRegistry;
-
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum EntityDecl {
@@ -39,6 +40,8 @@ pub enum EntityDecl {
},
Customers {
scaling_factor: Option<f32>,
+ #[serde(default = "default_item")]
+ unknown_order: ItemIndex,
},
Map {
name: String,
@@ -49,6 +52,7 @@ pub enum EntityDecl {
Gate {
condition: GateCondition,
pos: IVec2,
+ blocker_tile: TileIndex,
},
Tram {
length: usize,
@@ -68,16 +72,6 @@ pub enum EntityDecl {
},
}
-impl EntityDecl {
- pub(crate) fn run_register(&self, reg: &ItemTileRegistry) {
- match self {
- Self::Gate { .. } => drop(reg.register_tile("fence".into())),
- Self::Customers { .. } => drop(reg.register_item("unknown-order".into())),
- _ => (),
- }
- }
-}
-
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "kebab-case")]
pub enum GateCondition {
@@ -97,3 +91,6 @@ pub struct EnvironmentEffect {
fn default_onoff() -> f32 {
40.
}
+fn default_item() -> ItemIndex {
+ ItemIndex(usize::MAX)
+}