if let Some(pinfo) = ig.ipieces.get(piece);
let visible = if ! piece_at_all_occluded(&ig.gs.occults, piece) {
// todo: something more sophisticated would be nice
- let pri = PieceRenderInstructions {
- id: VisiblePieceId(piece.data()),
- occluded: PriOccluded::Visible,
- };
+ let pri = PieceRenderInstructions::new_visible(
+ // visible id is internal one here
+ VisiblePieceId(piece.data())
+ );
let bbox = pinfo.bbox_approx()?;
let desc_html = pri.describe(p, pinfo);
Some(MgmtGamePieceVisibleInfo {
let gs = &mut ig.gs;
let pc = gs.pieces.as_mut(modperm).remove(piece);
let desc_html = if let Some(pc) = &pc {
- let pri = PieceRenderInstructions {
- id: default(),
- occluded: PriOccluded::Visible,
- };
+ let pri = PieceRenderInstructions::new_visible(default());
pri.describe(pc, &p)
} else {
Html::lit("<piece partially missing from game state!>")
let p = if let Some(p) = ig.ipieces.get(gpid) { p }
else { continue /* was deleted */ };
let defs = pri.make_defs(pr, p)?;
- alldefs.push((pri.id, defs));
+ alldefs.push((pri.vpid, defs));
let desc = pri.describe(&pr, p);
let vangle = pri.angle(pr).to_compass();
};
let for_piece = SessionPieceContext {
- id: pri.id,
+ id: pri.vpid,
pos: pr.pos,
info: serde_json::to_string(&for_info)
.map_err(|e| InternalError::JSONEncode(e))?,
#[derive(Debug,Clone)]
pub struct PieceRenderInstructions {
- pub id: VisiblePieceId,
+ pub vpid: VisiblePieceId,
pub occluded: PriOccluded,
}
pub enum PriOccluded { Visible /*, Occluded*/ }
impl PieceRenderInstructions {
+ pub fn new_visible(vpid: VisiblePieceId) -> PieceRenderInstructions {
+ PieceRenderInstructions { vpid, occluded: PriOccluded::Visible }
+ }
+
#[throws(IE)]
pub fn make_defs<'p,P>(&self, gpc: &GPiece, p: &P) -> Html
where P:Borrow<dyn PieceTrait + 'p>
let transform = gpc.angle.to_transform();
write!(&mut defs.0,
r##"<g id="piece{}" transform="{}" data-dragraise="{}">"##,
- pri.id, &transform.0, dragraise)?;
- p.svg_piece(&mut defs, gpc, pri.id)?;
+ pri.vpid, &transform.0, dragraise)?;
+ p.svg_piece(&mut defs, gpc, pri.vpid)?;
write!(&mut defs.0, r##"</g>"##)?;
write!(&mut defs.0,
r##"<path id="surround{}" d="{}"/>"##,
- pri.id, p.surround_path()?.0)?;
+ pri.vpid, p.surround_path()?.0)?;
defs
}
inner(self, gpc, p.borrow())?
piece: PieceId,
pc: &GPiece,
) -> PieceRenderInstructions {
- let vpiece = gpl.idmap.fwd_or_insert(piece);
+ let vpid = gpl.idmap.fwd_or_insert(piece);
let angle = pc.angle;
let occluded = PriOccluded::Visible; // xxx
trace!("{} {:?} => {} angle={:?}",
- player, piece, vpiece, angle);
- PieceRenderInstructions { id: vpiece, occluded }
+ player, piece, vpid, angle);
+ PieceRenderInstructions { vpid, occluded }
}
pub fn piece_at_all_occluded(
)?;
PreparedPieceUpdate {
- piece: pri.id,
+ piece: pri.vpid,
op,
}
}