mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-18 11:44:42 +02:00
60 lines
1.9 KiB
Lua
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
|