This commit is contained in:
Frank 2020-09-02 22:54:54 +02:00
parent 444cc43971
commit 8b640912c3
8 changed files with 84 additions and 89 deletions

View File

@ -204,7 +204,7 @@ function AIRWING:New(warehousename, airwingname)
self:AddTransition("*", "FlightOnMission", "*") -- Flight was spawned with a mission. self:AddTransition("*", "FlightOnMission", "*") -- Flight was spawned with a mission.
-- Defaults: -- Defaults:
self:SetVerbosity(0) --self:SetVerbosity(0)
self.nflightsCAP=0 self.nflightsCAP=0
self.nflightsAWACS=0 self.nflightsAWACS=0
self.nflightsTANKERboom=0 self.nflightsTANKERboom=0

View File

@ -324,21 +324,18 @@ end
function ARMYGROUP:onafterSpawned(From, Event, To) function ARMYGROUP:onafterSpawned(From, Event, To)
self:T(self.lid..string.format("Group spawned!")) self:T(self.lid..string.format("Group spawned!"))
-- TODO
self.traveldist=0
self.traveltime=timer.getAbsTime()
self.position=self:GetCoordinate()
if self.ai then if self.ai then
-- Set default ROE. -- Set default ROE.
if self.option.ROE then self:SwitchROE(self.option.ROE)
self:SwitchROE(self.option.ROE)
else
self:SwitchROE(ENUMS.ROE.ReturnFire)
end
-- Set default Alarm State. -- Set default Alarm State.
if self.option.Alarm then self:SwitchAlarmstate(self.option.Alarm)
self:SwitchAlarmstate(self.option.Alarm)
else
self:SwitchAlarmstate(ENUMS.AlarmState.Auto)
end
-- Turn TACAN beacon on. -- Turn TACAN beacon on.
if self.tacan.On then if self.tacan.On then
@ -346,8 +343,8 @@ function ARMYGROUP:onafterSpawned(From, Event, To)
end end
-- Turn on the radio. -- Turn on the radio.
if self.radio.On then if self.radioLast then
self:SwitchRadio(self.radio.Freq, self.radio.Modu) self:SwitchRadio(self.radioLast.Freq, self.radioLst.Modu)
end end
end end
@ -789,10 +786,6 @@ function ARMYGROUP:_InitGroup()
-- Group ammo. -- Group ammo.
self.ammo=self:GetAmmoTot() self.ammo=self:GetAmmoTot()
self.traveldist=0
self.traveltime=timer.getAbsTime()
self.position=self:GetCoordinate()
-- Radio parameters from template. -- Radio parameters from template.
self.radio.On=false -- Radio is always OFF for ground. self.radio.On=false -- Radio is always OFF for ground.
self.radio.Freq=133 self.radio.Freq=133

View File

@ -483,7 +483,7 @@ function AUFTRAG:New(Type)
self.status=AUFTRAG.Status.PLANNED self.status=AUFTRAG.Status.PLANNED
-- Defaults -- Defaults
self:SetVerbosity(0) --self:SetVerbosity(0)
self:SetName() self:SetName()
self:SetPriority() self:SetPriority()
self:SetTime() self:SetTime()

View File

@ -1394,19 +1394,11 @@ function FLIGHTGROUP:onafterSpawned(From, Event, To)
if self.ai then if self.ai then
-- Set default ROE. -- Set ROE.
if self.option.ROE then self:SwitchROE(self.option.ROE)
self:SwitchROE(self.option.ROE)
else
self:SwitchROE(ENUMS.ROE.ReturnFire)
end
-- Set default ROT. -- Set ROT.
if self.option.ROT then self:SwitchROT(self.option.ROT)
self:SwitchROT(self.option.ROT)
else
self:SwitchROT(ENUMS.ROT.PassiveDefense)
end
-- Turn TACAN beacon on. -- Turn TACAN beacon on.
if self.tacan.On then if self.tacan.On then
@ -1414,8 +1406,8 @@ function FLIGHTGROUP:onafterSpawned(From, Event, To)
end end
-- Turn on the radio. -- Turn on the radio.
if self.radio.On then if self.radioLast then
self:SwitchRadio(self.radio.Freq, self.radio.Modu) self:SwitchRadio(self.radioLast.Freq, self.radioLast.Modu)
end end
-- TODO: make this input. -- TODO: make this input.

View File

@ -539,21 +539,18 @@ end
function NAVYGROUP:onafterSpawned(From, Event, To) function NAVYGROUP:onafterSpawned(From, Event, To)
self:T(self.lid..string.format("Group spawned!")) self:T(self.lid..string.format("Group spawned!"))
-- TODO
self.traveldist=0
self.traveltime=timer.getAbsTime()
self.position=self:GetCoordinate()
if self.ai then if self.ai then
-- Set default ROE. -- Set default ROE.
if self.option.ROE then self:SwitchROE(self.option.ROE)
self:SwitchROE(self.option.ROE)
else
self:SwitchROE(ENUMS.ROE.ReturnFire)
end
-- Set default Alarm State. -- Set default Alarm State.
if self.option.Alarm then self:SwitchAlarmstate(self.option.ROT)
self:SwitchAlarmstate(self.option.Alarm)
else
self:SwitchAlarmstate(0)
end
-- Turn TACAN beacon on. -- Turn TACAN beacon on.
if self.tacan.On then if self.tacan.On then
@ -566,8 +563,8 @@ function NAVYGROUP:onafterSpawned(From, Event, To)
end end
-- Turn on the radio. -- Turn on the radio.
if self.radio.On then if self.radioLast then
self:SwitchRadio(self.radio.Freq, self.radio.Modu) self:SwitchRadio(self.radioLast.Freq, self.radioLast.Modu)
else else
self.radio.On=true -- Radio is always on for ships. If not set, it is default. self.radio.On=true -- Radio is always on for ships. If not set, it is default.
end end
@ -1128,10 +1125,6 @@ function NAVYGROUP:_InitGroup()
-- Group ammo. -- Group ammo.
self.ammo=self:GetAmmoTot() self.ammo=self:GetAmmoTot()
self.traveldist=0
self.traveltime=timer.getAbsTime()
self.position=self:GetCoordinate()
-- Radio parameters from template. -- Radio parameters from template.
self.radio.On=false -- Radio is always on for ships but we set it to false to check if it has been changed before spawn. self.radio.On=false -- Radio is always on for ships but we set it to false to check if it has been changed before spawn.
self.radio.Freq=tonumber(self.template.units[1].frequency)/1000000 self.radio.Freq=tonumber(self.template.units[1].frequency)/1000000
@ -1230,7 +1223,10 @@ function NAVYGROUP:_CheckFreePath(DistanceMax, dx)
end end
-- Current coordinate. -- Current coordinate.
local coordinate=self:GetCoordinate():SetAltitude(offsetY, true) --local coordinate=self:GetCoordinate():SetAltitude(offsetY, true)
local vec3=self:GetVec3()
vec3.y=offsetY
-- Current heading. -- Current heading.
local heading=self:GetHeading() local heading=self:GetHeading()
@ -1239,8 +1235,11 @@ function NAVYGROUP:_CheckFreePath(DistanceMax, dx)
--coordinate=coordinate:Translate(500, heading, true) --coordinate=coordinate:Translate(500, heading, true)
local function LoS(dist) local function LoS(dist)
local checkcoord=coordinate:Translate(dist, heading, true) --local checkcoord=coordinate:Translate(dist, heading, true)
return coordinate:IsLOS(checkcoord, offsetY) --return coordinate:IsLOS(checkcoord, offsetY)
local checkvec3=UTILS.VecTranslate(vec3, dist, heading)
local los=land.isVisible(vec3, checkvec3)
return los
end end
-- First check if everything is clear. -- First check if everything is clear.
@ -1265,7 +1264,7 @@ function NAVYGROUP:_CheckFreePath(DistanceMax, dx)
local los=LoS(x) local los=LoS(x)
-- Debug message. -- Debug message.
self:T(self.lid..string.format("N=%d: xmin=%.1f xmax=%.1f x=%.1f d=%.3f los=%s", N, xmin, xmax, x, d, tostring(los))) self:I(self.lid..string.format("N=%d: xmin=%.1f xmax=%.1f x=%.1f d=%.3f los=%s", N, xmin, xmax, x, d, tostring(los)))
if los and d<=eps then if los and d<=eps then
return x return x

View File

@ -95,7 +95,7 @@
OPSGROUP = { OPSGROUP = {
ClassName = "OPSGROUP", ClassName = "OPSGROUP",
Debug = false, Debug = false,
verbose = 3, verbose = 0,
lid = nil, lid = nil,
groupname = nil, groupname = nil,
group = nil, group = nil,
@ -522,7 +522,7 @@ end
function OPSGROUP:GetVelocity() function OPSGROUP:GetVelocity()
if self:IsAlive()~=nil then if self:IsAlive()~=nil then
local vel=self.group:GetVelocityMPS() local vel=self.group:GetVelocityMPS()
return rel return vel
else else
self:E(self.lid.."WARNING: Group is not alive. Cannot get velocity!") self:E(self.lid.."WARNING: Group is not alive. Cannot get velocity!")
end end
@ -2103,6 +2103,21 @@ function OPSGROUP:onafterMissionDone(From, Event, To, Mission)
end end
-- TODO: reset mission specific parameters like radio, ROE etc. -- TODO: reset mission specific parameters like radio, ROE etc.
if Mission.radio and self.radioLast then
self:SwitchRadio(self.radioLast.Freq, self.radioLast.Modu)
end
if Mission.optionROE then
self:SwitchROE()
end
if Mission.optionROT then
self:SwitchROT()
end
if Mission.optionAlarm then
self:SwitchAlarmstate()
end
-- Check if group is done. -- Check if group is done.
self:_CheckGroupDone(1) self:_CheckGroupDone(1)
@ -3014,7 +3029,7 @@ function OPSGROUP:SwitchROE(roe)
self:T2(self.lid..string.format("Setting current ROE=%d when GROUP is SPAWNED", self.option.ROE)) self:T2(self.lid..string.format("Setting current ROE=%d when GROUP is SPAWNED", self.option.ROE))
else else
self.group:OptionROE(roe) self.group:OptionROE(self.option.ROE)
self:I(self.lid..string.format("Setting current ROE=%d (%s)", self.option.ROE, self:_GetROEName(self.option.ROE))) self:I(self.lid..string.format("Setting current ROE=%d (%s)", self.option.ROE, self:_GetROEName(self.option.ROE)))
end end
@ -3118,7 +3133,7 @@ function OPSGROUP:SwitchAlarmstate(alarmstate)
if self:IsAlive() or self:IsInUtero() then if self:IsAlive() or self:IsInUtero() then
self.option.Alarm=alarmstate or 0 self.option.Alarm=alarmstate or self.optionDefault.Alarm
if self:IsInUtero() then if self:IsInUtero() then
self:T2(self.lid..string.format("Setting current Alarm State=%d when GROUP is SPAWNED", self.option.Alarm)) self:T2(self.lid..string.format("Setting current Alarm State=%d when GROUP is SPAWNED", self.option.Alarm))
@ -3407,10 +3422,19 @@ end
-- @return #OPSGROUP self -- @return #OPSGROUP self
function OPSGROUP:SwitchRadio(Frequency, Modulation) function OPSGROUP:SwitchRadio(Frequency, Modulation)
if self:IsAlive() or self:IsInUtero() then Frequency=Frequency or self.radioDefault.Freq
Modulation=Modulation or self.radioDefault.Modu
Frequency=Frequency or self.radioDefault.Freq
Modulation=Modulation or self.radioDefault.Modu if self:IsInUtero() then
-- Set current radio.
self.radioLast={}
self.radioLast.Freq=Frequency
self.radioLast.Modu=Modulation
self:T2(self.lid..string.format("Switching radio to frequency %.3f MHz %s when GROUP is SPAWNED", self.radioLast.Freq, UTILS.GetModulationName(self.radioLast.Modu)))
elseif self:IsAlive() then
local group=self.group --Wrapper.Group#GROUP local group=self.group --Wrapper.Group#GROUP
@ -3423,6 +3447,14 @@ function OPSGROUP:SwitchRadio(Frequency, Modulation)
self.radioLast=UTILS.DeepCopy(self.radio) self.radioLast=UTILS.DeepCopy(self.radio)
end end
-- Debug.
if false then
local text=string.format("\nRadio Freq=%.3f %.3f", self.radio.Freq, self.radioLast.Freq)
text=text..string.format("\nRadio Modu=%d %d", self.radio.Modu, self.radioLast.Modu)
text=text..string.format("\nRadio OnOf=%s %s", tostring(self.radio.On), tostring(self.radioLast.On))
self:I(self.lid..text)
end
-- Set current radio. -- Set current radio.
self.radio.Freq=Frequency self.radio.Freq=Frequency
self.radio.Modu=Modulation self.radio.Modu=Modulation
@ -3431,27 +3463,13 @@ function OPSGROUP:SwitchRadio(Frequency, Modulation)
-- Only switch radio if different. -- Only switch radio if different.
if self.radio.Freq~=self.radioLast.Freq or self.radio.Modu~=self.radioLast.Modu then if self.radio.Freq~=self.radioLast.Freq or self.radio.Modu~=self.radioLast.Modu then
--[[ -- Give command
local text=string.format("\nRadio Freq=%.3f %.3f", self.radio.Freq, self.radioLast.Freq) group:CommandSetFrequency(Frequency, Modulation)
text=text..string.format("\nRadio Modu=%d %d", self.radio.Modu, self.radioLast.Modu)
text=text..string.format("\nRadio OnOf=%s %s", tostring(self.radio.On), tostring(self.radioLast.On))
text=text..string.format("\nRadio %s", tostring(self.radio==self.radioLast))
self:I(self.lid..text)
]]
if self:IsInUtero() then self:I(self.lid..string.format("Switching radio to frequency %.3f MHz %s", self.radio.Freq, UTILS.GetModulationName(self.radio.Modu)))
self:T2(self.lid..string.format("Switching radio to frequency %.3f MHz %s when GROUP is SPAWNED", self.radio.Freq, UTILS.GetModulationName(self.radio.Modu)))
else
-- Give command
group:CommandSetFrequency(Frequency, Modulation)
self:I(self.lid..string.format("Switching radio to frequency %.3f MHz %s", self.radio.Freq, UTILS.GetModulationName(self.radio.Modu)))
end
else else
self:T(self.lid.."INFO: Current radio not switched as freq/modulation did not change") self:I(self.lid.."INFO: Current radio not switched as freq/modulation did not change")
end end
else else

View File

@ -136,7 +136,7 @@ function SQUADRON:New(TemplateGroupName, Ngroups, SquadronName)
self.Ngroups=Ngroups or 3 self.Ngroups=Ngroups or 3
self:SetMissionRange() self:SetMissionRange()
self:SetSkill(AI.Skill.GOOD) self:SetSkill(AI.Skill.GOOD)
self:SetVerbosity(0) --self:SetVerbosity(0)
-- Everyone can ORBIT. -- Everyone can ORBIT.
self:AddMissionCapability(AUFTRAG.Type.ORBIT) self:AddMissionCapability(AUFTRAG.Type.ORBIT)

View File

@ -201,13 +201,6 @@ function TARGET:New(TargetObject)
-- @param #number delay Delay in seconds. -- @param #number delay Delay in seconds.
-- Debug trace.
if false then
self.Debug=true
BASE:TraceOnOff(true)
BASE:TraceClass(self.ClassName)
BASE:TraceLevel(1)
end
-- Start. -- Start.
self:__Start(-1) self:__Start(-1)