mirror of
https://github.com/weyne85/DML.git
synced 2025-10-29 16:57:49 +00:00
Version 0.9986
baseCaptured cloneZones embarkation xFlags xCount
This commit is contained in:
145
modules/LZ.lua
Normal file
145
modules/LZ.lua
Normal file
@@ -0,0 +1,145 @@
|
||||
LZ = {}
|
||||
LZ.version = "0.0.0"
|
||||
LZ.verbose = false
|
||||
LZ.ups = 1
|
||||
LZ.requiredLibs = {
|
||||
"dcsCommon", -- always
|
||||
"cfxZones", -- Zones, of course
|
||||
}
|
||||
LZ.LZs = {}
|
||||
|
||||
--[[--
|
||||
Version History
|
||||
1.0.0 - initial version
|
||||
|
||||
|
||||
--]]--
|
||||
|
||||
function LZ.addLZ(theZone)
|
||||
table.insert(LZ.LZs, theZone)
|
||||
end
|
||||
|
||||
function LZ.getLZByName(aName)
|
||||
for idx, aZone in pairs(LZ.LZs) do
|
||||
if aName == aZone.name then return aZone end
|
||||
end
|
||||
if LZ.verbose then
|
||||
trigger.action.outText("+++LZ: no LZ with name <" .. aName ..">", 30)
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
--
|
||||
-- read zone
|
||||
--
|
||||
function LZ.createLZWithZone(theZone)
|
||||
-- read main trigger
|
||||
theZone.triggerLZFlag = cfxZones.getStringFromZoneProperty(theZone, "lz!", "*<none>")
|
||||
|
||||
-- TriggerMethod: common and specific synonym
|
||||
theZone.lzMethod = cfxZones.getStringFromZoneProperty(theZone, "method", "inc")
|
||||
|
||||
if cfxZones.hasProperty(theZone, "lzTriggerMethod") then
|
||||
theZone.lzMethod = cfxZones.getStringFromZoneProperty(theZone, "lzMethod", "change")
|
||||
end
|
||||
|
||||
if LZ.verbose or theZone.verbose then
|
||||
trigger.action.outText("+++LZ: new LZ <".. theZone.name ..">", 30)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--
|
||||
-- MAIN ACTION
|
||||
--
|
||||
function LZ.processUpdate(theZone)
|
||||
|
||||
end
|
||||
|
||||
--
|
||||
-- Event Handling
|
||||
--
|
||||
function LZ:onEvent(event)
|
||||
-- only interested in S_EVENT_BASE_CAPTURED events
|
||||
if event.id ~= world.event.S_EVENT_BASE_CAPTURED then
|
||||
return
|
||||
end
|
||||
|
||||
for idx, aZone in pairs(LZ.LZs) do
|
||||
-- check if landed inside and of correct type, colition, name whatever
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
--
|
||||
-- Update
|
||||
--
|
||||
|
||||
function LZ.update()
|
||||
-- call me in a second to poll triggers
|
||||
timer.scheduleFunction(LZ.update, {}, timer.getTime() + 1/LZ.ups)
|
||||
|
||||
for idx, aZone in pairs(LZ.LZs) do
|
||||
-- see if we are triggered
|
||||
if cfxZones.testZoneFlag(aZone, aZone.triggerLZFlag, aZone.LZTriggerMethod, "lastTriggerLZValue") then
|
||||
if LZ.verbose or theZone.verbose then
|
||||
trigger.action.outText("+++LZ: triggered on main? for <".. aZone.name ..">", 30)
|
||||
end
|
||||
LZ.processUpdate(aZone)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--
|
||||
-- Config & Start
|
||||
--
|
||||
function LZ.readConfigZone()
|
||||
local theZone = cfxZones.getZoneByName("LZConfig")
|
||||
if not theZone then
|
||||
if LZ.verbose then
|
||||
trigger.action.outText("+++LZ: NO config zone!", 30)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
LZ.verbose = cfxZones.getBoolFromZoneProperty(theZone, "verbose", false)
|
||||
|
||||
if LZ.verbose then
|
||||
trigger.action.outText("+++LZ: read config", 30)
|
||||
end
|
||||
end
|
||||
|
||||
function LZ.start()
|
||||
-- lib check
|
||||
if not dcsCommon.libCheck then
|
||||
trigger.action.outText("cfx LZ requires dcsCommon", 30)
|
||||
return false
|
||||
end
|
||||
if not dcsCommon.libCheck("cfx LZ", LZ.requiredLibs) then
|
||||
return false
|
||||
end
|
||||
|
||||
-- read config
|
||||
LZ.readConfigZone()
|
||||
|
||||
-- process LZ Zones
|
||||
-- old style
|
||||
local attrZones = cfxZones.getZonesWithAttributeNamed("lz!")
|
||||
for k, aZone in pairs(attrZones) do
|
||||
LZ.createLZWithZone(aZone) -- process attributes
|
||||
LZ.addLZ(aZone) -- add to list
|
||||
end
|
||||
|
||||
-- start update
|
||||
LZ.update()
|
||||
|
||||
trigger.action.outText("cfx LZ v" .. LZ.version .. " started.", 30)
|
||||
return true
|
||||
end
|
||||
|
||||
-- let's go!
|
||||
if not LZ.start() then
|
||||
trigger.action.outText("cfx LZ aborted: missing libraries", 30)
|
||||
LZ = nil
|
||||
end
|
||||
Reference in New Issue
Block a user