chiark / gitweb /
clock: Reset it on loading
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 20 Mar 2021 16:56:36 +0000 (16:56 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 20 Mar 2021 21:42:48 +0000 (21:42 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/clock.rs

index a924e536aecc9a5354433b14804d6bb28b7e979a..8f87a6c4d008374e89bd07109b1cf7e2ec93f5ed 100644 (file)
@@ -103,11 +103,10 @@ struct State {
 }
 
 impl State {
-  fn new() -> Self {
-    State {
-      users: [UState { player: default(), remaining: TVL::zero() }; N],
-      current: None,
-    }
+  fn new(spec: &ChessClock) -> Self {
+    let mut state = State::dummy();
+    state.reset(spec);
+    state
   }
 
   fn reset(&mut self, spec: &ChessClock) {
@@ -119,7 +118,12 @@ impl State {
 
 #[typetag::serde(name="ChessClock")]
 impl PieceXData for State {
-  fn dummy() -> Self { State::new() }
+  fn dummy() -> Self {
+    State {
+      users: [UState { player: default(), remaining: TVL::zero() }; N],
+      current: None,
+    }
+  }
 }
 
 
@@ -229,7 +233,7 @@ impl PieceSpec for ChessClock {
       spec: self.clone(),
     };
 
-    gpc.xdata_mut(|| State::new())?;
+    gpc.xdata_mut(|| State::new(&self) )?;
 
     PieceSpecLoaded {
       p: Box::new(clock),