Files
gen1recomp/tests/drivers/gold_void_fill_bug1418_test.lua
T
bryanthaboi d5ad830fb8 CLOSES #1418
2026-08-18 10:49:04 -04:00

80 lines
2.5 KiB
Lua

-- Gold VOID FILL (#1418): FADE (each map's own border, dissolving across a
-- boundary), WATER, TREES, or BLACK. Parks you on Cherrygrove zoomed out so
-- the void is most of the window, cycles the four modes, then hands the pad
-- over. Do not add POKEPORT_SPEED: the water anim and the dissolve both run
-- on the real clock.
--
-- POKEPORT_IDENTITY=gold-dev POKEPORT_GAME=gold \
-- POKEPORT_DRIVER=tests/drivers/gold_void_fill_bug1418_test.lua love .
local U = require("tests.drivers.util")
return function(game)
local out = os.getenv("POKEPORT_SHOT_DIR") or "/tmp/gold-void-fill"
local BorderFill = require("src.world.gen2.BorderFill")
local Tilt = require("src.render.Tilt")
local Zoom = require("src.render.Zoom")
local failures = 0
local function ok(label, condition, detail)
if condition then
print("[void] ok " .. label)
else
failures = failures + 1
print("[void] FAIL " .. label .. " " .. tostring(detail))
end
end
U.wait(45)
local world = game.world
assert(world and world.map, "gold world did not boot")
-- Cherrygrove's header border is water ($35). FADE shows that water,
-- TREES replaces it, BLACK drops the sheet. attributes.asm:123.
world:setMap("CHERRYGROVE_CITY", 22, 16, "down")
U.wait(10)
Zoom.offset = -3
world:rebuildNeighbors()
world:rebuildPeople({ seamless = true })
Tilt.setLevel(3)
for _ = 1, 40 do
Tilt.update(1 / 60)
U.wait(1)
end
local function show(mode, file, label)
BorderFill.setVoidFill(mode)
if game.options then game.options.voidFill = mode end
if game.save and game.save.options then
game.save.options.voidFill = mode
end
U.wait(8)
ok(label, BorderFill.voidFill == mode, BorderFill.voidFill)
U.shot(game, out .. "/" .. file)
end
show("fade", "01-fade.png", "FADE is the live fill")
show("water", "02-water.png", "WATER forces the water block")
show("trees", "03-trees.png", "TREES forces the tree wall")
show("black", "04-black.png", "BLACK drops the tiled void")
show("fade", "05-fade-again.png", "and FADE restores the map's own border")
Tilt.setLevel(0)
Zoom.offset = 0
world:rebuildNeighbors()
world:rebuildPeople({ seamless = true })
if failures > 0 then
print(("[driver] FAIL gold void fill: %d check(s)"):format(failures))
return
end
print("[driver] PASS gold void fill in " .. out)
U.log("cycled fade/water/trees/black on cherrygrove (#1418).")
U.log("OPTION > VOID FILL, zoom out (-) to see the void.")
while true do
coroutine.yield()
end
end