let mut uses = vec![];
let mut defs = vec![];
for (gpid, pr) in &g.gs.pieces {
- let id : slotmap::KeyData = gpid.into();
let pri = PieceRenderInstructions {
- id : VisiblePieceId { uncensored : id },
+ id : make_pieceid_visible(gpid),
face : pr.face,
};
defs.push(format!(r##"<g id="{}">{}</g>"##,
#[derive(Copy,Clone,Serialize,Deserialize)]
#[serde(into="String")]
#[serde(try_from="&str")]
-pub struct VisiblePieceId { pub uncensored : slotmap::KeyData }
+pub struct VisiblePieceId(pub slotmap::KeyData);
+
+pub fn make_pieceid_visible(p : PieceId) -> VisiblePieceId {
+ // xxx need to do censorship mapping here
+ let kd : slotmap::KeyData = p.into();
+ VisiblePieceId(kd)
+}
#[derive(Debug)]
pub struct PieceRenderInstructions {
impl Display for VisiblePieceId {
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
- let v = self.uncensored.as_ffi();
+ let v = self.0.as_ffi();
write!(f, "{}.{}", v >> 32, v & 0xffffffff)
}
}
impl TryFrom<&str> for VisiblePieceId {
type Error = AE;
#[throws(AE)]
- fn try_from(s : &str) -> VisiblePieceId {
- VisiblePieceId{ uncensored : slotkey_parse(s)? }
- }
+ fn try_from(s : &str) -> VisiblePieceId { VisiblePieceId(slotkey_parse(s)?) }
}
impl PieceRenderInstructions {