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/components.rs | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) (limited to 'src/components.rs') diff --git a/src/components.rs b/src/components.rs index 3b17f0c..18de7f0 100644 --- a/src/components.rs +++ b/src/components.rs @@ -1,16 +1,38 @@ use specs::{ DenseVecStorage, + VecStorage, + FlaggedStorage, Component }; use super::controls::Control; +use super::pos::Pos; -#[derive(Component, Debug, Clone)] + +#[derive(Debug, Clone)] +pub struct Position{ + pub pos: Pos, + pub prev: Option +} +impl Position { + pub fn new(pos: Pos) -> Position { + Position{pos, prev: None} + } +} + +impl Component for Position { + type Storage = FlaggedStorage>; +} + +#[derive(Debug, Clone)] pub struct Visible { pub sprite: String, pub height: f32 } +impl Component for Visible { + type Storage = FlaggedStorage>; +} #[derive(Component, Debug)] pub struct Controller(pub Control); @@ -20,5 +42,11 @@ pub struct Blocking; #[derive(Component, Debug)] pub struct Played { - pub name: String + pub name: String, + pub is_new: bool +} +impl Played { + pub fn new(name: String) -> Played { + Played{name, is_new: true} + } } -- cgit