chiark / gitweb /
wip fixes etc.
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 5 Jul 2020 23:59:52 +0000 (00:59 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 5 Jul 2020 23:59:52 +0000 (00:59 +0100)
src/bin/server.rs
src/sse.rs
templates/script.js

index bcd0d126a2cf44f8583c6714c048fd9647a9a9ee..508c28397341c8aeabddaa55be3a28b82b3aa8e1 100644 (file)
@@ -163,6 +163,7 @@ fn api_grab(form : Json<ApiGrab>) -> impl response::Responder<'static> {
       }],
     };
     let update = Arc::new(update);
+    eprintln!("UPDATE {:?}", &update);
     // split vie wthing would go here, see also update.piece
     p.gen_lastclient = gen;
     for (_tplayer, tplupdates) in &mut g.updates {
index af6d62b144b37601227e7fea02cb8e67464cef9e..6d7b14ef2a3d8463456f80e193ae0d9d6347ecc7 100644 (file)
@@ -113,6 +113,7 @@ impl Read for UpdateReader {
       write!(buf, "]\n\
                    id: {}\n\n",
              &self.to_send)?;
+      self.to_send.try_increment().unwrap();
     }
 
     loop {
index 85a45a622a8b03d474425c6f744a2804cf5664d3..c259a57018a8c05f1884cd3cd1f64333a865cd3b 100644 (file)
@@ -38,6 +38,7 @@
 
 general_timeout = 10000;
 messages = Object();
+pieceops = Object();
 var our_dnd_type = "text/puvnex-game-server-dummy";
 api_queue = [];
 api_posting = false;
@@ -232,10 +233,16 @@ messages.LogUpdate = function(data) {
 
 // ----- test counter, startup -----
 
-messages.PieceUpdate = function(data) {
-  console.log('PIECE UPDATE ',data)
-  var piece = data[0];
-  var info = data [1];
+messages.Piece = function(j) {
+  console.log('PIECE UPDATE ',j)
+  var piece = j.piece;
+  var m = j.op;
+  var k = Object.keys(m)[0];
+  pieceops[k](piece, m[k]);
+}
+
+pieceops.Modify = function (piece, info) {
+  console.log('PIECE UPDATE MODIFY ',piece,info)
   var uelem = document.getElementById('use'+piece);
   var delem = document.getElementById('defs'+piece);
   delem.innerHTML = info.svgs;
@@ -247,6 +254,15 @@ messages.PieceUpdate = function(data) {
   } else {
     set_grab(uelem, piece, info.held);
   }
+  console.log('MODIFY DONE');
+}
+
+messages.Recorded = function(j) {
+  var pelem = document.getElementById('piece'+j.piece);
+  if (j.cseq >= pelem.dataset.cseq) {
+    delete pelem.dataset.cseq;
+  }
+  gen = j.gen;
 }
 
 function startup() {
@@ -265,21 +281,17 @@ function startup() {
   es.onmessage = function(event) {
     console.log('GOTEVE', event)
     var j = JSON.parse(event.data);
-    var k = Object.keys(j)[0];
-    messages[k](j[k]);
+    var tgen = j.pop();
+    for (var m of j) {
+      var k = Object.keys(m)[0];
+      messages[k](m[k]);
+    }
+    gen = tgen;
   }
   es.addEventListener('commsworking', function(event) {
     console.log('GOTDATA', event);
     status_node.innerHTML = event.data;
   });
-  es.addEventListener('recorded', function(event) {
-    var j = JSON.parse(event.data);
-    var pelem = document.getElementById('piece'+j.piece);
-    if (j.cseq >= pelem.dataset.cseq) {
-      delete pelem.dataset.cseq;
-    }
-    gen = j.gen;
-  });
   es.onerror = function(e) {
     console.log('FOO',e,es);
     json_report_error({