Module:BlazingTwist/DragonStats/Database/DragonsDB

From DreamWorks School of Dragons Wiki
Jump to navigation Jump to search

Documentation for this module may be created at Module:BlazingTwist/DragonStats/Database/DragonsDB/doc

local keyPool = {
	--[[dragons--]] {"TerribleTerror", "Gronckle", "Zippleback", "NightFury", "DeadlyNadder", "Nightmare", "Timberjack", "Thunderdrum", "WhisperingDeath", "Skrill", "Scauldron", "RumbleHorn", "Flightmare", "Hobblegrunt", "Smokebreath", "Typhoomerang", "Raincutter", "Boneknapper", "Hotburple", "Stormcutter", "Snafflefang", "Changewing", "FirewormQueen", "ScreamingDeath", "TideGlider", "Scuttleclaw", "SandWraith", "SweetDeath", "WoollyHowl", "Shivertooth", "Groncicle", "SpeedStinger", "Shockjaw", "Moldruffle", "Mudraker", "Deathsong", "Razorwhip", "GrappleGrounder", "SnowWraith", "Prickleboggle", "Sliquifier", "DevilishDervish", "Snaptrapper", "Quaken", "Thunderpede", "NightTerror", "ArmorWing", "Slithersong", "Shovelhelm", "Windwalker", "Eruptodon", "Singetail", "SilverPhantom", "Buffalord", "FlameWhipper", "TripleStryke", "Sentinel", "SentinelElder", "GrimGnasher", "Dramillion", "FireTerror", "DeathGripper", "LightFury", "CrimsonGoregutter", "Hobgobbler", "HobgobblerSpecial", "Skrillknapper", "FlightStinger", "NightlightBlackBlue", "NightlightBlackGreen", "NightlightWhite", "Zapplejack", "Galeslash", "Ridgesnipper", "Abomibumble", "Bonestormer", "Chimeragon", "Slitherwing", "Seastormer", "CavernCrasher", "Humbanger", "GoldenDragon", "Hushboggle", "Zipplewraith", "Goregripper", "Graveknapper", "Frostmare", "Sandbuster", "Songwing"},
	--[[metaInfo--]] {"hasTitan"},
}
local typePool = {
	--[[dragonsMap--]] { key = 1, types = { {ki = 2} } },
}
local compressedDataTable = {
	{true},
	{true},
	{true},
	{false},
	{true},
	{true},
	{true},
	{true},
	{true},
	{true},
	{true},
	{true},
	{true},
	{false},
	{false},
	{false},
	{false},
	{true},
	{false},
	{true},
	{false},
	{false},
	{false},
	{true},
	{false},
	{true},
	{true},
	{false},
	{true},
	{false},
	{false},
	{true},
	{true},
	{false},
	{false},
	{true},
	{true},
	{false},
	{true},
	{false},
	{false},
	{false},
	{false},
	{false},
	{false},
	{false},
	{false},
	{false},
	{false},
	{false},
	{false},
	{false},
	{true},
	{true},
	{false},
	{true},
	{true},
	{false},
	{true},
	{true},
	{false},
	{true},
	{false},
	{true},
	{true},
	{false},
	{false},
	{false},
	{false},
	{false},
	{false},
	{false},
	{false},
	{false},
	{false},
	{false},
	{true},
	{true},
	{false},
	{true},
	{true},
	{false},
	{true},
	{true},
	{false},
	{false},
	{false},
	{false},
	{false},
}
local function resolveTypeMapping(targetTable, dataType, dataTable)
    if dataTable == nil then
        return
    end

    if dataType.ki ~= nil then
        local keyOrder = keyPool[dataType.ki]
        for i,key in ipairs(keyOrder) do
            targetTable[key] = dataTable[i]
        end
    else
        local pooledType = typePool[dataType.ti]
        local keyOrder = keyPool[pooledType.key]
        local subTypes = pooledType.types
        local numTypes = #subTypes
        local currentSubType = 1

        for i,key in ipairs(keyOrder) do
            local value = {}
            resolveTypeMapping(value, subTypes[currentSubType], dataTable[i])
            targetTable[key] = value
            currentSubType = (currentSubType % numTypes) + 1
        end
    end
end
local resultTable = {}
resolveTypeMapping(resultTable, {ti = 1}, compressedDataTable)
return resultTable