mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-27 17:01:44 +02:00
65 lines
3.1 KiB
Lua
65 lines
3.1 KiB
Lua
-- UI LETTERBOX (save.options.uiLetterbox): what fills the window around a
|
|
-- 160x144 screen. AUTO keeps what each screen was authored with, so the
|
|
-- default is byte-identical to the look before the option existed.
|
|
-- luajit tests/engine/ui_letterbox_test.lua
|
|
|
|
package.path = "./?.lua;./?/init.lua;" .. package.path
|
|
|
|
local T = require("tests.modkit")
|
|
local Letterbox = require("src.render.Letterbox")
|
|
|
|
T.eq(require("src.core.SaveData").newGame().options.uiLetterbox, "auto",
|
|
"Gen 1 starts on AUTO")
|
|
T.eq(require("src.core.gen2.Save").DEFAULT_OPTIONS.uiLetterbox, "auto",
|
|
"so does Gen 2")
|
|
|
|
-- AUTO hands back the colour the caller was authored with, untouched: the
|
|
-- Pokedex stays black, a menu stays white, the naming screen stays paper.
|
|
Letterbox.setMode("auto")
|
|
T.same({ Letterbox.fill(0, 0, 0) }, { 0, 0, 0 }, "AUTO keeps an authored black")
|
|
T.same({ Letterbox.fill(1, 1, 1) }, { 1, 1, 1 }, "AUTO keeps an authored white")
|
|
T.same({ Letterbox.fill(0.5, 0.25, 0.75) }, { 0.5, 0.25, 0.75 },
|
|
"AUTO keeps an authored paper colour")
|
|
|
|
-- PALETTE reads the caller's paper, because the two generations keep a picked
|
|
-- ramp in different modules. Gen 1 used to come back white here: anything that
|
|
-- sniffed for GbcPalette found it present on Gen 1 too and answered with Gen
|
|
-- 2's white default instead of PaletteFX's actual paper.
|
|
Letterbox.setMode("palette")
|
|
T.same({ Letterbox.fill(0, 0, 0, function() return 0.25, 0.5, 1 end) },
|
|
{ 0.25, 0.5, 1 }, "PALETTE takes the caller's paper")
|
|
T.same({ Letterbox.fill(0, 0, 0) }, { 0, 0, 0 },
|
|
"with no paper reader it falls back to the authored colour, never to white")
|
|
T.same({ Letterbox.fill(1, 1, 1, function() return nil end) }, { 1, 1, 1 },
|
|
"and a reader that cannot answer falls back too")
|
|
|
|
Letterbox.setMode("black")
|
|
T.same({ Letterbox.fill(1, 1, 1) }, { 0, 0, 0 }, "BLACK overrides a white screen")
|
|
Letterbox.setMode("white")
|
|
T.same({ Letterbox.fill(0, 0, 0) }, { 1, 1, 1 }, "WHITE overrides a black screen")
|
|
|
|
-- An unknown or absent value degrades to AUTO rather than to a colour, so a
|
|
-- save written before the option existed keeps its look.
|
|
T.eq(Letterbox.normalize(nil), "auto", "no stored value is AUTO")
|
|
T.eq(Letterbox.normalize("nonsense"), "auto", "and so is a value we cannot read")
|
|
Letterbox.setMode(nil)
|
|
T.same({ Letterbox.fill(0, 0, 0) }, { 0, 0, 0 }, "so an old save is unchanged")
|
|
|
|
-- The ladder wraps both ways, like every other option row.
|
|
T.eq(Letterbox.cycle("auto", 1), "black", "right steps off AUTO")
|
|
T.eq(Letterbox.cycle("palette", 1), "auto", "and wraps at the end")
|
|
T.eq(Letterbox.cycle("auto", -1), "palette", "left wraps back")
|
|
for _, id in ipairs(Letterbox.MODES) do
|
|
T.check(Letterbox.label(id) ~= nil, id .. " has a label")
|
|
end
|
|
T.eq(Letterbox.label("uiLetterbox"), "AUTO", "an unknown id still labels")
|
|
|
|
-- applyOptions is the seam both Game:applyOptions and Game2:applyOptions call.
|
|
Letterbox.applyOptions({ uiLetterbox = "white" })
|
|
T.eq(Letterbox.mode, "white", "applyOptions installs the saved mode")
|
|
Letterbox.applyOptions({})
|
|
T.eq(Letterbox.mode, "auto", "and an options table without one is AUTO")
|
|
|
|
Letterbox.setMode("auto")
|
|
T.finish("ui letterbox")
|