chiark / gitweb /
VisiblePieceId uncensored before undo again
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 27 Jun 2020 12:26:00 +0000 (13:26 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 27 Jun 2020 12:26:00 +0000 (13:26 +0100)
src/bin/server.rs
src/gamestate.rs
src/keydata.rs

index 24e06b583f2335f2b9a432318f30277ce4696df1..119b6f0c02265e9e873adb31386a6ab90d96ce71 100644 (file)
@@ -77,7 +77,7 @@ fn session(form : Json<SessionForm>) -> Result<Template,RE> {
     for (gpid, pr) in &g.gs.pieces {
       let id : slotmap::KeyData = gpid.into();
       let pri = PieceRenderInstructions {
-        id : VisiblePieceId(id.as_ffi()),
+        id : VisiblePieceId { uncensored : id },
         face : pr.face,
       };
       defs.push(format!(r##"<g id="{}">{}</g>"##,
index f79bceee2ca45148149adc6e5334752258faf976..efb6f40f5bdcce7e1522b8d6012c4d8ed89ea653 100644 (file)
@@ -8,7 +8,7 @@ slotmap::new_key_type!{
 #[derive(Copy,Clone,Serialize,Deserialize)]
 #[serde(into="String")]
 #[serde(try_from="&str")]
-pub struct VisiblePieceId (pub u64);
+pub struct VisiblePieceId { pub uncensored : slotmap::KeyData }
 
 #[derive(Debug)]
 pub struct PieceRenderInstructions {
@@ -20,7 +20,8 @@ pub type VisiblePieceIdSvgIds = &'static [&'static str];
 
 impl Display for VisiblePieceId {
   fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
-    write!(f, "{}.{}", self.0 >> 32, self.0 & 0xffffffff)
+    let v = self.uncensored.as_ffi();
+    write!(f, "{}.{}", v >> 32, v & 0xffffffff)
   }
 }
 display_consequential_impls!{VisiblePieceId}
@@ -28,7 +29,9 @@ display_consequential_impls!{VisiblePieceId}
 impl TryFrom<&str> for VisiblePieceId {
   type Error = AE;
   #[throws(AE)]
-  fn try_from(s : &str) -> VisiblePieceId { VisiblePieceId(slotkey_parse(s)?) }
+  fn try_from(s : &str) -> VisiblePieceId {
+    VisiblePieceId{ uncensored : slotkey_parse(s)? }
+  }
 }
 
 impl PieceRenderInstructions {
index 452816b4de895dfbb2da8ea1efa296c424ddd9fe..f8edaa52528ccb250efde0ace63f061869e2247d 100644 (file)
@@ -18,10 +18,11 @@ macro_rules! display_consequential_impls {
 pub use crate::display_consequential_impls; // this is madness!
 
 #[throws(AE)]
-pub fn slotkey_parse(s : &str) -> u64 {
+pub fn slotkey_parse(s : &str) -> slotmap::KeyData {
   let e = || anyhow!("could not deserialise visibile piece id");
   let mut i = s.splitn(2,'.').map(|s| s.parse().map_err(|_| e()));
   let h : u32 = i.next().ok_or_else(e)??;
   let l : u32 = i.next().ok_or_else(e)??;
-  ((h as u64) << 32) | (l as u64)
+  let v = ((h as u64) << 32) | (l as u64);
+  slotmap::KeyData::from_ffi(v)
 }