From 5bfce514be01d239664e29788c96cfdb564813ba Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 28 Dec 2024 15:15:10 +0100 Subject: [PATCH] graphics/console-draw: Collapse consecutive damage entries --- graphics/console-draw/src/lib.rs | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/graphics/console-draw/src/lib.rs b/graphics/console-draw/src/lib.rs index 1b4c386cf1..729cbd744a 100644 --- a/graphics/console-draw/src/lib.rs +++ b/graphics/console-draw/src/lib.rs @@ -213,16 +213,21 @@ impl TextScreen { } let width = map.width.try_into().unwrap(); - let damage = self - .changed - .iter() - .map(|&change| Damage { - x: 0, - y: i32::try_from(change).unwrap() * 16, - width, - height: 16, - }) - .collect(); + let mut damage: Vec = vec![]; + let mut last_change = usize::MAX - 1; + for &change in &self.changed { + if change == last_change + 1 { + damage.last_mut().unwrap().height += 16; + } else { + damage.push(Damage { + x: 0, + y: i32::try_from(change).unwrap() * 16, + width, + height: 16, + }); + } + last_change = change; + } self.changed.clear();