Module:Dynmap Test Isometric: Difference between revisions
From Colonia Wiki
No edit summary Tag: Manual revert  | 
				No edit summary  | 
				||
| Line 22: | Line 22: | ||
     --local blockRes          = zoomBlockRes[numZoom]  |      --local blockRes          = zoomBlockRes[numZoom]  | ||
     local blockRes          =   |      local blockRes          = 4  | ||
     local blocksPerTileAxis = 128 / blockRes  |      local blocksPerTileAxis = 128 / blockRes  | ||
     local XAxisTileCount    = math.ceil((numXEnd - numXStart) / blocksPerTileAxis)  |      local XAxisTileCount    = math.ceil((numXEnd - numXStart) / blocksPerTileAxis)  | ||
Revision as of 05:05, 7 March 2024
Documentation for this module may be created at Module:Dynmap Test Isometric/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          = 4
    local blocksPerTileAxis = 128 / blockRes
    local XAxisTileCount    = math.ceil((numXEnd - numXStart) / blocksPerTileAxis)
    local YAxisTileCount    = math.ceil((numYEnd - numYStart) / blocksPerTileAxis)
    local tilePaths = {}
    for y = YAxisTileCount, 1, -1 do
        tilePaths[y] = {}
        for x = XAxisTileCount, 1, -1 do
            -- TODO: honor zoom level
            tilePaths[y][x] = "https://colonia.lightni.ng/map/tiles/world/t/0_0/" .. math.ceil(numXStart / blocksPerTileAxis) + x .. "_" .. math.ceil(numYStart / blocksPerTileAxis) + y .. ".png"
        end
    end
    return tilePaths
end
function p.generateTable(tilePaths)
    data = "{| cellpadding=0 cellspacing=0"
    for y = #tilePaths, 1, -1 do
        data = data .. "\n|-\n| " .. tilePaths[y][1]
        for x = 2, #tilePaths[y], 1 do
            data = data .. " ||" .. tilePaths[y][x]
        end
    end
    data = data .. "\n|}"
    return data
end
function p.map(frame)
    local zoom = frame.args[1]
    local x0 = frame.args[2]
    local y0 = frame.args[3]
    local x1 = frame.args[4]
    local y1 = frame.args[5]
    local tilePaths = p.getMapTilePaths(zoom, x0, y0, x1, y1)
    local data = p.generateTable(tilePaths)
    return tostring(data)
end
return p
