chiark / gitweb /
dataload
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 11 Jul 2020 23:57:46 +0000 (00:57 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 11 Jul 2020 23:57:46 +0000 (00:57 +0100)
src/gamestate.rs
src/global.rs
src/keydata.rs
src/session.rs
templates/script.ts
templates/session.tera

index 48cb4752e90a8ed51f4806777aec81c64670ec10..242a39f8836eecde780b8ecfcf7a8a65bb0a8695 100644 (file)
@@ -3,6 +3,8 @@ use crate::imports::*;
 
 // ---------- newtypes and type aliases ----------
 
+visible_slotmap_key!{ PlayerId('#') }
+
 slotmap::new_key_type!{
   pub struct PieceId;
 }
index c12eccd96318b5919c63a4abbf5f9c058afb8fe7..e57e2ce951741fe94bd9a30e8126261604b58596 100644 (file)
@@ -5,7 +5,6 @@ use lazy_static::lazy_static;
 // ---------- newtypes and type aliases ----------
 
 visible_slotmap_key!{ ClientId('C') }
-visible_slotmap_key!{ PlayerId('#') }
 
 #[derive(Clone,Debug,Eq,PartialEq,Ord,PartialOrd,Hash)]
 pub struct RawToken (pub String);
index 35889d22416d0c22d1cb969c0a217cafb7d2c916..65158c298d4ee6a3abcd8c7efaead5ad48c81f5b 100644 (file)
@@ -38,7 +38,7 @@ pub fn slotkey_write(k : SKD, sep : char, f : &mut fmt::Formatter) {
 macro_rules! visible_slotmap_key {
   ( $x:ident($sep:expr) ) => {
 
-    #[derive(Copy,Default,Clone,Eq,PartialEq,Ord,PartialOrd,Serialize,Deserialize)]
+    #[derive(Copy,Default,Clone,Eq,PartialEq,Ord,PartialOrd,Serialize,Deserialize,Hash)]
     #[serde(into="String")]
     #[serde(try_from="&str")]
     pub struct $x(pub slotmap::KeyData);
index bd91f5f727812cdcd61dd6fae73cd72b1ca4bcac..03729b040e989f2696c57ebf511657c679f173a2 100644 (file)
@@ -10,7 +10,7 @@ struct SessionRenderContext {
   uses : Vec<SessionPieceContext>,
   defs : Vec<(VisiblePieceId,String)>,
   nick : String,
-  data : String,
+  load : String,
 }
 
 #[derive(Serialize,Debug)]
@@ -31,7 +31,7 @@ struct SessionPieceLoadJson<'r> {
 struct DataLoad {
   players : HashMap<PlayerId, DataLoadPlayer>,
 }
-#[derive(Serialize,Debug]
+#[derive(Serialize,Debug)]
 struct DataLoadPlayer {
 }
 
@@ -47,7 +47,6 @@ fn session(form : Json<SessionForm>) -> Result<Template,OE> {
   let c = {
     let mut ig = iad.g.lock()?;
     let ig = &mut *ig;
-    let pl = ig.gs.players.byid_mut(player)?;
     let cl = Client { player };
     let client = ig.clients.insert(cl);
 
@@ -60,6 +59,13 @@ fn session(form : Json<SessionForm>) -> Result<Template,OE> {
     let mut uses = vec![];
     let mut alldefs = vec![];
 
+    let mut load_players = HashMap::new();
+    for (player, _pl) in &ig.gs.players {
+      load_players.insert(player, DataLoadPlayer {
+      });
+    }
+
+    let pl = ig.gs.players.byid_mut(player)?;
     let mut pieces : Vec<_> = ig.gs.pieces.iter().collect();
 
     pieces.sort_by_key(|(_,pr)| &pr.zlevel);
@@ -86,11 +92,6 @@ fn session(form : Json<SessionForm>) -> Result<Template,OE> {
       uses.push(for_piece);
     }
 
-    let load_players = players.map(|player, pl {
-      DataLoadPlayer {
-      };
-    });
-
     let src = SessionRenderContext {
       ctoken : ctoken.0,
       gen : ig.gs.gen,
@@ -98,9 +99,9 @@ fn session(form : Json<SessionForm>) -> Result<Template,OE> {
       defs : alldefs,
       uses,
       nick : pl.nick.clone(),
-      dataload : DataLoad {
+      load : serde_json::to_string(&DataLoad {
         players : load_players,
-      },
+      })?,
     };
     eprintln!("SRC {:?}", &src);
     src
index 031d68265ddb2f11129bcd6668e3d31acbe2e5bc..a999dfe7ef9ccc0a5ce43926fddc5392df8a25bc 100644 (file)
@@ -441,6 +441,8 @@ function startup() {
   status_node = document.getElementById('status')!;
   status_node.innerHTML = 'js-done';
   logdiv = document.getElementById("log")!;
+  let dataload = body.dataset.load;
+  delete body.dataset.load;
 
   space = svg_element('space')!;
   pieces_marker = svg_element("pieces_marker")!;
index fe1d5f2c94b4a828f6e114ffcb5b3931c7cf6445..953fe44331d83f86787a306463cf4555c318b8f8 100644 (file)
@@ -2,6 +2,7 @@
       data-ctoken="{{ctoken}}"
       data-us="{{player}}"
       data-gen="{{gen}}"
+      data-load="{{ load | escape }}"
       >
 <h1>Hi {{nick}}!</h1>
 <div id="error"></div>
@@ -12,7 +13,6 @@
     <svg id="space"
         xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 110"
         onmousedown="drag_mousedown(event)"
-        data-load="{{ dataload | escape }}"
         >
       <rect fill="green" x="20" y="5" width="200" height="100"/>
       <g id="pieces_marker"></g>