From: Ian Jackson Date: Mon, 18 Apr 2022 11:22:24 +0000 (+0100) Subject: Elide angle in game save file, when it's just North X-Git-Tag: otter-1.1.0~477 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=5cf15ac3fd8895802c8b58dc67de6fe0600c980f;p=otter.git Elide angle in game save file, when it's just North Signed-off-by: Ian Jackson --- 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)]