});
for logentry in logents {
- let logentry = Arc::new(logentry);
+ let logentry = LogEntryRef(Arc::new(logentry));
gs.log.push((gen, logentry.clone()));
us.push(PreparedUpdateEntry::Log(logentry));
}
pub pieces : DenseSlotMap<PieceId,PieceState>,
pub players : DenseSlotMap<PlayerId,PlayerState>,
pub gen : Generation,
- pub log : Vec<(Generation, Arc<LogEntry>)>,
+ pub log : Vec<(Generation,LogEntryRef)>,
}
#[derive(Debug)]
pub nick : String,
}
+#[derive(Debug,Clone)]
+pub struct LogEntryRef(pub Arc<LogEntry>);
+
#[derive(Debug,Serialize)]
pub struct LogEntry {
pub html : String,
// ---------- game state - rendering etc. ----------
+impl Serialize for LogEntryRef {
+ fn serialize<S>(&self, s: S) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> where S: Serializer {
+ self.0.serialize(s)
+ }
+}
+
impl PieceState {
#[throws(SE)]
pub fn make_defs(&self, pri : &PieceRenderInstructions) -> String {
defs : Vec<(VisiblePieceId,String)>,
nick : String,
load : String,
+ log : Vec<(Generation, LogEntryRef)>,
}
#[derive(Serialize,Debug)]
let src = SessionRenderContext {
ctoken : ctoken.0,
gen : ig.gs.gen,
+ log : ig.gs.log.clone(),
player,
defs : alldefs,
uses,
piece : VisiblePieceId,
op : PieceUpdateOp<PreparedPieceState>,
},
- Log (Arc<LogEntry>),
+ Log (LogEntryRef),
}
#[derive(Debug,Serialize)]
op.new_state().map(|x| x.svg.len()).unwrap_or(0)
},
Log(logent) => {
- logent.html.as_bytes().len() * 3
+ logent.0.html.as_bytes().len() * 3
}
}
}
TransmitUpdateEntry::Piece { piece, op }
},
PreparedUpdateEntry::Log(logent) => {
- TransmitUpdateEntry::Log(&*logent)
+ TransmitUpdateEntry::Log(&logent.0)
},
};
ents.push(ue);
</svg>
<div id="log" style="overflow-y: scroll; height: 200px;">
- <div id="log1">Log item 1</div>
- <div id="log2">Log item 2</div>
- Log item 3
- <br>
- Log item 4
- <br>
- Log item 5
- <br>
- Log item 6
- <br>
- Log item 7
- <br>
- Log item 8
- <br>
- Log item 9
- <br>
- Log item 10
- <br>
- Log item 11
- <div id="log12">Log item 12</div>
+{% for ent in log %}
+ <div>{{ ent.1.html | safe }}</div>
+{%- endfor %}
+ </div>
</body>