From: Ian Jackson Date: Thu, 28 Apr 2022 22:55:48 +0000 (+0100) Subject: Introduce non-Quiet PUO::Insert X-Git-Tag: otter-1.1.0~431 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=b2d7547bb53e43da443e62c481a78a26125d3676;p=otter.git Introduce non-Quiet PUO::Insert Signed-off-by: Ian Jackson --- diff --git a/daemon/cmdlistener.rs b/daemon/cmdlistener.rs index 2410e1d2..3d49123d 100644 --- a/daemon/cmdlistener.rs +++ b/daemon/cmdlistener.rs @@ -1408,8 +1408,13 @@ impl UpdateHandler { use PieceUpdateOp::*; let oe = bulk.pieces.get(&upiece); let ne = match (oe, uuop) { + // We preserve Quietness rather than coalescing. This avoids + // many more cases here, and this code is used for mgmt + // updates, which are generally Quiet anyway. ( None , e ) => Some( e ), + ( Some( Insert (()) ) , Delete() ) => None, ( Some( InsertQuiet(()) ) , Delete() ) => None, + ( Some( Insert (()) ) , _ ) => Some( Insert (()) ), ( Some( InsertQuiet(()) ) , _ ) => Some( InsertQuiet(()) ), ( Some( Delete ( ) ) , _ ) => Some( Modify (()) ), ( _ , _ ) => Some( Modify (()) ), diff --git a/src/pcrender.rs b/src/pcrender.rs index 38350e80..02719dcd 100644 --- a/src/pcrender.rs +++ b/src/pcrender.rs @@ -99,7 +99,7 @@ impl PieceRenderInstructions { if matches_doesnot!( op, = Move(_) | MoveQuiet(_) | SetZLevel(_) | SetZLevelQuiet(_), - ! Delete() | InsertQuiet(_) | Modify(_) | ModifyQuiet(_), + ! Delete() | Insert(_) | InsertQuiet(_) | Modify(_) | ModifyQuiet(_), ) { match self.occulted { Visible(_) | Occulted => (), diff --git a/src/updates.rs b/src/updates.rs index e9967c07..2215cfb2 100644 --- a/src/updates.rs +++ b/src/updates.rs @@ -155,6 +155,7 @@ pub struct DataLoadPlayer { // Quiet means not to produce the yellow halo (see `movements` in script.ts) pub enum PieceUpdateOp { Delete(), + Insert(NS), InsertQuiet(NS), Modify(NS), ModifyQuiet(NS), @@ -428,6 +429,7 @@ impl PieceUpdateOp { use PieceUpdateOp::*; match self { Delete() => None, + Insert(ns) => Some(ns), InsertQuiet(ns) => Some(ns), Modify(ns) => Some(ns), ModifyQuiet(ns) => Some(ns), @@ -445,6 +447,7 @@ impl PieceUpdateOp { use PieceUpdateOp::*; Ok(match self { Delete() => Delete(), + Insert(ns) => Insert(f(ns)?), InsertQuiet(ns) => InsertQuiet(f(ns)?), Modify(ns) => Modify(f(ns)?), ModifyQuiet(ns) => ModifyQuiet(f(ns)?), @@ -458,6 +461,7 @@ impl PieceUpdateOp { use PieceUpdateOp::*; match self { Delete() => Delete(), + Insert(ns) => Insert(ns), InsertQuiet(ns) => InsertQuiet(ns), Modify(ns) => Modify(ns), ModifyQuiet(ns) => ModifyQuiet(ns), @@ -483,6 +487,7 @@ impl PieceUpdateOp { use PieceUpdateOp::*; match self { Delete() => None, + Insert(_) => None, InsertQuiet(_) => None, Modify(_) => None, ModifyQuiet(_) => None, diff --git a/templates/script.ts b/templates/script.ts index 6a3b7bba..e55185a2 100644 --- a/templates/script.ts +++ b/templates/script.ts @@ -1790,6 +1790,11 @@ pieceops.Modify = function } pieceops.InsertQuiet = (insert_piece as any); +pieceops.Insert = function +(piece: PieceId, xp: any, info: PreparedPieceState) { + let p = insert_piece(piece,xp,info); + piece_note_moved(piece,p); +} function insert_piece(piece: PieceId, xp: any, info: PreparedPieceState): PieceInfo