Module:ClaimLister/PeaceLister
From Terra Invicta Official Wiki
Documentation for this module may be created at Module:ClaimLister/PeaceLister/doc
---
---Reads the Claim data files and presents them in readable formats, with additional calculated statistics.
---
---@module PeaceLister
local PeaceLister = {}
--region Dependencies
local IconModule = require('Module:Icon')
local RegionData = mw.loadData('Module:CSVReader/Region')
local ClaimData = mw.loadData('Module:CSVReader/Claim')
local PeaceData = mw.loadData('Module:ClaimLister/Peace')
local RegionNameBuilder = require('Module:RegionLister/NameBuilder')
local NationNames = mw.loadData('Module:ENReader/Nation')
--endregion
--region Private constants
local ssub = string.sub
local slower = string.lower
local tinsert = table.insert
local tconcat = table.concat
--endregion
--region Private member variables
--none
--endregion
--region Private methods
--none
--endregion
--region Public methods
function PeaceLister.ListPresentNations()
return PeaceLister.ListNations('2022')
end
function PeaceLister.List2026Nations()
return PeaceLister.ListNations('2026')
end
function PeaceLister.ListFutureNations()
return PeaceLister.ListNations('2070')
end
---@param campaignYear The start year of the campaign to show claims for. Defaults to 2022 if not specified
---@return table
function PeaceLister.ListNations(futureCampaign)
if not campaignYear then
campaignYear = '2022'
end
local returnString = '{| class="wikitable sortable mw-collapsible" style="text-align: center;"'
returnString = returnString .. '\n|-'
returnString = returnString .. '\n! Nation<br>Alternate Name'
returnString = returnString .. '\n! Subnations'
returnString = returnString .. '\n! Subregions'
returnString = returnString .. '\n|-'
for rowID, row in pairs(PeaceData[1]) do
if ((ssub(rowID,1,4) == campaignYear) or (campaignYear == '2022' and ssub(rowID,1,2) ~= '20')) and ssub(rowID,-3) ~= 'ALN' then
local unionFlag = IconModule.Icon({args={ssub(rowID,-3) .. 'U',size='25px'}})
local unionName = NationNames['TINationTemplate.unionDisplayName.' .. ssub(rowID,-3)] or ''
if unionName == '' or unionFlag == 'No such icon as "' .. slower(ssub(rowID,-3) .. 'U') .. '"' then
unionFlag = ''
end
returnString = returnString .. '\n|' .. IconModule.Icon({args={ssub(rowID,-3),size='25px'}}) .. '[[' .. ssub(rowID,-3) .. '|' .. (NationNames['TINationTemplate.displayName.' .. ssub(rowID,-3)] or rowID) .. ']]<br>' .. unionFlag .. unionName
local subnations = {}
local subregions = {}
local subnationCount = 0
local subregionCount = {0,0,0,0} --Total, Eco, Mine, Oil
for subnationID, _ in pairs(row) do
subnationCount = subnationCount + 1
local subnationString = '[[' .. ssub(subnationID,-3) .. '|' .. (NationNames['TINationTemplate.displayName.' .. subnationID] or NationNames['TINationTemplate.displayName.' .. ssub(subnationID,6)] or subnationID) .. ']]'
tinsert(subnations, subnationString)
end
for subregionID, _ in pairs(PeaceData[2][rowID]) do
subregionCount[1] = subregionCount[1] + 1
if RegionData[subregionID]['coreEco'] and RegionData[subregionID]['coreEco'] == 'true' then
subregionCount[2] = subregionCount[2] + 1
end
if RegionData[subregionID]['mining'] and RegionData[subregionID]['mining'] == 'true' then
subregionCount[3] = subregionCount[3] + 1
end
if RegionData[subregionID]['oilResource'] and RegionData[subregionID]['oilResource'] == 'true' then
subregionCount[4] = subregionCount[4] + 1
end
tinsert(subregions, RegionNameBuilder.buildName({args={subregionID, rowID}}))
end
returnString = returnString .. '\n| Total: ' .. subnationCount .. '<br>' .. tconcat(subnations,' ● ')
returnString = returnString .. '\n| Total: ' .. subregionCount[1] .. '<br>'
returnString = returnString .. subregionCount[2] .. IconModule.Icon({args={'core economic region', bgcolor='DarkSlateGray'}})
returnString = returnString .. subregionCount[3] .. IconModule.Icon({args={'resource region'}})
returnString = returnString .. subregionCount[4] .. IconModule.Icon({args={'oil region'}})
returnString = returnString .. '<br>' .. tconcat(subregions,' ● ')
returnString = returnString .. '\n|-'
end
end
returnString = returnString .. '\n|}'
return returnString
end
--endregion
return PeaceLister


