Files
gen1recomp/tests/drivers/touch_skin_editor_shot.lua
T
2026-08-17 06:47:33 -04:00

60 lines
1.9 KiB
Lua

-- Driver: shoots the launcher's Touch Controls editor with the built-in pad
-- and with the bundled skin picked, so the Skin row (#1386) can be eyeballed.
-- The editor is a top-level love.draw branch in main.lua, not a stack state,
-- so this stands in for that branch and captures the frame itself.
-- SHOT_DIR=/tmp/skin POKEPORT_DRIVER=tests/drivers/touch_skin_editor_shot.lua love .
return function(game)
local U = dofile("tests/drivers/util.lua")
local Editor = require("src.ui.TouchControlsEditor")
local TouchControls = require("src.core.TouchControls")
local dir = os.getenv("SHOT_DIR") or "/tmp/skin"
os.execute('mkdir -p "' .. dir .. '" 2>/dev/null')
love.window.setMode(432, 768, { resizable = true, highdpi = true })
U.wait(2)
local pending = nil
love.draw = function()
Editor.draw()
if pending then
local path = pending
pending = nil
love.graphics.captureScreenshot(function(imagedata)
local f = io.open(path, "wb")
if f then f:write(imagedata:encode("png"):getString()) f:close() end
end)
end
end
local function shot(name)
pending = dir .. "/" .. name
for _ = 1, 60 do
if not pending then break end
coroutine.yield()
end
U.wait(3)
local f = io.open(dir .. "/" .. name, "rb")
if f then f:close() U.log("shot", name) else U.log("FAIL shot", name) end
end
Editor.load({ onClose = function() end })
U.wait(5)
U.log("skins:", #Editor.skins, "label:", Editor.skinLabel())
shot("editor_pad.png")
Editor.cycleSkin(1)
U.wait(5)
U.log("picked:", tostring(TouchControls.skinId), Editor.skinLabel())
shot("editor_skin.png")
Editor.exportSkin()
U.wait(5)
U.log("export:", tostring(Editor.exportMsg))
U.log("skins after export:", #Editor.skins)
shot("editor_export.png")
U.log("done")
love.event.quit()
while true do coroutine.yield() end
end