mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-16 16:21:30 +02:00
89 lines
2.8 KiB
Lua
89 lines
2.8 KiB
Lua
-- Gold #DEX AREA page drew no nest markers or landmark name because
|
|
-- PokedexMenu:drawArea read the non-existent self.data.landmarks instead of
|
|
-- the gen2Landmarks table Nests already resolves through (#1267).
|
|
-- engine/pokegear/pokegear.asm:2427
|
|
-- luajit tests/engine/gen2_pokedex_area_landmark_bug1267.lua
|
|
|
|
package.path = "./?.lua;./?/init.lua;" .. package.path
|
|
|
|
local T = require("tests.harness")
|
|
local check, eq = T.check, T.eq
|
|
love = love or require("tests.love_stub")
|
|
|
|
local PokedexMenu = require("src.ui.gen2.PokedexMenu")
|
|
local Nests = require("src.core.gen2.Nests")
|
|
|
|
-- one Johto landmark (index 5), one species that nests there
|
|
local data = {
|
|
gen2Encounters = {
|
|
grass = {
|
|
ROUTE_30 = { slots = { day = { { species = "RATTATA" } } } },
|
|
},
|
|
},
|
|
gen2Maps = {
|
|
ROUTE_30 = { landmark = 5 },
|
|
},
|
|
gen2Landmarks = {
|
|
landmarks = {
|
|
LANDMARK_ROUTE_30 = { index = 5, x = 40, y = 60, name = "ROUTE 30" },
|
|
},
|
|
},
|
|
}
|
|
|
|
-- sanity: Nests.landmark itself resolves the index (never broken, per the
|
|
-- verifier) so a failure below is isolated to drawArea's own lookup
|
|
eq(Nests.landmark(data, 5) and Nests.landmark(data, 5).name, "ROUTE 30",
|
|
"Nests.landmark resolves index 5 to the ROUTE 30 record")
|
|
|
|
-- capture what drawArea actually paints, without needing a real tile sheet
|
|
-- or font: fill/blank/current/monName are stubbed on the instance, which
|
|
-- Lua resolves before the PokedexMenu metatable's own methods.
|
|
local function newSelf()
|
|
local texts = {}
|
|
local rects = {}
|
|
local self = setmetatable({
|
|
game = { save = {} },
|
|
data = data,
|
|
mapGfx = { maps = { johto = { 1 } } }, -- non-nil `cells`, no real sheet
|
|
areaRegion = "johto",
|
|
areaBlink = 0, -- (0 % 32) < 20, so markers are in their "on" phase
|
|
current = function() return { species = "RATTATA" } end,
|
|
monName = function() return "RATTATA" end,
|
|
fill = function() end,
|
|
blank = function() end,
|
|
text = function(_, str, tx, ty)
|
|
texts[#texts + 1] = { str = str, tx = tx, ty = ty }
|
|
end,
|
|
}, { __index = PokedexMenu })
|
|
return self, texts, rects
|
|
end
|
|
|
|
local realRect = love.graphics.rectangle
|
|
local self, texts, rects
|
|
do
|
|
self, texts, rects = newSelf()
|
|
love.graphics.rectangle = function(mode, x, y, w, h)
|
|
rects[#rects + 1] = { mode = mode, x = x, y = y, w = w, h = h }
|
|
end
|
|
self:drawArea()
|
|
love.graphics.rectangle = realRect
|
|
end
|
|
|
|
local function hasRect(x, y)
|
|
for _, r in ipairs(rects) do
|
|
if r.x == x and r.y == y then return true end
|
|
end
|
|
return false
|
|
end
|
|
check(hasRect(40 - 2, 60 - 2), "the nest marker is drawn at the landmark's x-2,y-2")
|
|
|
|
local function hasText(str)
|
|
for _, t in ipairs(texts) do
|
|
if t.str == str then return true end
|
|
end
|
|
return false
|
|
end
|
|
check(hasText("ROUTE 30"), "the landmark name is printed on row 16")
|
|
|
|
T.finish("gen2 pokedex area landmark bug 1267")
|