From: Ian Jackson Date: Sat, 27 Jun 2020 18:11:19 +0000 (+0100) Subject: some piece held error etc. X-Git-Tag: otter-0.2.0~1524 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=d906027106e13df617a57c5762a06289b9aa9b2b;p=otter.git some piece held error etc. --- diff --git a/src/bin/server.rs b/src/bin/server.rs index cc18233b..b8b1fcbf 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -127,15 +127,14 @@ struct ApiGrab { #[throws(RE)] fn api_grab(form : Json) -> impl response::Responder<'static> { let iad = lookup_token(&form.t).ok_or_else(||anyhow!("unknown token"))?; - let g = iad.i.lock().map_err(|e| anyhow!("lock poison {:?}",&e))?; - let r : Result<(),OpError> = { - let p = g.gs.pieces.get_mut(form.p)/*.ok_or(OpError::PieceGone)?*/; -/* + let mut g = iad.i.lock().map_err(|e| anyhow!("lock poison {:?}",&e))?; + let r : Result<(),OpError> = (||{ + let p = decode_visible_pieceid(form.p); + let p = g.gs.pieces.get_mut(p).ok_or(OpError::PieceGone)?; if p.held != None { Err(OpError::PieceHeld)? }; p.held = Some(iad.user); -*/ Ok(()) - }; + })(); eprintln!("API {:?} => {:?}", &form, &r); "" } diff --git a/src/gamestate.rs b/src/gamestate.rs index 042de128..02199c4d 100644 --- a/src/gamestate.rs +++ b/src/gamestate.rs @@ -13,6 +13,12 @@ pub fn make_pieceid_visible(p : PieceId) -> VisiblePieceId { VisiblePieceId(kd) } +pub fn decode_visible_pieceid(p : VisiblePieceId) -> PieceId { + // xxx need to do censorship mapping here + let kd : slotmap::KeyData = p.into(); + PieceId(kd) +} + #[derive(Debug)] pub struct PieceRenderInstructions { pub id : VisiblePieceId,