mirror of
https://github.com/weyne85/DML.git
synced 2025-10-29 16:57:49 +00:00
Version 2.3.5
WHpersistence
This commit is contained in:
96
modules/WHpersistence.lua
Normal file
96
modules/WHpersistence.lua
Normal file
@@ -0,0 +1,96 @@
|
||||
WHpersistence = {}
|
||||
WHpersistence.version = "1.0.0"
|
||||
WHpersistence.requiredLibs = {
|
||||
"dcsCommon",
|
||||
"cfxZones",
|
||||
"persistence",
|
||||
}
|
||||
--
|
||||
-- load / save (game data)
|
||||
--
|
||||
function WHpersistence.saveData()
|
||||
local theData = {}
|
||||
local theWH = {}
|
||||
-- generate all WH data from all my airfields
|
||||
local allMyBase = world:getAirbases()
|
||||
for idx, theBase in pairs(allMyBase) do
|
||||
local name = theBase:getName()
|
||||
local WH = theBase:getWarehouse()
|
||||
local inv = WH:getInventory()
|
||||
theWH[name] = inv
|
||||
end
|
||||
theData.theWH = theWH
|
||||
return theData, WHpersistence.sharedData -- second val currently nil
|
||||
end
|
||||
|
||||
function WHpersistence.loadData()
|
||||
if not persistence then return end
|
||||
local shared = nil
|
||||
local theData = persistence.getSavedDataForModule("WHpersistence")
|
||||
if (not theData) or not (theData.theWH) then
|
||||
if WHpersistence.verbose then
|
||||
trigger.action.outText("+++WHp: no save date received, skipping.", 30)
|
||||
end
|
||||
return
|
||||
end
|
||||
-- set up all warehouses from data loaded
|
||||
for name, inv in pairs(theData.theWH) do
|
||||
trigger.action.outText("+++restoring <" .. name .. ">", 30)
|
||||
local theBase = Airbase.getByName(name)
|
||||
if theBase then
|
||||
local theWH = theBase:getWarehouse()
|
||||
if theWH then
|
||||
-- we go through weapon, liquids and aircraft
|
||||
for idx, liq in pairs(inv.liquids) do
|
||||
theWH:setLiquidAmount(idx, liq)
|
||||
trigger.action.outText(name .. ": Liq <" .. idx .. "> : <" .. liq .. ">", 30)
|
||||
end
|
||||
for ref, num in pairs(inv.weapon) do
|
||||
theWH:setItem(ref, num)
|
||||
end
|
||||
for ref, num in pairs(inv.aircraft) do
|
||||
theWH:setItem(ref, num)
|
||||
end
|
||||
else
|
||||
trigger.action.outText(name .. ": no warehouse")
|
||||
end
|
||||
else
|
||||
trigger.action.outText(name .. ": no airbase")
|
||||
end
|
||||
end
|
||||
end
|
||||
--
|
||||
-- config
|
||||
--
|
||||
function WHpersistence.readConfigZone()
|
||||
local theZone = cfxZones.getZoneByName("WHpersistenceConfig")
|
||||
if not theZone then
|
||||
theZone = cfxZones.createSimpleZone("WHpersistenceConfig")
|
||||
end
|
||||
WHpersistence.verbose = theZone.verbose
|
||||
end
|
||||
--
|
||||
-- GO
|
||||
--
|
||||
function WHpersistence.start()
|
||||
if not dcsCommon.libCheck then
|
||||
trigger.action.outText("cfx WHpersistence requires dcsCommon", 30)
|
||||
return false
|
||||
end
|
||||
if not dcsCommon.libCheck("cfx Raise Flag", WHpersistence.requiredLibs)then return false end
|
||||
WHpersistence.readConfigZone()
|
||||
if persistence then
|
||||
callbacks = {}
|
||||
callbacks.persistData = WHpersistence.saveData
|
||||
persistence.registerModule("WHpersistence", callbacks)
|
||||
-- now load my data
|
||||
WHpersistence.loadData()
|
||||
end
|
||||
trigger.action.outText("cfx WHpersistence v" .. WHpersistence.version .. " started.", 30)
|
||||
return true
|
||||
end
|
||||
|
||||
if not WHpersistence.start() then
|
||||
trigger.action.outText("cfx WHpersistence aborted: missing libraries", 30)
|
||||
WHpersistence = nil
|
||||
end
|
||||
Reference in New Issue
Block a user