Wiki L'encyclopédie Moga
Advertisement
Wiki L'encyclopédie Moga
19 617
pages

La documentation pour ce module peut être créée à Module:Games Database/doc

--[[ Ce module a pour but de centraliser, standardiser et faciliter l'accès aux informations portant sur les jeux.

Il constitue une base de données avec des fonctions permettant d'accéder aux données, et doit donc être tenu à jour.]]
local p = {}
-- Sert pour le formattage de dates 
local lang = mw.getLanguage( 'fr' )
local mh = "Monster Hunter"

-- Liste des zones géographiques utiles pour les jeux MH, on précise aussi qui est inclue dans qui
local aliases = {
    an = {n="Amérique du Nord", sup="oc"},
    au = {n="Australie", sup="oc"},
    ch = {n="Chine", sup="m"},
    co = {n="Corée", sup="m"},
    eu = {n="Europe", sup="oc"},
    ja = {n="Japon", sup="m"},
    m  = {n="Monde"},
    oc = {n="Occident", sup="m"},
}

-- Banque de données des jeux 
-- Merci d'ajouter les monstres dans l'ordre chrnologique de première sortie, afin de faciliter l'entretion
--[[ Abbréviation : 
    - r "realeases"
    - s "short" (nom abbrégé) 
]]
local games = {
    {name = mh, r = {an = "21-09-2004", eu = "27-05-2005", ja = "11-03-2004"}, s = "MH"},
    {name = {oc = mh .. " Freedom", ja = mh .. " Portable"}, r = {an="23-05-2006", au="26-05-2006", co="21-09-2006", eu="12-05-2006", ja="01-12-2005"}, s = "MHF" },
    {name = {oc = mh .. " Freedom 2", ja = mh .. " Portable 2"}, r = {an="29-05-2007", au="12-09-2007", co="28-05-2007", eu="07-09-2007", ja="22-02-2007"}, s = "MHF2" },
    {name = {oc = mh .. " Freedom Unite", ja = mh .. " Portable 2G"}, r = {an="22-06-2009", au="23-06-2009", co="29-03-2008", eu="26-06-2009", ja="27-03-2008"}, s = "MHFU" },
    -- Remarque : on ne tient pas compte ici du portage de MHFU sur iOS
    {name = {oc = mh .. " 3", ja = mh .. " Tri"}, r = {an="20-04-2010", au="29-04-2010", eu="23-04-2010", ja="01-08-2009"}, s = "MH3" },
    {name = {oc = mh .. " 3 Ultimate", jp = mh .. " 3G"}, r = {an="19-03-2013", au="23-03-2013", eu="22-03-2013", ja="10-11-2011"}, s = {oc="MH3U", ja="MH3G"} },
    {name = mh .. " 4", r = {co = "14-12-2013", ja = "14-09-2013"}, s = "MH4" },
    {name = {oc = mh .. " 4 Ultimate", jp = mh .. " 4G"}, r = {an="13-02-2015", au="14-02-2015", eu="13-02-2015", ja="11-10-2014"}, s = {oc="MH4U", ja="MH4G"} },
    {name = {oc = mh .. " Generations", jp = mh .. " X"}, r = {oc="15-07-2016", ja="28-11-2015"}, s = {oc="MHGen", ja="MHX"} },
    {name = {oc = mh .. " Generations Ultimate", jp = mh .. " XX"}, r = {oc="28-08-2018", ja="25-08-2017"}, s = {oc="MHGU", ja="MHXX"} },
    {name = mh .. ": World", r = {w="26-01-2018"}, s = "MHW" },
    {name = mh .. " World: Iceborne", r = {w="06-09-2019"}, s = "MHWI" },
}

-- Trouve la ligne de la base de donnée dont le titre du jeu correspond au titre entré
function find_game(name) 
   for k, v in pairs(games) do
        if v.name == name then
            return v
        end
    end 
end

-- Renvoie son nom par défaut si le monstre en argument d'entré est référencé et rien sinon. Possibilité d'ajouter un opus en perticulier ou une langue différente
function p.existe(a)
    return find_game(a.args["1"]) ~= nil
end

-- Renvoie la date de parution d'un jeu dans une zone géographique donnée, format personnalisable
function p.get_date(a)
    local game = find_game(a.args["1"])
    local date_format = a.args["format"] or 'd F Y'
    return lang:formatDate(date_format, game.r[a.args.zone])
end

-- Prend en entrée deux dates au format FRANÇAIS et renvoie les dates au format "Ymd", permet de comparer deux dates entre elles pour les trier
function comp_dates(d1, d2)
    mw.log(d1)
   return lang:formatDate("Ymd", d1) > lang:formatDate("Ymd", d2) 
end

-- Renvoie toutes les dates de parution d'un jeu, dans toutes ses zones, le format est personnalisable
function p.get_all_dates(a)
    if not p.existe(a) then
        error("Le jeu " .. a.args["1"] .. " ne figure pas dans la base de donneés")
    end
    local game = find_game(a.args["1"])
    local out = ""
    a.args["format"] = a.args["format"] or 'd F Y'
    a.args["sep"] = a.args["sep"] or "\n"
    table.sort(game.r, comp_dates)
    for k, v in pairs(game.r) do
        out = out .. aliases[k].n .. " - " .. lang:formatDate(a.args["format"], v) .. a.args["sep"]
    end
    return mw.ustring.sub(out, 1, -#a.args["sep"] - 1)
end

return p
Advertisement