Módulo:MapLocations

De ARK Wiki
Ir para navegação Ir para pesquisar

A documentação para este módulo pode ser criada em Módulo:MapLocations/doc

local p = {}
function p.maplocations( f )
  local args = f:getParent().args
  -- set default values (borderCoords are for top, right, bottom, left)
  local map, borderCoords, mapsize, markersize, markercolor, opacity, text, float = 'Map The Island.jpg', {t=6.45,r=89.79,b=93.44,l=7.46}, '300px', 3, '#f40', 1, '', ''

  -- get values from parameters
  if args.map ~= nil then
    map = args.map
  end
  if args.mapsize ~= nil then
    mapsize = args.mapsize
  end
  if args.markersize ~= nil then
    markersize = args.markersize
  end
  if args.markercolor ~= nil then
    markercolor = args.markercolor
  end
  if args.opacity ~= nil then
    opacity = args.opacity
  end
  if args.text ~= nil then
    text = args.text
  end
  if args.float ~= nil then
    float = args.float
  end
  if args.borderCoordT ~= nil then
    borderCoords.t = args.borderCoordT
  end
  if args.borderCoordR ~= nil then
    borderCoords.r = args.borderCoordR
  end
  if args.borderCoordB ~= nil then
    borderCoords.b = args.borderCoordB
  end
  if args.borderCoordL ~= nil then
    borderCoords.l = args.borderCoordL
  end

  local locations, lat, lon, ms = {}, 0, 0, 0
  for _,l in ipairs(args) do
    ms = markersize
    local parts = {}
    for part in string.gmatch(l, "([^,]+)") do
      table.insert(parts,part)
    end

    if #parts > 1 then
      lat = parts[1]
      lon = parts[2]
      if #parts > 2 then
        ms = parts[3]
      end
      table.insert(locations,'<div style="position:absolute;left:'.. 100* (lon-borderCoords.l)/(borderCoords.r-borderCoords.l) - ms/2 ..'%;top:'.. 100* (lat-borderCoords.t)/(borderCoords.b-borderCoords.t) - ms/2 ..'%;padding:0;width:'..ms..'%;height:'..ms..'%;border-radius:50%;background-color:'..markercolor..';border:1px solid black;opacity:'..opacity..'" title="lat '..lat..', lon '..lon..'"></div>')
    end
  end
  local subtitle = ''
  if text ~= '' then
    subtitle = '\n|-\n| align="middle" | '..text
  end
  return '{| class="wikitable" style="float:'..float..'"\n|-\n|<div class="noviewer" style="position: relative;width:'..mapsize..';height:'..mapsize..'">'..table.concat(locations)..'[[File:'..map..'|'..mapsize..']]</div>'..subtitle..'\n|}'
end
return p