Anonymous

Module:Skills/Cartography: Difference between revisions

From Melvor Idle
Hide POI Discovery table if empty
(Added Discovery Modifier column to POI table)
(Hide POI Discovery table if empty)
(One intermediate revision by the same user not shown)
Line 105: Line 105:
end
end
return reqTable
return reqTable
end
function p._getDiscoveryRewards(POI)
local rewardTable = {}
if POI.discoveryRewards ~= nil then
if POI.discoveryRewards.gp ~= nil then
table.insert(rewardTable, Icons.GP(POI.discoveryRewards.gp))
end
if POI.discoveryRewards.sc ~= nil then
table.insert(rewardTable, Icons.SC(POI.discoveryRewards.sc))
end
if POI.discoveryRewards.items ~= nil then
for j, reward in pairs(POI.discoveryRewards.items) do
local item = Items.getItemByID(reward.id)
local qty = reward.quantity
table.insert(rewardTable, Icons.Icon({item.name, type='item', qty = qty}))
end
end
end
return rewardTable
end
function p.sortPOIByCoords(array)
table.sort(array, function(a, b)
local aX, aY = p.convertAxialToXY(a.coords)
local bX, bY = p.convertAxialToXY(b.coords)
if aX ~= bX then
return aX < bX
else
return aY < bY
end
end)
end
end


Line 117: Line 149:
table.insert(POIs, POI)
table.insert(POIs, POI)
end
end
p.sortPOIByCoords(POIs)
table.sort(POIs, function(a, b)
local aX, aY = p.convertAxialToXY(a.coords)
local bX, bY = p.convertAxialToXY(b.coords)
if aX ~= bX then
return aX < bX
else
return aY < bY
end
end)
for i, POI in pairs(POIs) do
for i, POI in pairs(POIs) do
Line 162: Line 185:
--Add Discovery Rewards
--Add Discovery Rewards
table.insert(tableStr, '\r\n|')
table.insert(tableStr, '\r\n|')
if POI.discoveryRewards ~= nil then
local rewardTable = p._getDiscoveryRewards(POI)
local rewardTable = {}
table.insert(tableStr, table.concat(rewardTable,'<br/>'))
if POI.discoveryRewards.gp ~= nil then
table.insert(rewardTable, Icons.GP(POI.discoveryRewards.gp))
end
if POI.discoveryRewards.sc ~= nil then
table.insert(rewardTable, Icons.SC(POI.discoveryRewards.sc))
end
if POI.discoveryRewards.items ~= nil then
for j, reward in pairs(POI.discoveryRewards.items) do
local item = Items.getItemByID(reward.id)
local qty = reward.quantity
table.insert(rewardTable, Icons.Icon({item.name, type='item', qty = qty}))
end
end
table.insert(tableStr, table.concat(rewardTable,'<br/>'))
end
--Add Discovery Modifiers
--Add Discovery Modifiers
Line 196: Line 204:
return table.concat(tableStr, '')
return table.concat(tableStr, '')
end
function p._getDiscoveryRewardsTable(item)
local POIs = {}
for i, POI in pairs(SkillData.Cartography.worldMaps[1].pointsOfInterest) do
if POI.discoveryRewards ~= nil and POI.discoveryRewards.items ~= nil then
for i, reward in pairs(POI.discoveryRewards.items) do
if reward.id == item.id then
table.insert(POIs, POI)
end
end
end
end
if POIs[1] == nil then
return ''
end
p.sortPOIByCoords(POIs)
-- Build the table
local resultTable = mw.html.create('table')
resultTable:addClass('wikitable sortable')
resultTable:tag('tr'):addClass('headerRow-0')
:tag('th'):wikitext('Point of Interest')
:tag('th'):wikitext('X')
:tag('th'):wikitext('Y')
:tag('th'):wikitext('Requirements')
:tag('th'):wikitext('Discovery Rewards')
for _, POI in ipairs(POIs) do
local X, Y = p.convertAxialToXY(POI.coords)
local tr = mw.html.create('tr')
tr:tag('td'):wikitext(Icons.Icon({POI.name, type='poi'}))
tr:tag('td'):wikitext(X)
tr:tag('td'):wikitext(Y)
tr:tag('td'):wikitext(table.concat(p._getPOIRequirements(POI), '<br/>'))
tr:tag('td'):wikitext(table.concat(p._getDiscoveryRewards(POI), '<br/>'))
resultTable:node(tr)
end
return tostring(resultTable)
end
function p.getDiscoveryRewardsTable(frame)
local itemName = frame.args ~= nil and frame.args[1] or frame
local item = Items.getItem(itemName)
if item == nil then
return Shared.printError('No item named "' .. itemName .. '" exists in the data module')
end
local resultTable = p._getDiscoveryRewardsTable(item)
if resultTable == '' then
return ''
else
return '==POI Discovery Rewards==\n' .. resultTable
end
end
function p.testDiscoveryRewards()
local testTable = {}
for i, POI in pairs(SkillData.Cartography.worldMaps[1].pointsOfInterest) do
if POI.discoveryRewards ~= nil and POI.discoveryRewards.items ~= nil then
local item = Items.getItemByID(POI.discoveryRewards.items[1].id)
table.insert(testTable, p._getDiscoveryRewardsTable(item))
end
end
return table.concat(testTable)
end
end


463

edits