Keep the used-move text up during battle animations (#296) (#302)

The battle textbox redraws its text every frame, but only while a
message was current. Once the player dismissed "Enemy X used GUST!"
and the move animation started, nothing drew the text, so the box sat
empty for the whole animation. The original game's animations never
touch the textbox, so the text stays up. Draw the held lines while an
animation is playing; everything else is unchanged.

Co-authored-by: johnjohto <johnjohto@users.noreply.github.com>
This commit is contained in:
johnjohto
2026-07-27 10:38:03 -04:00
committed by GitHub
parent 531a719794
commit 31365d8dfd
2 changed files with 30 additions and 1 deletions
+26
View File
@@ -2860,6 +2860,32 @@ do
eq(ys[1], 112, "battle text line 1 at row 14 (y=112)")
eq(ys[2], 128, "battle text line 2 at row 16 (y=128)")
end
-- issue #296: the used-move text stays up during the move animation.
-- current is nil once the message is dismissed, but shown still holds the
-- lines; pokered's animations never touch the textbox tilemap.
do
local Font = require("src.render.Font")
local drawn, origCode, origBox = 0, Font.drawCode, Font.drawBox
Font.drawBox = function() end
Font.drawCode = function() drawn = drawn + 1 end
local battle = setmetatable({
phase = "messages",
current = nil,
animPlaying = true,
shown = { { 0x80 }, { 0x81 } },
}, BattleState)
battle:drawTextArea()
eq(drawn, 2, "text keeps drawing while the move animation plays")
-- without an animation the dismissed message is still hidden, so states
-- that clear the box (e.g. pushed UI rows) are unchanged
drawn = 0
battle.animPlaying = nil
battle:drawTextArea()
Font.drawCode, Font.drawBox = origCode, origBox
eq(drawn, 0, "no current message and no animation draws no text")
end
end
-- ================= BUGS.md batch: ledge-shadow =================