chiark / gitweb /
clock: Make it Moveable IfWresting if claimed
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 20 Mar 2021 23:18:03 +0000 (23:18 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 20 Mar 2021 23:18:03 +0000 (23:18 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/clock.rs

index 6d099e1a89d4e11fffcfb36582c7d04d95e22fb2..0d2c9a1cce228908eac50784ccc652912b36410d 100644 (file)
@@ -654,6 +654,16 @@ impl PieceTrait for Clock {
       }
     };
 
+    let gplayers = &gs.players;
+    let moveable =
+      if state.users.iter().any(
+        |ust| gplayers.get(ust.player).is_some()
+      ) {
+        PieceMoveable::IfWresting
+      } else {
+        PieceMoveable::Yes
+      };
+
     state.do_start_or_stop(piece, was_current, was_implied_running,
                            held, &self.spec, ig)
       .map_err(|e| APOE::ReportViaResponse(e.into()))?;
@@ -663,6 +673,8 @@ impl PieceTrait for Clock {
         error!("failed to log: {:?}", &e);
         vec![LogEntry { html: Html::lit("&lt;failed to log&gt;") }]
       });
+
+    gpc.moveable = moveable;
     
     match howish {
       Unpredictable => {