println!(r#"<th align="left"><kbd>{}</kbd></th>"#,
Html::from_txt(&spec.item).0);
println!(r#"<th align="left">{}</th>"#,
- pc.describe_html(None, &gpc_dummy)?.0);
+ pc.describe_html(&gpc_dummy)?.0);
let only1 = s.face_cols() == 1;
- let getpri = |face: FaceId| PieceRenderInstructions {
- id: default(),
- angle: VisiblePieceAngle(default()),
- face,
- occluded: PriOccluded::Visible,
- };
for facecol in 0..(if only1 { 1 } else { max_facecols }) {
let (face, inseveral) = if s.want_several() {
});
println!(r#">"#);
if face < (pc.nfaces() as usize) {
- let pri = getpri(face.into());
let viewport =
[bbox[0].clone(), size.clone()]
.iter().cloned()
&surround.0, &dasharray.0, HELD_SURROUND_COLOUR);
}
let mut html = Html("".into());
- pc.svg_piece(&mut html, &gpc_dummy, &pri)?;
+ let gpc = GPiece { face: face.into(), ..GPiece::dummy() };
+ pc.svg_piece(&mut html, &gpc, default())?;
println!("{}</svg>", html.0);
}
println!("</td>");
// #[throws] doesn't work here - fehler #todo
fn svg_piece(&self, f: &mut Html, gpc: &GPiece,
- pri: &PieceRenderInstructions) -> Result<(),IE>;
+ id: VisiblePieceId) -> Result<(),IE>;
- fn describe_html(&self, face: Option<FaceId>, gpc: &GPiece)
- -> Result<Html,IE>;
+ fn describe_html(&self, gpc: &GPiece) -> Result<Html,IE>;
fn delete_hook(&self, _p: &GPiece, _gs: &mut GameState)
-> ExecuteGameChangeUpdates {
write!(&mut defs.0,
r##"<g id="piece{}" transform="{}" data-dragraise="{}">"##,
pri.id, &transform.0, dragraise)?;
- p.svg_piece(&mut defs, gpc, pri)?;
+ p.svg_piece(&mut defs, gpc, pri.id)?;
write!(&mut defs.0, r##"</g>"##)?;
write!(&mut defs.0,
r##"<path id="surround{}" d="{}"/>"##,
#[throws(IE)]
pub fn describe_fallible(&self, gpc: &GPiece, p: &dyn PieceTrait) -> Html {
- p.describe_html(Some(gpc.face), gpc)?
+ p.describe_html(gpc)?
}
#[throws(InternalError)]
impl PieceTrait for Hand {
fn nfaces(&self) -> RawFaceId { 1 }
#[throws(IE)]
- fn svg_piece(&self, f: &mut Html, gpc: &GPiece,
- pri: &PieceRenderInstructions) {
- self.shape.svg_piece_raw(f, pri, &mut |f: &mut String| {
+ fn svg_piece(&self, f: &mut Html, gpc: &GPiece, _vpid: VisiblePieceId) {
+ self.shape.svg_piece_raw(f, gpc.face, &mut |f: &mut String| {
if_chain!{
if let Some(xdata) = gpc.xdata.get::<HandState>()?;
if let Some(owned) = &xdata.owner;
}
#[throws(IE)]
- fn describe_html(&self, _face: Option<FaceId>, gpc: &GPiece) -> Html {
+ fn describe_html(&self, gpc: &GPiece) -> Html {
let xdata = gpc.xdata.get()?;
self.describe_html_inner(xdata)
}
let bad = || internal_error_bydebug(&("missing", opiece, h.occid));
let oipc = ipieces.get(opiece).ok_or_else(bad)?;
let ogpc = gpieces.get(opiece).ok_or_else(bad)?;
- Ok::<_,IE>(oipc.describe_html(None, ogpc)?)
+ Ok::<_,IE>(oipc.describe_html(ogpc)?)
};
let most_obscure = most_obscure.unwrap_or(&OccK::Visible); // no players!
log_visible
}
OccK::Scrambled | OccK::Displaced{..} => {
- let face = ipc.nfaces() - 1; // xxx use other thing entirely
- let show = ipc.describe_html(Some(face.into()), gpc)?;
+ let _face = ipc.nfaces() - 1; // xxx use other thing entirely
+ let show = ipc.describe_html(gpc)?;
call_log_callback(Some(&show))?
},
OccK::Invisible => {
#[typetag::serde]
impl PieceTrait for SimpleShape {
#[throws(IE)]
- fn svg_piece(&self, f: &mut Html, _gpc: &GPiece,
- pri: &PieceRenderInstructions) {
- self.svg_piece_raw(f, pri, &mut |_|Ok(()))?;
+ fn svg_piece(&self, f: &mut Html, gpc: &GPiece, _vpid: VisiblePieceId) {
+ self.svg_piece_raw(f, gpc.face, &mut |_|Ok(()))?;
}
#[throws(IE)]
- fn describe_html(&self, face: Option<FaceId>, _gpc: &GPiece) -> Html {
+ fn describe_html(&self, gpc: &GPiece) -> Html {
Html(if_chain! {
- if let Some(face) = face;
+ if let face = gpc.face;
if let Some(colour) = self.colours.get(face);
then { format!("a {} {}", colour.0, self.desc.0) }
else { format!("a {}", self.desc.0) }
#[throws(IE)]
pub fn svg_piece_raw(
- &self, f: &mut Html, pri: &PieceRenderInstructions,
+ &self, f: &mut Html, face: FaceId,
stroke_attrs_hook: &mut dyn FnMut(&mut String) -> Result<(),IE>,
) {
let f = &mut f.0;
let ef = |f: &mut String, cmap: &ColourMap, attrname: &str, otherwise| {
- if let Some(colour) = cmap.get(pri.face) {
+ if let Some(colour) = cmap.get(face) {
write!(f, r##" {}="{}""##, attrname, colour.0)
} else {
write!(f, "{}", otherwise)
fn nfaces(&self) -> RawFaceId { self.faces.len().try_into().unwrap() }
#[throws(IE)]
- fn svg_piece(&self, f: &mut Html, _gpc: &GPiece,
- pri: &PieceRenderInstructions) {
- let face = &self.faces[pri.face];
+ fn svg_piece(&self, f: &mut Html, gpc: &GPiece, _vpid: VisiblePieceId) {
+ let face = &self.faces[gpc.face];
let svgd = &self.svgs[face.svg];
write!(&mut f.0,
r##"<g transform="scale({} {}) translate({} {})">{}</g>"##,
svgd.0)?;
}
#[throws(IE)]
- fn describe_html(&self, face: Option<FaceId>, _gpc: &GPiece) -> Html {
- self.descs[ match face {
- Some(face) => self.faces[face].desc,
- None => self.desc_hidden,
- }].clone()
+ fn describe_html(&self, gpc: &GPiece) -> Html {
+ self.descs[ self.faces[gpc.face].desc ].clone()
}
fn itemname(&self) -> &str { &self.itemname }
let ier = ItemEnquiryData {
itemname: k.clone(),
f0bbox,
- f0desc: loaded.describe_html(Some(default()), &GPiece::dummy())?,
+ f0desc: loaded.describe_html(&GPiece::dummy())?,
};
out.push(ier);
}