Module:Entry/titles: Difference between revisions

From Rhythm Heaven Wiki
Jump to navigation Jump to search
(Reimplement to support ordered traversal)
(Rhythm Heaven DS entries are there)
Line 14: Line 14:
console = "DS",
console = "DS",
name = "Rhythm Heaven",
name = "Rhythm Heaven",
stages = {}
stages = require("Module:Entry/titles/DS")
},
},
{
{

Revision as of 12:59, 9 August 2025

Documentation for this module may be created at Module:Entry/titles/doc

local p = {}
p.sequence = {
	{
		console = "GBA",
		name = "Rhythm Tengoku",
		stages = require("Module:Entry/titles/GBA")
	},
	{
		console = "Arcade",
		name = "Rhythm Tengoku (Arcade)",
		stages = require("Module:Entry/titles/Arcade")
	},
	{
		console = "DS",
		name = "Rhythm Heaven",
		stages = require("Module:Entry/titles/DS")
	},
	{
		console = "Wii",
		name = "Rhythm Heaven Fever",
		stages = {}
	},
	{
		console = "3DS",
		name = "Rhythm Heaven Megamix",
		stages = {}
	},
	{
		console = "Switch",
		name = "Rhythm Heaven Groove",
		stages = {}
	}
}

local stageEntryMT = {
	__index = function(stage, n)
		return stage.entries[tonumber(n)]
	end
}
p.lookup = {}
for _, rh in ipairs(p.sequence) do
	local stageLookup = {}
	for _, stage in ipairs(rh.stages) do
		stageLookup[stage.label] = stage
		setmetatable(stage.entries, stageEntryMT)
	end
	p.lookup[rh.console] = stageLookup
end

setmetatable(p.lookup, {
	__index = function(t, entry)
		if type(entry) == "table" then
			return t[entry.console][entry.stage].entries[entry.number]
		end
	end
})

return p