want_let!{ Some(gpc) = gs.pieces.get_mut(piece); else continue; }
gpc.pos = pos;
gpc.zlevel = zlevel;
- updates.push((piece, PUOs::Simple(PUO::Move(pos))));
- updates.push((piece, PUOs::Simple(PUO::SetZLevel(()))));
+ updates.push((piece, PUOs::Simple(PUO::MoveQuiet(pos))));
+ updates.push((piece, PUOs::Simple(PUO::SetZLevelQuiet(()))));
}
updates
use PriOG::*;
if matches_doesnot!(
op,
- = Move(_) | SetZLevel(_),
+ = Move(_) | MoveQuiet(_) | SetZLevel(_) | SetZLevelQuiet(_),
! Delete() | Insert(_) | Modify(_) | ModifyQuiet(_),
) {
match self.occulted {
Modify(NS),
ModifyQuiet(NS),
Move(Pos),
+ MoveQuiet(Pos),
SetZLevel(ZL),
+ SetZLevelQuiet(ZL),
}
pub type UpdateFromOpComplex = (
Modify(ns) => Some(ns),
ModifyQuiet(ns) => Some(ns),
Move(_) => None,
+ MoveQuiet(_) => None,
SetZLevel(_) => None,
+ SetZLevelQuiet(_) => None,
}
}
pub fn try_map<NS2, ZC2, E:Error,
Modify(ns) => Modify(f(ns)?),
ModifyQuiet(ns) => ModifyQuiet(f(ns)?),
Move(pos) => Move(pos),
+ MoveQuiet(pos) => MoveQuiet(pos),
SetZLevel(zl) => SetZLevel(g(zl)?),
+ SetZLevelQuiet(zl) => SetZLevelQuiet(g(zl)?),
})
}
pub fn map_ref(&self) -> PieceUpdateOp<&NS,&ZC> {
Modify(ns) => Modify(ns),
ModifyQuiet(ns) => ModifyQuiet(ns),
Move(pos) => Move(*pos),
+ MoveQuiet(pos) => MoveQuiet(*pos),
SetZLevel(zl) => SetZLevel(zl),
+ SetZLevelQuiet(zl) => SetZLevelQuiet(zl),
}
}
pub fn map<NS2,ZC2,
Modify(_) => None,
ModifyQuiet(_) => None,
Move(_) => None,
+ MoveQuiet(_) => None,
SetZLevel(l) => Some(l.borrow().zg),
+ SetZLevelQuiet(l) => Some(l.borrow().zg),
}
}
}
piece_set_pos_core(p, info[0], info[1]);
}
+pieceops.MoveQuiet = <PieceHandler>function
+(piece,p, info: Pos ) {
+ piece_checkconflict_nrda(piece,p,false);
+ piece_set_pos_core(p, info[0], info[1]);
+}
+
pieceops.SetZLevel = <PieceHandler>function
(piece,p, info: { z: ZCoord, zg: Generation }) {
piece_note_moved(piece,p);
piece_set_zlevel_from(piece,p,info);
}
+pieceops.SetZLevelQuiet = <PieceHandler>function
+(piece,p, info: { z: ZCoord, zg: Generation }) {
+ piece_set_zlevel_from(piece,p,info);
+}
+
function piece_set_zlevel_from(piece: PieceId, p: PieceInfo,
info: { z: ZCoord, zg: Generation }) {
piece_set_zlevel(piece,p, (oldtop_piece)=>{