From: Ian Jackson Date: Wed, 14 Jul 2021 15:17:24 +0000 (+0100) Subject: gamestate: Track last_released client X-Git-Tag: otter-0.7.2~94 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=224cffa7ecbb4c0aa9653ac12381cf80f413ebb6;p=otter.git gamestate: Track last_released client Signed-off-by: Ian Jackson --- diff --git a/daemon/api.rs b/daemon/api.rs index 073b1e48..60643d5c 100644 --- a/daemon/api.rs +++ b/daemon/api.rs @@ -335,6 +335,7 @@ api_route!{ let pcs = pri.describe(ioccults,&gs.occults, gpc, ipc); gpc.held = Some(player); + gpc.last_released = default(); let update = PieceUpdateOp::Modify(()); @@ -413,6 +414,7 @@ api_route!{ if gpc.held != Some(player) { throw!(Ia::PieceNotHeld) } gpc.held = None; + gpc.last_released = a.client; let wrc = if let Some(zlevel) = new_z { gpc.zlevel = zlevel; diff --git a/daemon/cmdlistener.rs b/daemon/cmdlistener.rs index e396d426..1cf3fc71 100644 --- a/daemon/cmdlistener.rs +++ b/daemon/cmdlistener.rs @@ -1107,6 +1107,7 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>( pos, face, xdata: None, moveable: default(), + last_released: default(), rotateable: true, }; let PieceSpecLoaded { p, loaded_via_alias, occultable } = diff --git a/src/gamestate.rs b/src/gamestate.rs index db930b2a..1f26d51f 100644 --- a/src/gamestate.rs +++ b/src/gamestate.rs @@ -74,6 +74,7 @@ pub struct GPiece { // usual variable: gpc pub angle: PieceAngle, pub gen: Generation, pub lastclient: ClientId, + #[serde(default)] pub last_released: ClientId, pub gen_before_lastclient: Generation, pub xdata: PieceXDataState, pub moveable: PieceMoveable, @@ -412,6 +413,7 @@ impl GPiece { angle: default(), gen: gen_dummy, lastclient: ClientId(default()), + last_released: ClientId(default()), gen_before_lastclient: gen_dummy, xdata: None, moveable: default(),