chiark / gitweb /
clock: Prevent both users being the same
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 19 Mar 2021 01:18:29 +0000 (01:18 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 20 Mar 2021 20:12:41 +0000 (20:12 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/clock.rs

index 228dd35134b406137f5388b4792ff7bcf35b4920..d5caa241dd5e9fd3655af98e7ca09e39acced9af 100644 (file)
@@ -73,6 +73,11 @@ impl From<User> for u8 {
   fn from(user: User) -> u8 { user.0 as u8 }
 }
 
+impl std::ops::Not for User {
+  type Output = User;
+  fn not(self) -> User { User(! self.0) }
+}
+
 // ==================== state ====================
 
 #[derive(Debug,Clone,Serialize,Deserialize)]
@@ -425,6 +430,10 @@ impl PieceTrait for Clock {
         if let Some(_gpl) = gs.players.get(state.users[user].player) {
           throw!(OE::BadPieceStateForOperation);
         }
+        if state.users[! user].player == player {
+          // todo: some more useful per-player message
+          throw!(OE::BadPieceStateForOperation);
+        }
         state.users[user].player = player;
       },
       "unclaim-x" | "unclaim-y" => {