Module:ProjectLister/Unlocks
From Terra Invicta Official Wiki
Documentation for this module may be created at Module:ProjectLister/Unlocks/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')
--endregion
--region Private constants
--endregion
--region Private member variables
local projectTable = {}
--endregion
--region Private methods
function getProjectTable()
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
projectTable[reqProject][rowID] = 'Battery'
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
projectTable[reqProject][rowID] = 'Claim'
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
projectTable[reqProject][rowID] = 'Drive'
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
projectTable[reqProject][rowID] = 'Gun'
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
projectTable[reqProject][rowID] = 'HabModule'
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
projectTable[reqProject][rowID] = 'HeatSink'
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
projectTable[reqProject][rowID] = 'LaserWeapon'
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
projectTable[reqProject][rowID] = 'MagneticGun'
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
projectTable[reqProject][rowID] = 'Missile'
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
projectTable[reqProject][rowID] = 'ParticleWeapon'
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
projectTable[reqProject][rowID] = 'PlasmaWeapon'
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
projectTable[reqProject][rowID] = 'PowerPlant'
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
projectTable[reqProject][rowID] = 'Radiator'
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
projectTable[reqProject][rowID] = 'ShipArmor'
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
projectTable[reqProject][rowID] = 'ShipHull'
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
projectTable[reqProject][rowID] = 'UtilityModule'
end
end
end
return projectTable
end
--endregion
--region Public methods
--endregion
return getProjectTable()


