new menus

This commit is contained in:
DramaticShape
2026-08-08 12:18:35 -04:00
parent 66da6cbc4b
commit 2907aba6ff
3 changed files with 33 additions and 17 deletions
+5 -2
View File
@@ -92,8 +92,11 @@
rows it has quietly taken away. It opens VOXEL and T-SHIFT, which came off
the engine's list with it, and four categories: **3D WORLD** (V-GRID,
V-CURVE, RENDER DIST, WATER, DAYTIME), **BATTLES** (3D-BTL, BACK SPRITES,
LET'S GO, STADIUM ROM), **PERFORMANCE** (FOREST FX, SHADOWS, AA) and
**VR** (VR, SMOOTH TURN).
LET'S GO), **PERFORMANCE** (FOREST FX, SHADOWS, AA) and **VR** (VR,
SMOOTH TURN). STADIUM ROM stays on that top-level menu, last: it is
one-time setup rather than a setting, and somebody who has been told to
import a cartridge should find the row where the mod begins, not two
levels down a category they have no reason to open until it has worked.
The split is not a new opinion: it is the `full` flag each row already
carried. `full` marks a row the FULL preset does not take away, and the
+16 -11
View File
@@ -166,6 +166,22 @@ function SettingsMenu.rows(catId, game)
}
end
end
-- ------- and the ROM import, last, on the top-level menu
--
-- An ACTION and not a setting: there is no rung to store, nothing for the
-- mod manager's page to persist and nothing to restore on the next boot,
-- so it is appended rather than living in SETTINGS.
--
-- On the ROOT menu rather than under the battles whose STADIUM rungs it
-- unlocks. It is a piece of one-time SETUP -- point the mod at a cartridge
-- and wait while it builds -- and a player who has been told to import a
-- ROM should find the row where the mod begins, not two levels down a
-- category they have no reason to open until it has worked. Last, because
-- the categories are what the menu is FOR.
local ok, importRow = pcall(function()
return V.require("StadiumRomPick").row()
end)
if ok and importRow then out[#out + 1] = importRow end
return out
end
for _, entry in ipairs(settings) do
@@ -173,17 +189,6 @@ function SettingsMenu.rows(catId, game)
out[#out + 1] = entry[1]:row()
end
end
-- and the ROM import, which is an ACTION and not a setting: there is no
-- rung to store, nothing for the mod manager's page to persist and nothing
-- to restore on the next boot, so it is appended here rather than living in
-- SETTINGS. It sits under the battles because the STADIUM rungs of 3D-BTL
-- are what it unlocks.
if catId == "battles" then
local ok, importRow = pcall(function()
return V.require("StadiumRomPick").row()
end)
if ok and importRow then out[#out + 1] = importRow end
end
return out
end
+12 -4
View File
@@ -434,10 +434,18 @@ for key, cat in pairs(WHERE) do
("%s is on the %s menu"):format(key, cat))
end
end
-- the ROM import is an action, not a setting, and it sits with the rungs of
-- 3D-BTL it unlocks
T.check(Menus.rows("battles")["DRAMATIC_SHAPE:stadiumRom"],
"and STADIUM ROM is under the battles, which is what it unlocks")
-- the ROM import is an action, not a setting, and it is one-time SETUP, so it
-- sits on the top-level menu where the mod begins rather than two levels down
-- the category it unlocks
T.check(Menus.rows(Menus.lib.ROOT)["DRAMATIC_SHAPE:stadiumRom"],
"and STADIUM ROM is on the top-level menu, not inside a category")
T.check(not Menus.rows("battles")["DRAMATIC_SHAPE:stadiumRom"],
"and only there")
do
local rootRows = Menus.lib.rows(Menus.lib.ROOT, { data = Data })
T.eq(rootRows[#rootRows].id, "DRAMATIC_SHAPE:stadiumRom",
"last on it, because the categories are what the menu is for")
end
end
-- ------- the open menu notices when FULL is stepped onto or off