Module:Data:修订间差异

来自Arcaea中文维基
(修复bydBg项bug,添加ftrBg项)
标签已被回退
(添加全bg读取支持)
标签已被回退
第180行: 第180行:
          if info["difficulties"][3] then
          if info["difficulties"][3] then
            return info["difficulties"][3]['has_controller_alt_chart']
            return info["difficulties"][3]['has_controller_alt_chart']
         end
       end,
       ["ftrBg"] = function()
         if info["difficulties"][3] and info["difficulties"][3]['bg'] then
           return info["difficulties"][3]['bg']
          end
          end
        end,
        end,
第190行: 第185行:
          if info["difficulties"][4] then
          if info["difficulties"][4] then
            return info["difficulties"][4]['audioOverride']
            return info["difficulties"][4]['audioOverride']
         end
       end,
       ["bydBg"] = function()
         if info["difficulties"][4] and info["difficulties"][4]['bg'] then
           return info["difficulties"][4]['bg']
          end
          end
        end,
        end,
第205行: 第195行:
          if info["difficulties"][4] then
          if info["difficulties"][4] then
            return info["difficulties"][4]['artist']
            return info["difficulties"][4]['artist']
         end
       end,
       ["pstBg"] = function()
         if info["difficulties"][1] and info["difficulties"][1]['bg'] then
           return info["difficulties"][1]['bg']
         else
           if info["bg"] ~= "" then
             return info["bg"]
           else
             if info["side"] == 0 then
               return 'base_light'
             else
               return 'base_conflict'
             end
           end
         end
       end,
       ["prsBg"] = function()
         if info["difficulties"][2] and info["difficulties"][2]['bg'] then
           return info["difficulties"][2]['bg']
         else
           if info["bg"] ~= "" then
             return info["bg"]
           else
             if info["side"] == 0 then
               return 'base_light'
             else
               return 'base_conflict'
             end
           end
         end
       end,
       ["ftrBg"] = function()
         if info["difficulties"][3] and info["difficulties"][3]['bg'] then
           return info["difficulties"][3]['bg']
         else
           if info["bg"] ~= "" then
             return info["bg"]
           else
             if info["side"] == 0 then
               return 'base_light'
             else
               return 'base_conflict'
             end
           end
         end
       end,
       ["bydBg"] = function()
         if info["difficulties"][4] and info["difficulties"][4]['bg'] then
           return info["difficulties"][4]['bg']
         else
           if info["bg"] ~= "" then
             return info["bg"]
           else
             if info["side"] == 0 then
               return 'base_light'
             else
               return 'base_conflict'
             end
           end
          end
          end
        end
        end

2024年8月12日 (一) 01:55的版本

可在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 covList={
		['chunithm_append_1']='CHUNITHM Collaboration - Collaboration Chapter 2',
		['dividedheart']='Divided Heart',
		['groovecoaster']='Groove Coaster Collaboration',
		['lanota']='Lanota Collaboration',
		['lanota_append_1']='Lanota Collaboration - Collaboration Chapter 2',
		['tonesphere']='Tone Sphere Collaboration',
		['chunithm']='CHUNITHM Collaboration',
		['dynamix']='Dynamix Collaboration',
		['maimai']='maimai Collaboration',
		['ongeki']='O.N.G.E.K.I. Collaboration',
		['musedash']='Muse Dash Collaboration',
		['single']='Memory Archive'
	}
    if covList[args[1]] then return covList[args[1]] end
    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
        for i, k in ipairs(json['songs']) do
        	if k['id'] == index then
        		list[index] = k
        	end
        end
    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,
            ["bydAudioChange"] = function()
                if info["difficulties"][4] then
                    return info["difficulties"][4]['audioOverride']
                end
            end,
            ["bydBPM"] = function()
                if info["difficulties"][4] then
                    return info["difficulties"][4]['bpm']
                end
            end,
            ["bydArtist"] = function()
                if info["difficulties"][4] then
                    return info["difficulties"][4]['artist']
                end
            end,
            ["pstBg"] = function()
                if info["difficulties"][1] and info["difficulties"][1]['bg'] then
                    return info["difficulties"][1]['bg']
                else
                    if info["bg"] ~= "" then
                        return info["bg"]
                    else
                        if info["side"] == 0 then
                            return 'base_light'
                        else
                            return 'base_conflict'
                        end
                    end
                end
            end,
            ["prsBg"] = function()
                if info["difficulties"][2] and info["difficulties"][2]['bg'] then
                    return info["difficulties"][2]['bg']
                else
                    if info["bg"] ~= "" then
                        return info["bg"]
                    else
                        if info["side"] == 0 then
                            return 'base_light'
                        else
                            return 'base_conflict'
                        end
                    end
                end
            end,
            ["ftrBg"] = function()
                if info["difficulties"][3] and info["difficulties"][3]['bg'] then
                    return info["difficulties"][3]['bg']
                else
                    if info["bg"] ~= "" then
                        return info["bg"]
                    else
                        if info["side"] == 0 then
                            return 'base_light'
                        else
                            return 'base_conflict'
                        end
                    end
                end
            end,
            ["bydBg"] = function()
                if info["difficulties"][4] and info["difficulties"][4]['bg'] then
                    return info["difficulties"][4]['bg']
                else
                    if info["bg"] ~= "" then
                        return info["bg"]
                    else
                        if info["side"] == 0 then
                            return 'base_light'
                        else
                            return 'base_conflict'
                        end
                    end
                end
            end
        }

        if switch[key] == nil then return nil end

        return switch[key]()
    end
end

function p.getMobile(name, id)
	if id then
		return getSingle(loadJson.Songlist(), id, 'id')
	else
		return getSingle(loadJson.Songlist(), name, 'name')
	end
end

function p.getNS(name, id)
	if id then
		return getSingle(loadJson.SonglistNS(), id, 'id')
	else
		return getSingle(loadJson.SonglistNS(), name, 'name')
	end
end

return p