From 53f358f73c37e86f4db9e7bd7af309697dc7237e Mon Sep 17 00:00:00 2001 From: troido Date: Mon, 3 Feb 2020 20:16:09 +0100 Subject: only send changed cells, not the whole field each time --- src/pos.rs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'src/pos.rs') diff --git a/src/pos.rs b/src/pos.rs index df63570..12c71bb 100644 --- a/src/pos.rs +++ b/src/pos.rs @@ -1,18 +1,17 @@ - use std::ops::Add; use serde_json::{Value, json}; -use specs::{Component, VecStorage}; +use serde::{Serialize, Serializer, ser::SerializeTuple}; use super::util::{clamp, ToJson}; -#[derive(Component, Debug, Hash, PartialEq, Eq, Clone, Copy)] -#[storage(VecStorage)] +#[derive(Debug, Hash, PartialEq, Eq, Clone, Copy)] pub struct Pos { pub x: i32, pub y: i32 } + impl Pos { pub fn new(x: i32, y: i32) -> Pos { @@ -27,6 +26,19 @@ impl Pos { } } + +impl Serialize for Pos { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + let mut tup = serializer.serialize_tuple(2)?; + tup.serialize_element(&self.x)?; + tup.serialize_element(&self.y)?; + tup.end() + } +} + impl Add for Pos { type Output = Pos; -- cgit