From: Ian Jackson Date: Sat, 25 Jul 2020 19:42:41 +0000 (+0100) Subject: wip addpiece X-Git-Tag: otter-0.2.0~1263 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=1820a0576c750da2e4b06ca8b0c97fbf5cfb7df9;p=otter.git wip addpiece --- diff --git a/src/cmdlistener.rs b/src/cmdlistener.rs index 89cd3184..404ff021 100644 --- a/src/cmdlistener.rs +++ b/src/cmdlistener.rs @@ -72,6 +72,8 @@ fn decode_process_inner(s: &str)-> MgmtResponse { fn execute(cmd: MgmtCommand) -> MgmtResponse { match cmd { Noop { } => Fine { }, + AddPiece(_) => Fine { + }, // xxx } } diff --git a/src/commands.rs b/src/commands.rs index a5ba28d4..10cc788b 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -3,7 +3,8 @@ use crate::imports::*; #[derive(Debug,Serialize,Deserialize)] pub enum MgmtCommand { - Noop { } + Noop { }, + AddPiece(Box), } #[derive(Debug,Serialize,Deserialize)] diff --git a/src/gamestate.rs b/src/gamestate.rs index 843db46d..ce6633e3 100644 --- a/src/gamestate.rs +++ b/src/gamestate.rs @@ -94,8 +94,8 @@ pub struct PieceRenderInstructions { pub face : FaceId, } -#[typetag::deserialize(tag="type")] -pub trait PieceSpec { +#[typetag::serde(tag="type")] +pub trait PieceSpec : Debug { fn load(self) -> Result,SE>; } diff --git a/src/pieces.rs b/src/pieces.rs index ca127589..1ed2e366 100644 --- a/src/pieces.rs +++ b/src/pieces.rs @@ -122,7 +122,7 @@ impl SimpleShape { } } -#[derive(Deserialize)] +#[derive(Serialize,Deserialize)] #[derive(Debug,Default)] #[repr(transparent)] struct ColourSpec(String); @@ -136,19 +136,19 @@ impl TryFrom for Colour { } } -#[derive(Debug,Deserialize)] +#[derive(Debug,Serialize,Deserialize)] struct Disc { diam : Coord, faces : Vec, } -#[derive(Debug,Deserialize)] +#[derive(Debug,Serialize,Deserialize)] struct Square { size : Vec, faces : Vec, } -#[typetag::deserialize] +#[typetag::serde] impl PieceSpec for Disc { #[throws(SE)] fn load(self) -> Box { @@ -162,7 +162,7 @@ impl PieceSpec for Disc { } } -#[typetag::deserialize] +#[typetag::serde] impl PieceSpec for Square { #[throws(SE)] fn load(self) -> Box { diff --git a/src/spec.rs b/src/spec.rs index fde18386..aba45f45 100644 --- a/src/spec.rs +++ b/src/spec.rs @@ -3,21 +3,21 @@ use crate::imports::*; -#[derive(Deserialize)] +#[derive(Debug,Deserialize)] struct GameSpec { table : Pos, players : Vec, pieces : Vec, } -#[derive(Deserialize)] +#[derive(Debug,Deserialize)] struct PlayerSpec { nick: String, #[serde(flatten)] access: Box, } -#[derive(Deserialize)] +#[derive(Debug,Deserialize)] struct PiecesSpec { pos : Option, count : Option, @@ -27,7 +27,7 @@ struct PiecesSpec { } #[typetag::deserialize(tag="access")] -trait PlayerAccessSpec { +trait PlayerAccessSpec : Debug { #[throws(OE)] fn make_token(&self) -> RawToken { RawToken::new_random()? } fn deliver_token(&mut self) -> Result<(),OE>;