From 4cf72119121f1b6d3f85a5f4279b6fffaf8138e9 Mon Sep 17 00:00:00 2001 From: troido Date: Sun, 2 Feb 2020 21:14:39 +0100 Subject: add worldmessages --- src/worldmessages.rs | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/worldmessages.rs (limited to 'src/worldmessages.rs') diff --git a/src/worldmessages.rs b/src/worldmessages.rs new file mode 100644 index 0000000..1d00028 --- /dev/null +++ b/src/worldmessages.rs @@ -0,0 +1,50 @@ + +use serde_json::{Value, json}; +use super::util::ToJson; +// use serde::Serialize; + +// #[derive(Serialize)] +pub struct WorldMessage { + pub updates: Vec + +} + +impl ToJson for WorldMessage { + fn to_json(&self) -> Value { + let updates: Vec = self.updates.iter().map(|u| u.to_json()).collect(); + json!(["world", updates]) + } +} + +pub enum WorldUpdate { + Field(FieldMessage) +} + +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()]) + } + } +} + +pub struct FieldMessage { + width: i32, + height: i32, + field: Vec, + mapping: Vec> +} + + +impl ToJson for FieldMessage { + fn to_json(&self) -> Value { + json!({ + "width": self.width, + "height": self.height, + "field": self.field, + "mapping": self.mapping + }) + } +} + + -- cgit