chiark / gitweb /
Game updates: Actually delete old aliases when resetting
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 13 May 2021 08:45:25 +0000 (09:45 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 13 May 2021 08:45:25 +0000 (09:45 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/cmdlistener.rs

index d5c16e26cea66d1f9ffc080ac7f1d7f05b57d069..2b057023b893219e98e3ca26310879db975bf7e9 100644 (file)
@@ -549,10 +549,17 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>(
         pieces, table_size, table_colour, pcaliases,
       } = toml_de::from_value(&spec)
         .map_err(|e: toml_de::Error| ME::TomlStructureError(e.to_string()))?;
+
+      // Clear out old stuff
       let mut insns = vec![];
+      for alias in ig.pcaliases.keys() {
+        insns.push(MGI::DeletePieceAlias(alias.clone()));
+      }
       for piece in ig.gs.pieces.keys() {
         insns.push(MGI::DeletePiece(piece));
       }
+
+      // Define new stuff
       for (alias, target) in pcaliases.into_iter() {
         insns.push(MGI::DefinePieceAlias{ alias, target });
       }