mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-12 08:21:02 +02:00
@@ -0,0 +1,83 @@
|
||||
-- Driver: TTF text mode through the bundled Plain Pixel font. Teleports
|
||||
-- straight into the overworld (no intro) and shows one dialogue line per
|
||||
-- language back to back, shooting each: lang_english.png, lang_french.png,
|
||||
-- lang_german.png, lang_spanish.png, lang_russian.png, lang_japanese.png,
|
||||
-- lang_chinese.png in SHOT_DIR. Judge glyph coverage, spacing, baseline,
|
||||
-- and that the tile box border survives every one of them.
|
||||
-- POKEPORT_DRIVER=tests/drivers/plainpixel_font_test.lua \
|
||||
-- POKEPORT_IDENTITY=ttfdemo POKEPORT_TOUCH=0 POKEPORT_VERSION=red \
|
||||
-- SHOT_DIR=/tmp/shots love .
|
||||
return function(game)
|
||||
local U = dofile("tests/drivers/util.lua")
|
||||
local DIR = os.getenv("SHOT_DIR") or "/tmp/shots"
|
||||
local Font = require("src.render.Font")
|
||||
local TextBox = require("src.render.TextBox")
|
||||
|
||||
local function check(label, ok)
|
||||
U.log(ok and "PASS" or "FAIL", label)
|
||||
return ok
|
||||
end
|
||||
|
||||
-- ---- preconditions -----------------------------------------------------
|
||||
check("the bundled TTF is present",
|
||||
love.filesystem.getInfo(Font.PLAINPIXEL) ~= nil)
|
||||
local okLoad, ttf = pcall(love.graphics.newFont, Font.PLAINPIXEL,
|
||||
Font.PLAINPIXEL_SIZE)
|
||||
check("real LOVE can load it", okLoad and ttf ~= nil)
|
||||
|
||||
game.save.player.name = "bryan"
|
||||
U.teleport(game, "PALLET_TOWN", 10, 8, "down")
|
||||
U.wait(10)
|
||||
|
||||
-- what a translation's register("ttf", {}) merges to
|
||||
game.data.font.ttf = {}
|
||||
Font.invalidate()
|
||||
check("ttf active after the merge", Font.ttfActive())
|
||||
|
||||
local LINES = {
|
||||
{ "english", "The quick brown fox\njumps over the lazy dog!" },
|
||||
{ "french", "Un \195\169clair enveloppe le\nPOK\195\169MON sauvage! \195\135a alors!" },
|
||||
{ "german", "Gr\195\182\195\159e und Gewicht des\nPOK\195\169MON \195\188berpr\195\188ft!" },
|
||||
{ "spanish", "\194\161El POK\195\169MON enemigo\nest\195\161 paralizado! \194\191Y ahora?" },
|
||||
{ "russian", "\208\148\208\184\208\186\208\184\208\185 "
|
||||
.. "\208\159\208\158\208\154\208\149\208\156\208\158\208\157 "
|
||||
.. "\208\191\208\190\209\143\208\178\208\184\208\187\209\129\209\143!" },
|
||||
{ "japanese", "\227\129\147\227\130\147\227\129\171\227\129\161\227\129\175! "
|
||||
.. "\227\131\157\227\130\177\227\131\162\227\131\179\227\129\174\n"
|
||||
.. "\227\129\155\227\129\139\227\129\132\227\129\184 "
|
||||
.. "\227\130\136\227\129\134\227\129\147\227\129\157!" },
|
||||
-- NB: Plain Pixel 0.009's CJK block is partial (e.g. U+62D3, U+5922
|
||||
-- draw as tofu); stick to characters it covers
|
||||
{ "chinese", "\228\189\160\229\165\189! \230\136\145\230\152\175"
|
||||
.. "\229\164\167\229\178\169\229\141\154\229\163\171!" },
|
||||
}
|
||||
|
||||
for _, entry in ipairs(LINES) do
|
||||
local name, text = entry[1], entry[2]
|
||||
local done = false
|
||||
local box = TextBox.new(game, text, function() done = true end)
|
||||
game.stack:push(box)
|
||||
-- let the typewriter finish the page before shooting it
|
||||
for _ = 1, 300 do
|
||||
if box.waiting or box.done then break end
|
||||
U.wait(1)
|
||||
end
|
||||
U.wait(5)
|
||||
U.shot(game, DIR .. "/lang_" .. name .. ".png")
|
||||
for _ = 1, 20 do
|
||||
if done then break end
|
||||
U.tap(game, "a")
|
||||
U.wait(10)
|
||||
end
|
||||
U.wait(5)
|
||||
check("dismissed " .. name, done)
|
||||
end
|
||||
|
||||
game.data.font.ttf = nil
|
||||
Font.invalidate()
|
||||
check("clearing the entry restores tile mode", not Font.ttfActive())
|
||||
|
||||
U.log("shots in", DIR)
|
||||
U.log("DONE")
|
||||
love.event.quit(0)
|
||||
end
|
||||
Reference in New Issue
Block a user