Module:Entry/titles

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 = require("Module:Entry/titles/Wii")
	},
	{
		console = "3DS",
		name = "Rhythm Heaven Megamix",
		stages = {}
	},
	{
		console = "Switch",
		name = "Rhythm Heaven Groove",
		stages = {}
	}
}

local stageEntryMT = {
	__index = function(entries, n)
		return 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