let pieces = ig.gs.pieces.iter().filter_map(
|(piece,gpc)| (|| Ok::<_,MgmtError>(if_chain!{
let &GPiece { pos, face, .. } = gpc;
- if let Some(pto) = ig.ipieces.get(piece);
+ if let Some(p) = 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::new_visible(
// visible id is internal one here
VisiblePieceId(piece.data())
);
- let bbox = pto.bbox_approx()?;
- let desc_html = pri.describe(gpc, pto);
+ let bbox = p.bbox_approx()?;
+ let desc_html = pri.describe(gpc, p);
Some(MgmtGamePieceVisibleInfo {
pos, face, desc_html, bbox
})
} else {
None
};
- let itemname = pto.itemname().to_string();
+ let itemname = p.itemname().to_string();
then {
Some(MgmtGamePieceInfo {
piece, itemname,
MGI::DeletePiece(piece) => {
let (ig, modperm, _) = cs.check_acl_modify_pieces(ag, ig)?;
- let pto = ig.ipieces.as_mut(modperm)
+ let p = ig.ipieces.as_mut(modperm)
.remove(piece).ok_or(ME::PieceNotFound)?;
let gs = &mut ig.gs;
let gpc = gs.pieces.as_mut(modperm).remove(piece);
let desc_html = if let Some(gpc) = &gpc {
let pri = PieceRenderInstructions::new_visible(default());
- pri.describe(gpc, &pto)
+ pri.describe(gpc, &p)
} else {
Html::lit("<piece partially missing from game state!>")
};
- if let Some(gpc) = gpc { pto.delete_hook(&gpc, gs); }
+ if let Some(gpc) = gpc { p.delete_hook(&gpc, gs); }
(U{ pcs: vec![(piece, PieceUpdateOp::Delete())],
log: vec![ LogEntry {
html: Html(format!("A piece {} was removed from the game",
pieces.sort_by_key(|(_,pr)| &pr.zlevel);
for (piece, gpc) in pieces {
- let pto = if let Some(pto) = ig.ipieces.get(piece) { pto }
+ let p = if let Some(pto) = ig.ipieces.get(piece) { pto }
else { continue /* was deleted */ };
let pri = piece_pri(&ig.gs.occults, player, gpl, piece, gpc);
let pri = if let Some(pri) = pri { pri } else { continue /*invisible*/};
- let defs = pri.make_defs(gpc, pto)?;
+ let defs = pri.make_defs(gpc, p)?;
alldefs.push((pri.vpid, defs));
- let desc = pri.describe(&gpc, pto);
+ let desc = pri.describe(&gpc, p);
let vangle = pri.angle(gpc).to_compass();
pinned: gpc.pinned,
angle: vangle,
desc,
- uos: &pri.ui_operations(gpc, pto.as_ref())?,
+ uos: &pri.ui_operations(gpc, p.as_ref())?,
};
let for_piece = SessionPieceContext {
pub wrc: WhatResponseToClientOp,
}
-#[typetag::serde] // usual variable: pto ("piece trait object")
+#[typetag::serde] // usual variable: p
pub trait PieceTrait: OutlineTrait + Send + Debug {
/// by convention, occult face is nfaces-1
// xxx this is no good, we need a central definition of the occult
occults: &GameOccults,
player: PlayerId,
gpl: &mut GPlayer,
- piece: PieceId, gpc: &GPiece, pto: &dyn PieceTrait,
+ piece: PieceId, gpc: &GPiece, p: &dyn PieceTrait,
did: &str,
) -> (Vec<LogEntry>, Option<Html>) {
let who_by = Html(htmlescape::encode_minimal(&gpl.nick));
"{} {} {}",
&who_by.0,
did,
- pri.describe(gpc, &pto).0,
+ pri.describe(gpc, &p).0,
))}];
(log, Some(who_by))
}
occults: &GameOccults,
player: PlayerId,
gpl: &mut GPlayer,
- piece: PieceId, gpc: &GPiece, pto: &dyn PieceTrait,
+ piece: PieceId, gpc: &GPiece, p: &dyn PieceTrait,
did: &str,
) -> Vec<LogEntry> {
- log_did_to_piece_whoby(occults,player,gpl,piece,gpc,pto,did)?.0
+ log_did_to_piece_whoby(occults,player,gpl,piece,gpc,p,did)?.0
}
// ---------- prepared updates, queued in memory ----------