chiark / gitweb /
Elide angle in game save file, when it's just North
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 18 Apr 2022 11:22:24 +0000 (12:22 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 18 Apr 2022 12:35:29 +0000 (13:35 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/gamestate.rs
src/spec.rs

index a957382a27a7ed385aba1d00151ccfc44c044d8b..68ea20cec8d37c98c21044b7bf219571906f0a76 100644 (file)
@@ -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,
index 7c27013342a5a1356e5253a32aeb69449e10b09b..669623ca52ca7b17863db45a2488eb1fd9761473 100644 (file)
@@ -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)]