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)?
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());
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();
pub p : Box<dyn Piece>,
pub face : FaceId,
pub held : Option<PlayerId>,
+ pub gen : Generation,
pub lastclient : ClientId,
- pub gen_lastclient : Generation,
pub gen_before_lastclient : Generation,
}
face : 0.into(),
held : None,
lastclient : Default::default(),
- gen_lastclient : Generation(0),
+ gen : Generation(0),
gen_before_lastclient : Generation(0),
};
pieces.insert(pr);
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) {