chiark / gitweb /
jstest: Copy zlevels from game into jst-lower
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 18 Jul 2021 20:45:38 +0000 (21:45 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 18 Jul 2021 21:05:12 +0000 (22:05 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
jstest/from-pieces
jstest/jst-lower.rs

index da644ead109c7142039ecd14cbea94e18e6e8fc6..9588a7cbb8c1cd23462ccfd48107737b055e4c61 100755 (executable)
@@ -20,12 +20,12 @@ my @pieces = map {
   [
    $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;
index e390771c431d323bd1a013179341c6fa7ed446cb..621c2991a144c78650e16a54936c5dbe23fa8268 100644 (file)
@@ -29,6 +29,14 @@ macro_rules! sp {
                      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)]
@@ -65,17 +73,23 @@ pub struct TestsAccumulator {
 #[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
+      },
     }
   }
 }