Module:Data:修订间差异
小无编辑摘要 |
小 (代码重新整理) |
||
第1行: | 第1行: | ||
local getArgs = require('Module:Arguments').getArgs | local getArgs = require('Module:Arguments').getArgs | ||
local loadJson =require("Module:LoadJson") | local loadJson = require("Module:LoadJson") | ||
local p = {} | local p = {} | ||
function makeInvokeFunc(funcName) | |||
return function (frame) | |||
local args = getArgs(frame) | |||
return p[funcName](args) | |||
end | |||
end | end | ||
第14行: | 第14行: | ||
function p._pack(args) | function p._pack(args) | ||
local json = loadJson.Packlist()['packs'] | |||
for i, k in ipairs(json) do | |||
if k['id'] == args[1] then | |||
return k['name_localized']['en'] | |||
end | |||
end | |||
end | end | ||
function p.unlock(songId) | function p.unlock(songId) | ||
local json = loadJson.unlocks()['unlocks'] | |||
local result = {} | |||
for i, k in ipairs(json) do | |||
if k['songId'] == songId | |||
then | |||
result[tonumber(k['ratingClass'] + 1)] = k['conditions'] | |||
end | |||
end | |||
return result | |||
end | end | ||
第36行: | 第37行: | ||
function p._song(args) | function p._song(args) | ||
local json | |||
if args['type'] or args[3] == 'ns' | |||
then | |||
json = loadJson.Songlist() | |||
else | |||
json = loadJson.SonglistNS() | |||
end | end | ||
return getSingle(json, args[1], args['index'])(args[2]) | |||
end | end | ||
function getSingle(json, | function getSingle(json, index, genre) | ||
local s,list="",{} | local s, list = "", {} | ||
for i,k in ipairs(json['songs']) do | if genre == "id" | ||
then | |||
list = json | |||
else | |||
for i, k in ipairs(json['songs']) do | |||
s = k['title_localized']['en'] | |||
list[s] = k | |||
end | |||
end | end | ||
return function( | return function(key) | ||
local info=list[ | local info = list[index] | ||
if list[ | if list[index] == nil then return nil end | ||
local switch = { | local switch = { | ||
第150行: | 第72行: | ||
return info['title_localized']['en'] | return info['title_localized']['en'] | ||
end, | end, | ||
["artist"] = function() | |||
return info["artist"] | return info["artist"] | ||
end, | end, | ||
第169行: | 第91行: | ||
end, | end, | ||
["bg"] = function() | ["bg"] = function() | ||
if info["bg"] ~= "" then | |||
return info["bg"] | |||
else | else | ||
if info["side"] == 0 then | |||
return 'base_light' | |||
else | |||
return 'base_conflict' | |||
end | |||
end | end | ||
end, | end, | ||
第205行: | 第127行: | ||
["ftrRating"] = function() | ["ftrRating"] = function() | ||
if info["difficulties"][3]['ratingPlus'] | if info["difficulties"][3]['ratingPlus'] | ||
then | |||
return info["difficulties"][3]['rating']..'+' | return info["difficulties"][3]['rating'] .. '+' | ||
else | else | ||
return info["difficulties"][3]['rating'] | return info["difficulties"][3]['rating'] | ||
第237行: | 第159行: | ||
end, | end, | ||
["ftrChange"] = function() | ["ftrChange"] = function() | ||
if info["difficulties"][3] then | |||
return info["difficulties"][3]['has_controller_alt_chart'] | return info["difficulties"][3]['has_controller_alt_chart'] | ||
end | end | ||
第243行: | 第165行: | ||
} | } | ||
if switch[key] == nil then return nil end | |||
return switch[key]() | |||
end | end | ||
end | end | ||
function p.getMobile(name) | function p.getMobile(name) | ||
return getSingle(loadJson.Songlist(),name) | return getSingle(loadJson.Songlist(), name, 'name') | ||
end | end | ||
function p.getNS(name) | function p.getNS(name) | ||
return getSingle(loadJson.SonglistNS(),name) | return getSingle(loadJson.SonglistNS(), name, 'name') | ||
end | end | ||
return p | return p |
2021年7月19日 (一) 13:10的版本
可在Module:Data/doc创建此模块的帮助文档
local getArgs = require('Module:Arguments').getArgs
local loadJson = require("Module:LoadJson")
local p = {}
function makeInvokeFunc(funcName)
return function (frame)
local args = getArgs(frame)
return p[funcName](args)
end
end
p.pack = makeInvokeFunc('_pack')
function p._pack(args)
local json = loadJson.Packlist()['packs']
for i, k in ipairs(json) do
if k['id'] == args[1] then
return k['name_localized']['en']
end
end
end
function p.unlock(songId)
local json = loadJson.unlocks()['unlocks']
local result = {}
for i, k in ipairs(json) do
if k['songId'] == songId
then
result[tonumber(k['ratingClass'] + 1)] = k['conditions']
end
end
return result
end
p.song = makeInvokeFunc('_song')
function p._song(args)
local json
if args['type'] or args[3] == 'ns'
then
json = loadJson.Songlist()
else
json = loadJson.SonglistNS()
end
return getSingle(json, args[1], args['index'])(args[2])
end
function getSingle(json, index, genre)
local s, list = "", {}
if genre == "id"
then
list = json
else
for i, k in ipairs(json['songs']) do
s = k['title_localized']['en']
list[s] = k
end
end
return function(key)
local info = list[index]
if list[index] == nil then return nil end
local switch = {
["id"] = function()
return info["id"]
end,
["title"] = function()
return info['title_localized']['en']
end,
["artist"] = function()
return info["artist"]
end,
["bpm"] = function()
return info["bpm"]
end,
["set"] = function()
return info["set"]
end,
["side"] = function()
return info["side"]
end,
["date"] = function()
return info["date"]
end,
["version"] = function()
return info["version"]
end,
["bg"] = function()
if info["bg"] ~= "" then
return info["bg"]
else
if info["side"] == 0 then
return 'base_light'
else
return 'base_conflict'
end
end
end,
["pstChartDesigner"] = function()
return info["difficulties"][1]['chartDesigner']
end,
["pstJacketDesigner"] = function()
return info["difficulties"][1]['jacketDesigner']
end,
["pstRating"] = function()
return info["difficulties"][1]['rating']
end,
["prsChartDesigner"] = function()
return info["difficulties"][2]['chartDesigner']
end,
["prsJacketDesigner"] = function()
return info["difficulties"][2]['jacketDesigner']
end,
["prsRating"] = function()
return info["difficulties"][2]['rating']
end,
["ftrChartDesigner"] = function()
return info["difficulties"][3]['chartDesigner']
end,
["ftrJacketDesigner"] = function()
return info["difficulties"][3]['jacketDesigner']
end,
["ftrRating"] = function()
if info["difficulties"][3]['ratingPlus']
then
return info["difficulties"][3]['rating'] .. '+'
else
return info["difficulties"][3]['rating']
end
end,
["bydChartDesigner"] = function()
if info["difficulties"][4] then
return info["difficulties"][4]['chartDesigner']
end
end,
["bydJacketDesigner"] = function()
if info["difficulties"][4] then
return info["difficulties"][4]['jacketDesigner']
end
end,
["bydRating"] = function()
if info["difficulties"][4] then
return info["difficulties"][4]['rating']
end
end,
["pstChange"] = function()
if info["difficulties"][1] then
return info["difficulties"][1]['has_controller_alt_chart']
end
end,
["prsChange"] = function()
if info["difficulties"][2] then
return info["difficulties"][2]['has_controller_alt_chart']
end
end,
["ftrChange"] = function()
if info["difficulties"][3] then
return info["difficulties"][3]['has_controller_alt_chart']
end
end
}
if switch[key] == nil then return nil end
return switch[key]()
end
end
function p.getMobile(name)
return getSingle(loadJson.Songlist(), name, 'name')
end
function p.getNS(name)
return getSingle(loadJson.SonglistNS(), name, 'name')
end
return p