From: Ian Jackson Date: Fri, 19 Mar 2021 01:18:29 +0000 (+0000) Subject: clock: Prevent both users being the same X-Git-Tag: otter-0.5.0~644 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=7c1564f7b53d7bb19783d4d505a998f28626cdb2;p=otter.git clock: Prevent both users being the same Signed-off-by: Ian Jackson --- diff --git a/src/clock.rs b/src/clock.rs index 228dd351..d5caa241 100644 --- a/src/clock.rs +++ b/src/clock.rs @@ -73,6 +73,11 @@ impl From 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" => {