[
$p->{z},
$p->{zg},
- (sprintf " sp!(%8s, %s, %3s), // %s %s%s\n",
+ (sprintf " sp!(%8s, %s, %-3s, %-23s, %6d ), %s\n",
"\"$id\"",
$p->{pinned} ? 'true' : 'false',
$p->{moveable} eq 'IfWresting' ? 'No' : $p->{moveable},
- $p->{z}, $p->{zg},
- $p->{held} ? " HELD $p->{held}" : '',
+ "\"$p->{z}\"", $p->{zg},
+ $p->{held} ? "// HELD $p->{held}" : '',
)
]
} keys %$data;
zupd: ZUS::Auto,
moveable: PieceMoveable::$moveable }
};
+ { $id:expr, $pinned:expr, $moveable:ident, $z:expr, $zg:expr } => {
+ StartPieceSpec { id: $id.try_into().unwrap(), pinned: $pinned,
+ zupd: ZUS::Spec(ZLevel {
+ z: $z.try_into().unwrap(),
+ zg: Generation($zg),
+ }),
+ moveable: PieceMoveable::$moveable }
+ };
}
#[derive(Debug,Clone)]
#[derive(Debug,Clone)]
pub enum ZUpdateSpec {
Auto,
+ Spec(ZLevel),
}
use ZUpdateSpec as ZUS;
impl ZUpdateSpec {
- pub fn next(&self, last: &mut zcoord::Mutable, lastg: &mut Generation)
+ pub fn next(self, last: &mut zcoord::Mutable, lastg: &mut Generation)
-> ZLevel {
match self {
ZUS::Auto => ZLevel {
z: last.increment().unwrap(),
zg: { lastg.increment(); *lastg },
},
+ ZUS::Spec(zl) => {
+ *last = zl.z.clone_mut();
+ *lastg = zl.zg;
+ zl
+ },
}
}
}