Módulo:Fishing spot

De RuneScape Wiki
Ir para: navegação, pesquisa
Documentação do módulo
Esta documentação é transcluída de Predefinição:Sem documentação/doc. [editar] [atualizar]
Este módulo não possui nenhuma documentação. Por favor, considere adicionar uma documentação em Módulo:Fishing spot/doc. [editar]
Módulo:Fishing spot's a função main é invocada por Predefinição:Local de pesca.
Módulo:Fishing spot requer Módulo:Yesno.
Módulo:Fishing spot carrega dados de Módulo:Fishing spot/Data.

local p     = {}
local data  = mw.loadData('Módulo:Fishing spot/Data')
local yesno = require('Módulo:Yesno')

local MEM_ICON = {
	[false] = '[[File:F2P ícone.png|24px|link=Free-to-play]]',
	[true]  = '[[File:P2P ícone.png|24px|link=Pay-to-play]]'
}

function p.main(frame)
	local args = frame:getParent().args
	local func = mw.ustring.lower(args[1])
	local name = args[2] or mw.title.getCurrentTitle().text
	
	if (func == "locais") then
		p = fishingSpotTable(name, frame)
	elseif (func == "peixe") then
		p = fishTable(name, frame)
	end
	
	return p
end

function fishingSpotTable(spotType, frame)
	local t = mw.html.create('table')
	:addClass('wikitable align-center-2 align-center-4 sortable autosort=1,a')
	:tag('tr')
	:tag('th')	:wikitext('Localização')	:done()
	:tag('th')	:wikitext('Número')	:done()
	:tag('th')	:wikitext('Requisitos')	:done()
	:tag('th')	:wikitext('Membros')	:done()
	:tag('th')	:wikitext('Mapa')	:done()
	:done()
	
	for _, locais in ipairs(data[spotType].spots) do
		local mem = MEM_ICON[yesno(locais.members or 'não')]
		local count = 0
		local mapArgs = {
			mapID = locais.mapID,
			mtype = 'pin',
			icon = 'redPin',
			text = 'Mostrar no mapa'
		}

		for _, coords in ipairs(locais.coords) do
			table.insert(mapArgs, string.format('x:%d, y:%d', coords[1], coords[2]))
			count = count + 1
		end
		
		local map = frame:expandTemplate{title = 'Maplink', args = mapArgs}
		
		t:tag('tr')
		:tag('td')	:wikitext(locais.location)	:done()
		:tag('td')	:wikitext(count)	:done()
		:tag('td')	:wikitext(locais.reqs)	:done()
		:tag('td')	:wikitext(mem)	:done()
		:tag('td')	:wikitext(map)	:done()
		:done()
		
	end

	return t

end

function fishTable(fish, frame)
	local t = mw.html.create('table')
	:addClass('wikitable align-center-3 align-center-5 sortable autosort=1,a')
	:tag('tr')
	:tag('th')	:wikitext('Local')	:done()
	:tag('th')	:wikitext('Localização')	:done()
	:tag('th')	:wikitext('Número')	:done()
	:tag('th')	:wikitext('Requisitos')	:done()
	:tag('th')	:wikitext('Membros')	:done()
	:tag('th')	:wikitext('Mapa')	:done()
	:done()
	
	for spotType, spotInfo in pairs(data) do
		
		mw.log(spotType)
		
		local hasFish = false
		
		for _, catch in ipairs(spotInfo.catches) do
			mw.log(catch.fish)
			if catch.fish == fish then 
				hasFish = true 
				break
			end
		end
		
		if hasFish then
			
			for _, spot in ipairs(spotInfo.spots) do
			
				local mem = MEM_ICON[yesno(spot.members or 'no')]
				local count = 0
				local mapArgs = {
					mapID = spot.mapID,
					mtype = 'pin',
					icon = 'redPin',
					text = 'Mostrar no mapa'
				}
		
				for _, coords in ipairs(spot.coords) do
					table.insert(mapArgs, string.format('x:%d, y:%d', coords[1], coords[2]))
					count = count + 1
				end
		
				local map = frame:expandTemplate{title = 'Maplink', args = mapArgs}
				
				local spotText
				
				if spotInfo.shortName then 
					spotText = '[[' .. spotType .. '|' .. spotInfo.shortName .. ']]'
				else
					spotText = '[[' .. spotType .. ']]'	
				end
				
				t:tag('tr')
				:tag('td')	:wikitext(spotText)	:done()
				:tag('td')	:wikitext(spot.location)	:done()
				:tag('td')	:wikitext(count)	:done()
				:tag('td')	:wikitext(spot.reqs)	:done()
				:tag('td')	:wikitext(mem)	:done()
				:tag('td')	:wikitext(map)	:done()
				:done()
				
			end
			
		end
		
	end

	return t

end

return p