diff options
| author | troido <troido@protonmail.com> | 2020-02-02 21:14:39 +0100 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-02-02 21:14:39 +0100 |
| commit | 4cf72119121f1b6d3f85a5f4279b6fffaf8138e9 (patch) | |
| tree | a34c1138d747bd3861bd9374a7c833f23514bdfc /src/worldmessages.rs | |
| parent | 5e414fb932eee5aa90d2181cada3c6cd32e4ec09 (diff) | |
add worldmessages
Diffstat (limited to 'src/worldmessages.rs')
| -rw-r--r-- | src/worldmessages.rs | 50 |
1 files changed, 50 insertions, 0 deletions
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<WorldUpdate> + +} + +impl ToJson for WorldMessage { + fn to_json(&self) -> Value { + let updates: Vec<Value> = 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<usize>, + 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 + }) + } +} + + |
