From 5cf15ac3fd8895802c8b58dc67de6fe0600c980f Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 18 Apr 2022 12:22:24 +0100 Subject: [PATCH] Elide angle in game save file, when it's just North Signed-off-by: Ian Jackson --- src/gamestate.rs | 1 + src/spec.rs | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/src/gamestate.rs b/src/gamestate.rs index a957382a..68ea20ce 100644 --- a/src/gamestate.rs +++ b/src/gamestate.rs @@ -71,6 +71,7 @@ pub struct GPiece { // usual variable: gpc #[serde(default, skip_serializing_if="is_default")] pub pinned: bool, pub occult: PieceOccult, + #[serde(default, skip_serializing_if="PieceAngle::is_default")] pub angle: PieceAngle, pub gen: Generation, pub lastclient: ClientId, diff --git a/src/spec.rs b/src/spec.rs index 7c270133..669623ca 100644 --- a/src/spec.rs +++ b/src/spec.rs @@ -220,6 +220,12 @@ pub struct PiecesSpec { pub enum PieceAngle { Compass(CompassAngle), } +impl PieceAngle { + pub fn is_default(&self) -> bool { match self { + PieceAngle::Compass(a) => *a == CompassAngle::default(), + #[allow(unreachable_patterns)] _ => false, + } } +} #[derive(Debug,Copy,Clone,Eq,PartialEq)] #[derive(Default,Serialize,Deserialize)] -- 2.30.2