chiark / gitweb /
wip, fixes, etc.
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 26 Jun 2020 23:09:48 +0000 (00:09 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 26 Jun 2020 23:09:48 +0000 (00:09 +0100)
src/bin/server.rs
templates/script.js
templates/test.tera

index 6be343ae211eb8a0ba2483a87448520a1823c2f6..1fbb5c461e8e1a33ca6582af1aa4251987a1c02f 100644 (file)
@@ -53,6 +53,7 @@ fn loading(token : InstanceAccess) -> Result<Template,RE> {
 #[derive(Serialize,Debug)]
 struct SessionRenderContext {
   clientid : u64,
+  player : u32, // xxx
   defs : Vec<String>,
   uses : Vec<String>,
 }
@@ -94,7 +95,8 @@ fn session(form : Json<SessionForm>) -> Result<Template,RE> {
                         pr.p.svg_select(&pri)));
       defs.push(pr.p.svg_x_defs(&pri));
 
-      uses.push(format!(r##"<use href="#{}" data-p="{}" x="{}" y="{}"/>"##,
+      uses.push(format!(
+        r##"<use href="#{}" data-p="{}" data-g="" x="{}" y="{}"/>"##,
                         pri.id_piece(),
                         pri.id,
                         pr.pos[0], pr.pos[1]));
@@ -102,6 +104,7 @@ fn session(form : Json<SessionForm>) -> Result<Template,RE> {
 
     SessionRenderContext {
       clientid : clientid.as_ffi(),
+      player : 2, // xxx
       defs,
       uses,
     }
index fb4b897bf5ae42d6efee194e77148e0764df9a5f..c8baecdbceac82426638b1698db317e8113928a9 100644 (file)
@@ -7,6 +7,7 @@ messages = Object();
 var our_dnd_type = "text/puvnex-game-server-dummy";
 api_queue = [];
 api_posting = false;
+var us;
 
 function xhr_post_then(url,data,good) {
   var xhr = new XMLHttpRequest();
@@ -62,7 +63,7 @@ function api_posted() {
 
 // dataset
 //   delt.p       piece id (static)
-//   delt.g       grabbed user (+ve integer, null, or -1 meaning us)
+//   delt.g       grabbed user (>=0 integer, or "")
 
 const DRAGGING = { // bitmask
   NO           : 0,
@@ -79,18 +80,19 @@ function drag_mousedown(e) {
   if (!e.target.dataset.p) { return; }
   drag_cancel();
   delt = e.target;
-  if (delt.dataset.g > 0) { return; }
+  var g =delt.dataset.g;
+  if (g != "" && g != us) { return; }
   dcx = e.clientX;
   dcy = e.clientY;
   dox = parseFloat(delt.getAttributeNS(null,"x"));
   doy = parseFloat(delt.getAttributeNS(null,"y"));
 
   console.log('mousedown ...', delt.dataset.g, !!delt.dataset.g);
-  if (delt.dataset.g < 0) {
+  if (g == us) {
     dragging = DRAGGING.MAYBE_UNGRAB;
   } else {
     dragging = DRAGGING.MAYBE_GRAB;
-    delt.dataset.g = -1;
+    delt.dataset.g = us;
     api('grab', {
       t : token,
       p : delt.dataset.p,
@@ -129,10 +131,10 @@ function drag_mousemove(e) {
 function drag_mouseup(e) {
   console.log('mouseup', dragging);
   drag_mousemove(e);
-  console.log('mouseup ...', dragging);
+  //console.log('mouseup ...', dragging);
   if (dragging == DRAGGING.MAYBE_UNGRAB ||
       dragging == (DRAGGING.MAYBE_GRAB | DRAGGING.YES)) {
-    delt.dataset.g = null;
+    delt.dataset.g = "";
     api('ungrab', {
       t : token,
       p : delt.dataset.p,
@@ -155,7 +157,9 @@ messages.TestCounter = function(data) {
 }
 
 function startup() {
-  clientid = document.getElementById("main-body").dataset.clientid;
+  var body = document.getElementById("main-body");
+  clientid = body.dataset.clientid;
+  us = body.dataset.us;
   status_node = document.getElementById('status');
   status_node.innerHTML = 'js-done'
   dragthresh = 5;
index 7e88db3f824a975df775cf95208cdb951cd85204..1f3935694a7e76a05f61a68b6df7bba8bc8002f7 100644 (file)
@@ -1,4 +1,4 @@
-<body id="main-body" data-clientid="{{clientid}}">
+<body id="main-body" data-clientid="{{clientid}}" data-us="{{player}}">
 <h1>Hi!</h1>
 <div id="error"></div>
 <p>