Module:ProjectLister/UnlocksFormatted
From Terra Invicta Official Wiki
Documentation for this module may be created at Module:ProjectLister/UnlocksFormatted/doc
---
---Reads the EVERY data file that projects can unlock and computes a table of Project to unlocks
--region Dependencies
local BatteryData = mw.loadData('Module:CSVReader/Battery')
local BilateralData = mw.loadData('Module:CSVReader/Bilateral')
local DriveData = mw.loadData('Module:CSVReader/Drive')
local GunData = mw.loadData('Module:CSVReader/Gun')
local HabModuleData = mw.loadData('Module:CSVReader/HabModule')
local HeatSinkData = mw.loadData('Module:CSVReader/HeatSink')
local LaserWeaponData = mw.loadData('Module:CSVReader/LaserWeapon')
local MagneticGunData = mw.loadData('Module:CSVReader/MagneticGun')
local MissileData = mw.loadData('Module:CSVReader/Missile')
local ParticleWeaponData = mw.loadData('Module:CSVReader/ParticleWeapon')
local PlasmaWeaponData = mw.loadData('Module:CSVReader/PlasmaWeapon')
local PowerPlantData = mw.loadData('Module:CSVReader/PowerPlant')
local RadiatorData = mw.loadData('Module:CSVReader/Radiator')
local ShipArmorData = mw.loadData('Module:CSVReader/ShipArmor')
local ShipHullData = mw.loadData('Module:CSVReader/ShipHull')
local UtilityModuleData = mw.loadData('Module:CSVReader/UtilityModule')
local BatteryNames = mw.loadData('Module:ENReader/Battery')
local DriveNames = mw.loadData('Module:ENReader/Drive')
local GunNames = mw.loadData('Module:ENReader/Gun')
local HabModuleNames = mw.loadData('Module:ENReader/HabModule')
local HeatSinkNames = mw.loadData('Module:ENReader/HeatSink')
local LaserWeaponNames = mw.loadData('Module:ENReader/LaserWeapon')
local MagneticGunNames = mw.loadData('Module:ENReader/MagneticGun')
local MissileNames = mw.loadData('Module:ENReader/Missile')
local NationNames = mw.loadData('Module:ENReader/Nation')
local OrgNames = mw.loadData('Module:ENReader/Org')
local ParticleWeaponNames = mw.loadData('Module:ENReader/ParticleWeapon')
local PlasmaWeaponNames = mw.loadData('Module:ENReader/PlasmaWeapon')
local PowerPlantNames = mw.loadData('Module:ENReader/PowerPlant')
local RadiatorNames = mw.loadData('Module:ENReader/Radiator')
local RegionNames = mw.loadData('Module:ENReader/Region')
local ShipArmorNames = mw.loadData('Module:ENReader/ShipArmor')
local ShipHullNames = mw.loadData('Module:ENReader/ShipHull')
local UtilityModuleNames = mw.loadData('Module:ENReader/UtilityModule')
--endregion
--region Private constants
--endregion
--region Private member variables
local projectTable = {}
--endregion
--region Private methods
function getProjectTable()
local tinsert = table.insert
for rowID, row in pairs(BatteryData) do
if not row['disable'] or row['disable'] ~= 'true' then
local reqProject = row['requiredProjectName']
if reqProject and reqProject ~= '' and reqProject ~= 0 then
if not projectTable[reqProject] then
projectTable[reqProject] = {}
end
tinsert(projectTable[reqProject],BatteryNames['TIBatteryTemplate.displayName.' .. rowID] or rowID)
end
end
end
for rowID, row in pairs(BilateralData) do
if row['relationType'] == 'Claim' and not string.find( row['dataName'], '2070', 1, true) then
local reqProject = row['projectUnlockName']
if reqProject and reqProject ~= '' and reqProject ~= 0 then
if not projectTable[reqProject] then
projectTable[reqProject] = {}
end
tinsert(projectTable[reqProject],NationNames['TINationTemplate.displayName.' .. row['nation1']] .. "'s Claim on " .. RegionNames['TIRegionTemplate.displayName.' .. row['region1']])
end
end
end
for rowID, row in pairs(DriveData) do
if not row['disable'] or row['disable'] ~= 'true' then
local reqProject = row['requiredProjectName']
if reqProject and reqProject ~= '' and reqProject ~= 0 then
if not projectTable[reqProject] then
projectTable[reqProject] = {}
end
tinsert(projectTable[reqProject],DriveNames['TIDriveTemplate.displayName.' .. rowID] or rowID)
end
end
end
for rowID, row in pairs(GunData) do
if not row['disable'] or row['disable'] ~= 'true' then
local reqProject = row['requiredProjectName']
if reqProject and reqProject ~= '' and reqProject ~= 0 then
if not projectTable[reqProject] then
projectTable[reqProject] = {}
end
tinsert(projectTable[reqProject],GunNames['TIGunTemplate.displayName.' .. rowID] or rowID)
end
end
end
for rowID, row in pairs(HabModuleData) do
if not row['disable'] or row['disable'] ~= 'true' then
local reqProject = row['requiredProjectName']
if reqProject and reqProject ~= '' and reqProject ~= 0 then
if not projectTable[reqProject] then
projectTable[reqProject] = {}
end
tinsert(projectTable[reqProject],HabModuleNames['TIHabModuleTemplate.displayName.' .. rowID] or rowID)
end
end
end
for rowID, row in pairs(HeatSinkData) do
if not row['disable'] or row['disable'] ~= 'true' then
local reqProject = row['requiredProjectName']
if reqProject and reqProject ~= '' and reqProject ~= 0 then
if not projectTable[reqProject] then
projectTable[reqProject] = {}
end
tinsert(projectTable[reqProject],HeatSinkNames['TIHeatSinkTemplate.displayName.' .. rowID] or rowID)
end
end
end
for rowID, row in pairs(LaserWeaponData) do
if not row['disable'] or row['disable'] ~= 'true' then
local reqProject = row['requiredProjectName']
if reqProject and reqProject ~= '' and reqProject ~= 0 then
if not projectTable[reqProject] then
projectTable[reqProject] = {}
end
tinsert(projectTable[reqProject],LaserWeaponNames['TILaserWeaponTemplate.displayName.' .. rowID] or rowID)
end
end
end
for rowID, row in pairs(MagneticGunData) do
if not row['disable'] or row['disable'] ~= 'true' then
local reqProject = row['requiredProjectName']
if reqProject and reqProject ~= '' and reqProject ~= 0 then
if not projectTable[reqProject] then
projectTable[reqProject] = {}
end
tinsert(projectTable[reqProject],MagneticGunNames['TIMagneticGunTemplate.displayName.' .. rowID] or rowID)
end
end
end
for rowID, row in pairs(MissileData) do
if not row['disable'] or row['disable'] ~= 'true' then
local reqProject = row['requiredProjectName']
if reqProject and reqProject ~= '' and reqProject ~= 0 then
if not projectTable[reqProject] then
projectTable[reqProject] = {}
end
tinsert(projectTable[reqProject],MissileNames['TIMissileTemplate.displayName.' .. rowID] or rowID)
end
end
end
for rowID, row in pairs(ParticleWeaponData) do
if not row['disable'] or row['disable'] ~= 'true' then
local reqProject = row['requiredProjectName']
if reqProject and reqProject ~= '' and reqProject ~= 0 then
if not projectTable[reqProject] then
projectTable[reqProject] = {}
end
tinsert(projectTable[reqProject],ParticleWeaponNames['TIParticleWeaponTemplate.displayName.' .. rowID] or rowID)
end
end
end
for rowID, row in pairs(PlasmaWeaponData) do
if not row['disable'] or row['disable'] ~= 'true' then
local reqProject = row['requiredProjectName']
if reqProject and reqProject ~= '' and reqProject ~= 0 then
if not projectTable[reqProject] then
projectTable[reqProject] = {}
end
tinsert(projectTable[reqProject],PlasmaWeaponNames['TIPlasmaWeaponTemplate.displayName.' .. rowID] or rowID)
end
end
end
for rowID, row in pairs(PowerPlantData) do
if not row['disable'] or row['disable'] ~= 'true' then
local reqProject = row['requiredProjectName']
if reqProject and reqProject ~= '' and reqProject ~= 0 then
if not projectTable[reqProject] then
projectTable[reqProject] = {}
end
tinsert(projectTable[reqProject],PowerPlantNames['TIPowerPlantTemplate.displayName.' .. rowID] or rowID)
end
end
end
for rowID, row in pairs(RadiatorData) do
if not row['disable'] or row['disable'] ~= 'true' then
local reqProject = row['requiredProjectName']
if reqProject and reqProject ~= '' and reqProject ~= 0 then
if not projectTable[reqProject] then
projectTable[reqProject] = {}
end
tinsert(projectTable[reqProject],RadiatorNames['TIRadiatorTemplate.displayName.' .. rowID] or rowID)
end
end
end
for rowID, row in pairs(ShipArmorData) do
if not row['disable'] or row['disable'] ~= 'true' then
local reqProject = row['requiredProjectName']
if reqProject and reqProject ~= '' and reqProject ~= 0 then
if not projectTable[reqProject] then
projectTable[reqProject] = {}
end
tinsert(projectTable[reqProject],ShipArmorNames['TIShipArmorTemplate.displayName.' .. rowID] or rowID)
end
end
end
for rowID, row in pairs(ShipHullData) do
if not row['disable'] or row['disable'] ~= 'true' then
local reqProject = row['requiredProjectName']
if reqProject and reqProject ~= '' and reqProject ~= 0 then
if not projectTable[reqProject] then
projectTable[reqProject] = {}
end
tinsert(projectTable[reqProject],ShipHullNames['TIShipHullTemplate.displayName.' .. rowID] or rowID)
end
end
end
for rowID, row in pairs(UtilityModuleData) do
if not row['disable'] or row['disable'] ~= 'true' then
local reqProject = row['requiredProjectName']
if reqProject and reqProject ~= '' and reqProject ~= 0 then
if not projectTable[reqProject] then
projectTable[reqProject] = {}
end
tinsert(projectTable[reqProject],UtilityModuleNames['TIUtilityModuleTemplate.displayName.' .. rowID] or rowID)
end
end
end
return projectTable
end
--endregion
--region Public methods
--endregion
return getProjectTable()


