Module:Dynmap Test

From Colonia Wiki
Revision as of 03:24, 7 March 2024 by J0w03L (talk | contribs) (i forgor lua tables start at 1)

Documentation for this module may be created at Module:Dynmap Test/doc

local p = {}

-- How many pixels does a block take up at different zoom levels?
local zoomBlockRes = {}
zoomBlockRes[6]    = 4
zoomBlockRes[5]    = 1

function p.getMapTilePaths(zoom, x0, y0, x1, y1)
    local numZoom = tonumber(zoom) or 0

    if (tonumber(x0) or 0) <= (tonumber(x1) or 0) then
        numXStart = tonumber(x0) or 0
        numYStart = tonumber(y0) or 0
        numXEnd   = tonumber(x1) or 0
        numYEnd   = tonumber(y1) or 0
    else
        numXStart = tonumber(x1) or 0
        numYStart = tonumber(y1) or 0
        numXEnd   = tonumber(x0) or 0
        numYEnd   = tonumber(y0) or 0
    end

    --local blockRes          = zoomBlockRes[numZoom]
    local blockRes          = 1
    local blocksPerTileAxis = 128 / blockRes
    local XAxisTileCount    = math.ceil((numXStart - numXEnd) / blocksPerTileAxis)
    local YAxisTileCount    = math.ceil((numYStart - numYEnd) / blocksPerTileAxis)

    local tilePaths = {}
    
    for y = 0, YAxisTileCount do
        for x = 0, XAxisTileCount do
            -- TODO: honor zoom level
            tilePaths[y + 1] = "https://colonia.lightni.ng/map/tiles/world/flat/0_0/z_" .. x .. "_" .. y .. ".jpg"
        end
    end

    return tilePaths
end

function p.generateTable(tilePaths)
    data = "{|cellpadding=0 cellspacing=0\n|-"

    for y = 0, table.getn(tilePaths) do
        data = data .. "\n|-\n| " .. tilePaths[y + 1][1] .. " ||"
        for x = 1, table.getn(tilePaths[y]) do
            data = data .. " " .. tilePaths[y + 1][x + 1]
        end
    end

    data = data .. "\n|}"
    return data
end

function p.map(zoom, x0, y0, x1, y1)
    local tilePaths = p.getMapTilePaths(zoom, x0, y0, x1, y1)
    local data = p.generateTable(tilePaths)
    return data
end

return p