606
edits
m |
m |
||
| (67 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
-- adapted from Levrin's iteration to Sakaratte's original -- | -- adapted by Olessan from Levrin's iteration to Sakaratte's original -- | ||
-- Layout changed and all labels, etc, updated to pull from Module:BuildingINdex -- | |||
-- I may expand later to have functions for other infobox types (but this game doesn't really need any other?? 22/04/2025 -- | |||
local com = require('Module:Common') | local com = require('Module:Common') | ||
local a = require('Module:Arguments') | local a = require('Module:Arguments') | ||
| Line 15: | Line 17: | ||
end | end | ||
local function addImage(box, image | local function addImage(box, image, defaultImage) | ||
if not image and not defaultImage then | if not image and not defaultImage then | ||
box:wikitext('[[Category:Image Needed]]') | box:wikitext('[[Category:Image Needed]]') | ||
| Line 28: | Line 30: | ||
imageDiv:wikitext(fileWiki) | imageDiv:wikitext(fileWiki) | ||
box:node(imageDiv) | box:node(imageDiv) | ||
| Line 51: | Line 47: | ||
end | end | ||
local function createDataRow(label, value, defaultValue) | |||
if not | local actualValue = value or defaultValue | ||
if not actualValue or actualValue == '' then | |||
return nil | return nil | ||
end | end | ||
| Line 66: | Line 64: | ||
:tag('span') | :tag('span') | ||
:addClass('infobox-data') | :addClass('infobox-data') | ||
:wikitext( | :wikitext(actualValue) | ||
else | else | ||
dataRow:tag('span') | dataRow:tag('span') | ||
:addClass('infobox-data') | :addClass('infobox-data') | ||
:wikitext( | :wikitext(actualValue) | ||
end | end | ||
| Line 121: | Line 119: | ||
local infobox = createInfobox(building) | local infobox = createInfobox(building) | ||
addImage(infobox, args['image | addImage(infobox, args['image'], buildingData and buildingData.defaultImage, buildingData and buildingData.defaultCaption) | ||
if buildingData then | if buildingData then | ||
| Line 200: | Line 198: | ||
local first = true | local first = true | ||
for resource, amount in pairs(buildingData.influence) do | for resource, amount in pairs(buildingData.influence) do | ||
if resource ~= 'tier' then -- Exclude | if resource ~= 'tier' and resource ~= 'bsplendour' then -- Exclude 'tier' and 'bsplendour' | ||
local displayAmount = amount | local displayAmount = amount | ||
if first and buildingData.influence.tier then | if first and buildingData.influence.tier then | ||
| Line 238: | Line 236: | ||
--/ | --/ | ||
--SECTION-RUNNING-COSTS | --SECTION-RUNNING-COSTS | ||
local costData = {} | |||
local goldCoinsFound = false | |||
if buildingData.maintenance then | if buildingData.costs or buildingData.influence['bsplendour'] then | ||
local | for resource, amount in pairs(buildingData.costs) do | ||
if resource == 'gold coins' then | |||
local resourceIcon = i.icon('gold coins', nil, nil, 'gold coins', 'en') | |||
table.insert(costData, {label = '[[File:Gold Coins.png|frameless|20x20px]] ' .. '[[Gold Coins|Build Cost]]', value = amount}) | |||
goldCoinsFound = true | |||
elseif resource ~= 'maintenance' then | |||
local resourceIcon = i.icon(resource, nil, nil, com.firstUpper({resource}), 'en') | |||
table.insert(costData, {label = resourceIcon, value = amount}) | |||
end | |||
if resource ~= 'maintenance' then | |||
local displayAmount = amount | |||
if second and buildingData.costs.maintenance then | |||
displayAmount = displayAmount .. ' ' .. buildingData.costs.maintenance | |||
second = false | |||
end | |||
end | |||
end | |||
if buildingData.costs and buildingData.costs['maintenance'] then | |||
local resourceIcon = i.icon('maintenance', nil, nil, 'maintenance', 'en') | |||
table.insert(costData, {label = resourceIcon, value = '[[File:Gold Coins.png|frameless|20x20px]] ' .. buildingData.costs['maintenance'] .. ' monthly'}) | |||
end | end | ||
if buildingData. | if buildingData.influence['bsplendour'] then | ||
local | local resourceIcon = i.icon('bsplendour', nil, nil, 'splendor', 'en') | ||
table.insert(costData, {label = '[[File:Splendor.png|frameless|20x20px]] ' .. '[[Splendour|Splendour]]', value = '+ ' .. buildingData.influence['bsplendour'] .. ' ea'}) | |||
end | end | ||
if #costData > 0 then | if #costData > 0 then | ||
addSection(infobox, costData, ' | addSection(infobox, costData, 'Economic Impact', 2) | ||
end | |||
end | end | ||
end | end | ||
--/ | --/ | ||
edits