summaryrefslogtreecommitdiff
path: root/src/worldmessages.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/worldmessages.rs')
-rw-r--r--src/worldmessages.rs21
1 files changed, 7 insertions, 14 deletions
diff --git a/src/worldmessages.rs b/src/worldmessages.rs
index 8feb29f..8d9d8c8 100644
--- a/src/worldmessages.rs
+++ b/src/worldmessages.rs
@@ -1,5 +1,6 @@
use serde_json::{Value, json};
+use serde::Serialize;
use super::util::ToJson;
use super::pos::Pos;
@@ -18,35 +19,27 @@ impl ToJson for WorldMessage {
#[derive(Clone)]
pub enum WorldUpdate {
Field(FieldMessage),
- Pos(Pos)
+ Pos(Pos),
+ Change(Vec<(Pos, Vec<String>)>)
}
impl ToJson for WorldUpdate {
fn to_json(&self) -> Value {
match self {
- WorldUpdate::Field(msg) => Value::Array(vec![Value::String("field".to_string()), msg.to_json()]),
- WorldUpdate::Pos(pos) => Value::Array(vec![Value::String("playerpos".to_string()), pos.to_json()])
+ WorldUpdate::Field(msg) => json!(["field", msg]),
+ WorldUpdate::Pos(pos) => json!(["playerpos", pos]),
+ WorldUpdate::Change(changes) => json!(["changecells", changes])
}
}
}
-#[derive(Clone)]
+#[derive(Clone, Serialize)]
pub struct FieldMessage {
pub width: i32,
pub height: i32,
pub field: Vec<usize>,
pub mapping: Vec<Vec<String>>
}
-impl ToJson for FieldMessage {
- fn to_json(&self) -> Value {
- json!({
- "width": self.width,
- "height": self.height,
- "field": self.field,
- "mapping": self.mapping
- })
- }
-}