chiark / gitweb /
defs for each piece separately
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 5 Jul 2020 14:34:50 +0000 (15:34 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 5 Jul 2020 14:34:50 +0000 (15:34 +0100)
src/bin/server.rs
templates/script.js
templates/test.tera

index 4169e06bb181d21f388b5a2563572393cb163518..a4dcd78cd2fc1afb48467d0356dd9120519b19d7 100644 (file)
@@ -54,8 +54,8 @@ struct SessionRenderContext {
   ctoken : String,
   player : PlayerId,
   gen : Generation,
-  defs : Vec<String>,
   uses : Vec<String>,
+  defs : Vec<(VisiblePieceId,Vec<String>)>,
   nick : String,
 }
 
@@ -82,12 +82,13 @@ fn session(form : Json<SessionForm>) -> Result<Template,OE> {
     let ctoken = record_token(ciad);
 
     let mut uses = vec![];
-    let mut defs = vec![];
+    let mut alldefs = vec![];
     for (gpid, pr) in &ig.gs.pieces {
       let pri = PieceRenderInstructions {
         id : make_pieceid_visible(gpid),
         face : pr.face,
       };
+      let mut defs = vec![];
       defs.push(format!(r##"<g id="{}">{}</g>"##,
                         pri.id_piece(),
                         pr.p.svg_piece(&pri)));
@@ -103,6 +104,8 @@ fn session(form : Json<SessionForm>) -> Result<Template,OE> {
                         pr.p.svg_select(&pri)));
       defs.push(pr.p.svg_x_defs(&pri));
 
+      alldefs.push((pri.id, defs));
+
       uses.push(format!(
         r##"<use href="#{}" data-piece="{}" data-gplayer="" x="{}" y="{}"/>"##,
                         pri.id_piece(),
@@ -110,14 +113,16 @@ fn session(form : Json<SessionForm>) -> Result<Template,OE> {
                         pr.pos[0], pr.pos[1]));
     }
 
-    SessionRenderContext {
+    let src = SessionRenderContext {
       ctoken : ctoken.0,
       gen : ig.gs.gen,
       player,
-      defs,
+      defs : alldefs,
       uses,
       nick : pl.nick.clone(),
-    }
+    };
+    eprintln!("SRC {:?}", &src);
+    src
   };
   Ok(Template::render("test",&c))
 }
index 98277ce774eaf95a8b3caedb34405718dbbb2f45..41e6b510683cdf2f6f26ad916620b1dfa65fd275 100644 (file)
 //         .gplayer  grabbed user (player id string, or "")
 //      container to allow quick movement and hang stuff off
 //
-// In defs
+//   delem
+//      #defs{}
+//      <def id="defs{}">
+//
+// And in each delem
 //
 //   pelem
 //   #piece{}
index acb075265a03ffb646b8a877e65e36ffb6b0c16f..a701769940b80de149e8cdc9a62ff4c247539fc3 100644 (file)
         >
       <rect fill="green" x="20" y="20" width="200" height="100"/>
 {% for piece in uses %}{{piece}}{% endfor %}
-      <defs>
-{% for piece in defs %}{{piece}}{% endfor %}
+{% for piece in defs %}
+      <defs id="defs{{ piece.0 }}">
+{%   for item in piece.1 %}{{item}}{% endfor %}
       </defs>
+{% endfor %}
     </svg>
 
 </body>