From: Ian Jackson Date: Sat, 10 Jul 2021 00:22:09 +0000 (+0100) Subject: session: Sort by visible z order on game load (!) X-Git-Tag: otter-0.7.2~183 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=cadf789d6c4fa4c82a5e9b35408769fa264d63e8;p=otter.git session: Sort by visible z order on game load (!) Signed-off-by: Ian Jackson --- diff --git a/daemon/session.rs b/daemon/session.rs index c1ee497a..d3520772 100644 --- a/daemon/session.rs +++ b/daemon/session.rs @@ -33,8 +33,9 @@ struct SessionFormattedLogEntry { logent: Arc, } -#[derive(Serialize,Debug)] +#[derive(Serialize,Debug,Eq,PartialEq,Ord,PartialOrd)] struct SessionPieceContext { + z: ZLevel, id: VisiblePieceId, pos: Pos, info: String, // SessionPieceLoadJson as JSON @@ -125,12 +126,10 @@ fn session_inner(form: Json, gpl.layout = layout; } let layout = gpl.layout; - let mut pieces: Vec<_> = ig.gs.pieces.iter().collect(); + let pieces: Vec<_> = ig.gs.pieces.iter().collect(); let nick = gpl.nick.clone(); let movehist = gpl.movehist.clone(); - pieces.sort_by_key(|(_,pr)| &pr.zlevel); - for (piece, gpc) in pieces { let ipc = if let Some(pto) = ig.ipieces.get(piece) { pto } else { continue /* was deleted */ }; @@ -166,6 +165,7 @@ fn session_inner(form: Json, }; let for_piece = SessionPieceContext { + z: zlevel.clone(), id: pri.vpid, pos: pos, info: serde_json::to_string(&for_info) @@ -174,6 +174,8 @@ fn session_inner(form: Json, uses.push(for_piece); } + uses.sort(); + let mut timestamp_abbrev: Option = None; let log = itertools::chain(