// ---------- newtypes and type aliases ----------
+visible_slotmap_key!{ PlayerId('#') }
+
slotmap::new_key_type!{
pub struct PieceId;
}
// ---------- 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);
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);
uses : Vec<SessionPieceContext>,
defs : Vec<(VisiblePieceId,String)>,
nick : String,
- data : String,
+ load : String,
}
#[derive(Serialize,Debug)]
struct DataLoad {
players : HashMap<PlayerId, DataLoadPlayer>,
}
-#[derive(Serialize,Debug]
+#[derive(Serialize,Debug)]
struct DataLoadPlayer {
}
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);
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);
uses.push(for_piece);
}
- let load_players = players.map(|player, pl {
- DataLoadPlayer {
- };
- });
-
let src = SessionRenderContext {
ctoken : ctoken.0,
gen : ig.gs.gen,
defs : alldefs,
uses,
nick : pl.nick.clone(),
- dataload : DataLoad {
+ load : serde_json::to_string(&DataLoad {
players : load_players,
- },
+ })?,
};
eprintln!("SRC {:?}", &src);
src
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")!;
data-ctoken="{{ctoken}}"
data-us="{{player}}"
data-gen="{{gen}}"
+ data-load="{{ load | escape }}"
>
<h1>Hi {{nick}}!</h1>
<div id="error"></div>
<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>