Files
gen1recomp/tests/engine/gen2_kanto_no_roof_bug1479.lua
T

62 lines
2.3 KiB
Lua

-- #1479 / #1449: TILESET_KANTO takes no map-group roof (home/map.asm:1738-1749)
-- luajit tests/engine/gen2_kanto_no_roof_bug1479.lua
package.path = "./?.lua;./?/init.lua;" .. package.path
local T = require("tests.modkit")
local MapPreview = require("src.world.gen2.MapPreview")
local baker = {
tilesets = {
TILESET_KANTO = { image = "assets/generated/tilesets/kanto.png" },
TILESET_JOHTO = { image = "assets/generated/tilesets/johto.png" },
},
roofs = {
mapGroupRoofs = { [19] = "ROOF_SILVER" },
roofs = { ROOF_SILVER = {} },
},
atlasCache = {},
mapImages = {},
}
-- data/maps/maps.asm:396: SilverCaveOutside and Route28 are both group 19
-- (MapGroup_Silver) and both TILESET_KANTO.
MapPreview.atlasFor(baker, { tileset = "TILESET_KANTO", group = 19 })
MapPreview.atlasFor(baker, { tileset = "TILESET_JOHTO", group = 19 })
local keys = {}
for key in pairs(baker.atlasCache) do keys[key] = true end
T.check(keys["TILESET_KANTO"],
"the Kanto atlas is cached under the bare tileset, with no roof")
T.check(not keys["TILESET_KANTO|ROOF_SILVER"],
"and never under a map-group roof")
T.check(keys["TILESET_JOHTO|ROOF_SILVER"],
"while TILESET_JOHTO still takes its group's roof")
-- World:atlasFor is the copy the bug was filed against; it has its own
-- ROOF_TILESETS gate, so pin it separately from MapPreview's
local realAssets = package.loaded["src.render.Assets"]
package.loaded["src.render.Assets"] = setmetatable({
image = function() return { setFilter = function() end } end,
resolve = function(path) return path end,
}, { __index = realAssets or { register = function() end } })
package.loaded["src.world.gen2.World"] = nil
local World = require("src.world.gen2.World")
local world = setmetatable({
tilesets = baker.tilesets,
roofs = baker.roofs,
atlasCache = {},
}, { __index = World })
world:atlasFor({ tileset = "TILESET_KANTO", group = 19 })
world:atlasFor({ tileset = "TILESET_JOHTO", group = 19 })
T.check(world.atlasCache["TILESET_KANTO"] ~= nil
and world.atlasCache["TILESET_KANTO|ROOF_SILVER"] == nil,
"World:atlasFor bakes Kanto with no map-group roof (home/map.asm:1738-1749)")
T.check(world.atlasCache["TILESET_JOHTO|ROOF_SILVER"] ~= nil,
"and still roofs TILESET_JOHTO by group")
package.loaded["src.render.Assets"] = realAssets
package.loaded["src.world.gen2.World"] = nil
T.finish("gen2 Kanto roof gate (#1479)")