From: Ian Jackson Date: Mon, 6 Jul 2020 18:19:06 +0000 (+0100) Subject: move X-Git-Tag: otter-0.2.0~1417 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=1a91c98eb446fd39c2c6319d05b66f53f3ef03f1;p=otter.git move --- diff --git a/src/bin/server.rs b/src/bin/server.rs index 837b84c6..560ec360 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -177,8 +177,11 @@ fn api_piece_op(form : Json>) let q_gen = form.gen; let u_gen = - if client == pc.lastclient { pc.gen_lastclient } - else { pc.gen_before_lastclient }; + if client == pc.lastclient { pc.gen_before_lastclient } + else { pc.gen }; + + eprintln!("Q_GEN={:?} U_GEN={:?}", u_gen, q_gen); + if u_gen > q_gen { Err(GameError::Conflict)? } if pc.held != None && pc.held != Some(player) { Err(GameError::PieceHeld)? @@ -196,9 +199,11 @@ fn api_piece_op(form : Json>) gs.gen.increment(); let gen = gs.gen; if client != pc.lastclient { - pc.gen_before_lastclient = pc.gen_lastclient; + pc.gen_before_lastclient = pc.gen; pc.lastclient = client; } + pc.gen = gen; + eprintln!("PC GEN_LC={:?} LC={:?}", pc.gen, pc.lastclient); let pri_for_all = lens.svg_pri(piece,pc,Default::default()); @@ -227,7 +232,6 @@ fn api_piece_op(form : Json>) let update = Arc::new(update); eprintln!("UPDATE {:?}", &update); - pc.gen_lastclient = gen; for (_tplayer, tplupdates) in &mut g.updates { tplupdates.log.push_back(update.clone()); tplupdates.cv.notify_all(); diff --git a/src/gamestate.rs b/src/gamestate.rs index f5a413b2..25ab0af4 100644 --- a/src/gamestate.rs +++ b/src/gamestate.rs @@ -51,8 +51,8 @@ pub struct PieceRecord { pub p : Box, pub face : FaceId, pub held : Option, + pub gen : Generation, pub lastclient : ClientId, - pub gen_lastclient : Generation, pub gen_before_lastclient : Generation, } @@ -119,7 +119,7 @@ pub fn xxx_gamestate_init() -> GameState { face : 0.into(), held : None, lastclient : Default::default(), - gen_lastclient : Generation(0), + gen : Generation(0), gen_before_lastclient : Generation(0), }; pieces.insert(pr); diff --git a/templates/script.js b/templates/script.js index ff65bd9a..67151ec7 100644 --- a/templates/script.js +++ b/templates/script.js @@ -260,6 +260,13 @@ pieceops.Modify = function (piece, info) { console.log('MODIFY DONE'); } +pieceops.Move = function (piece, info) { + // xxx do something aboiut conflict + var uelem = document.getElementById('use'+piece); + uelem.setAttributeNS(null, "x", info[0]); + uelem.setAttributeNS(null, "y", info[1]); +} + messages.Recorded = function(j) { var pelem = document.getElementById('piece'+j.piece); if (j.cseq >= pelem.dataset.cseq) {