mirror of
https://github.com/weyne85/DCS-ExportScripts.git
synced 2025-10-29 16:58:18 +00:00
180 lines
5.3 KiB
Lua
180 lines
5.3 KiB
Lua
-- Ikarus and D.A.C. Export Script
|
|
--
|
|
-- Copyright by Michael aka McMicha 2014 - 2018
|
|
-- Contact dcs2arcaze.micha@farbpigmente.org
|
|
|
|
|
|
-- Main Table
|
|
ExportScript = {}
|
|
ExportScript.Version = {}
|
|
ExportScript.Version.ExportScript = "1.2.1"
|
|
-- Simulation id
|
|
ExportScript.SimID = string.format("%08x*",os.time())
|
|
|
|
-- State data for export
|
|
ExportScript.PacketSize = 0
|
|
ExportScript.SendStrings = {}
|
|
ExportScript.LastData = {}
|
|
|
|
ExportScript.PacketSizeDAC = {}
|
|
ExportScript.SendStringsDAC = {}
|
|
ExportScript.LastDataDAC = {}
|
|
|
|
ExportScript.lastExportTimeHI = 0
|
|
ExportScript.lastExportTimeLI = 0
|
|
|
|
ExportScript.NoLuaExportBeforeNextFrame = false
|
|
|
|
local PrevExport = {}
|
|
PrevExport.LuaExportStart = LuaExportStart
|
|
PrevExport.LuaExportStop = LuaExportStop
|
|
PrevExport.LuaExportBeforeNextFrame = LuaExportBeforeNextFrame
|
|
PrevExport.LuaExportAfterNextFrame = LuaExportAfterNextFrame
|
|
--fix wwt
|
|
PrevExport.LuaExportActivityNextEvent = LuaExportActivityNextEvent
|
|
|
|
dofile(lfs.writedir()..[[Scripts\DCS-ExportScript\Config.lua]])
|
|
ExportScript.utf8 = dofile(lfs.writedir()..[[Scripts\DCS-ExportScript\lib\utf8.lua]])
|
|
dofile(lfs.writedir()..[[Scripts\DCS-ExportScript\lib\Tools.lua]])
|
|
dofile(lfs.writedir()..[[Scripts\DCS-ExportScript\lib\genericRadio.lua]])
|
|
dofile(lfs.writedir()..[[Scripts\DCS-ExportScript\lib\Maps.lua]])
|
|
|
|
for i = 1, #ExportScript.Config.DAC, 1 do
|
|
ExportScript.PacketSizeDAC[i] = 0
|
|
ExportScript.SendStringsDAC[i] = {}
|
|
ExportScript.LastDataDAC[i] = {}
|
|
end
|
|
|
|
-- Found DCS or FC Module
|
|
ExportScript.FoundDCSModule = false
|
|
ExportScript.FoundFCModule = false
|
|
ExportScript.FoundNoModul = true
|
|
|
|
---------------------------------------------
|
|
-- DCS Export API Function Implementations --
|
|
---------------------------------------------
|
|
|
|
function LuaExportStart()
|
|
-- Works once just before mission start.
|
|
-- (and before player selects their aircraft, if there is a choice!)
|
|
|
|
-- 2) Setup udp sockets to talk to GlassCockpit
|
|
package.path = package.path..";.\\LuaSocket\\?.lua"
|
|
package.cpath = package.cpath..";.\\LuaSocket\\?.dll"
|
|
|
|
--local lrename1, lrename2 = os.rename(ExportScript.Config.LogPath, ExportScript.Config.LogPath..".old")
|
|
ExportScript.logFile = io.open(ExportScript.Config.LogPath, "wa") -- "W+"
|
|
if ExportScript.logFile then
|
|
ExportScript.logFile:write('\239\187\191') -- create a UTF-8 BOM
|
|
ExportScript.logFile:write("ExportScript Version: "..ExportScript.Version.ExportScript.."\r\n")
|
|
end
|
|
--if lrenmae1 == nil then
|
|
-- ExportScript.Tools.WriteToLog("Rename Error: "..lrename2)
|
|
--end
|
|
|
|
ExportScript.Tools.createUDPSender()
|
|
ExportScript.Tools.createUDPListner()
|
|
|
|
ExportScript.AF = {} -- Table for Auxiliary functions
|
|
|
|
ExportScript.NoLuaExportBeforeNextFrame = false
|
|
ExportScript.Tools.SelectModule() -- point globals to Module functions and data.
|
|
|
|
-- Chain previously-included export as necessary
|
|
if PrevExport.LuaExportStart then
|
|
PrevExport.LuaExportStart()
|
|
end
|
|
end
|
|
|
|
function LuaExportBeforeNextFrame()
|
|
--[[ if ExportScript.Config.Debug then
|
|
ExportScript.Tools.ProcessInput()
|
|
else
|
|
ExportScript.coProcessArguments_BeforeNextFrame = coroutine.create(ExportScript.Tools.ProcessInput)
|
|
coStatus = coroutine.resume(ExportScript.coProcessArguments_BeforeNextFrame)
|
|
end
|
|
|
|
if ExportScript.NoLuaExportBeforeNextFrame == false then
|
|
ExportScript.Tools.ProcessOutput()
|
|
end
|
|
]]
|
|
-- Chain previously-included export as necessary
|
|
if PrevExport.LuaExportBeforeNextFrame then
|
|
PrevExport.LuaExportBeforeNextFrame()
|
|
end
|
|
end
|
|
|
|
function LuaExportAfterNextFrame()
|
|
if ExportScript.NoLuaExportBeforeNextFrame then
|
|
ExportScript.Tools.ProcessOutput()
|
|
end
|
|
|
|
-- Chain previously-included export as necessary
|
|
if PrevExport.LuaExportAfterNextFrame then
|
|
PrevExport.LuaExportAfterNextFrame()
|
|
end
|
|
end
|
|
|
|
function LuaExportActivityNextEvent(t)
|
|
local tNext = t
|
|
|
|
-- Put your event code here and increase tNext for the next event
|
|
-- so this function will be called automatically at your custom
|
|
-- model times.
|
|
-- If tNext == t then the activity will be terminated.
|
|
|
|
if ExportScript.Config.Debug then
|
|
ExportScript.Tools.ProcessInput()
|
|
else
|
|
ExportScript.coProcessArguments_BeforeNextFrame = coroutine.create(ExportScript.Tools.ProcessInput)
|
|
coStatus = coroutine.resume(ExportScript.coProcessArguments_BeforeNextFrame)
|
|
end
|
|
|
|
if ExportScript.NoLuaExportBeforeNextFrame == false then
|
|
ExportScript.Tools.ProcessOutput()
|
|
end
|
|
|
|
tNext = tNext + ExportScript.Config.ExportInterval
|
|
|
|
if PrevExport.LuaExportActivityNextEvent then
|
|
tNext=PrevExport.LuaExportActivityNextEvent(t)
|
|
end
|
|
|
|
return tNext
|
|
end
|
|
|
|
function LuaExportStop()
|
|
-- Works once just after mission stop.
|
|
if ExportScript.Config.DACExport then
|
|
ExportScript.Tools.SendDataDAC("DAC", "stop")
|
|
for i=1, #ExportScript.Config.DAC, 1 do
|
|
ExportScript.Tools.FlushDataDAC(i)
|
|
end
|
|
end
|
|
|
|
if ExportScript.Config.IkarusExport then
|
|
ExportScript.Tools.SendData("Ikarus", "stop")
|
|
ExportScript.Tools.FlushData()
|
|
end
|
|
|
|
ExportScript.UDPsender:close()
|
|
if ExportScript.Config.Listener then
|
|
ExportScript.UDPListener:close()
|
|
end
|
|
|
|
ExportScript.ModuleName = nil
|
|
ExportScript.FoundNoModul = false
|
|
|
|
if ExportScript.logFile then
|
|
ExportScript.Tools.WriteToLog("====== Logfile close ======")
|
|
ExportScript.logFile:flush()
|
|
ExportScript.logFile:close()
|
|
ExportScript.logFile = nil
|
|
end
|
|
|
|
-- Chain previously-included export as necessary
|
|
if PrevExport.LuaExportStop then
|
|
PrevExport.LuaExportStop()
|
|
end
|
|
end
|