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.
-- Defaults:
self:SetVerbosity(0)
--self:SetVerbosity(0)
self.nflightsCAP=0
self.nflightsAWACS=0
self.nflightsTANKERboom=0

View File

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

View File

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

View File

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

View File

@ -539,21 +539,18 @@ end
function NAVYGROUP:onafterSpawned(From, Event, To)
self:T(self.lid..string.format("Group spawned!"))
-- TODO
self.traveldist=0
self.traveltime=timer.getAbsTime()
self.position=self:GetCoordinate()
if self.ai then
-- Set default ROE.
if self.option.ROE then
self:SwitchROE(self.option.ROE)
else
self:SwitchROE(ENUMS.ROE.ReturnFire)
end
-- Set default Alarm State.
if self.option.Alarm then
self:SwitchAlarmstate(self.option.Alarm)
else
self:SwitchAlarmstate(0)
end
self:SwitchAlarmstate(self.option.ROT)
-- Turn TACAN beacon on.
if self.tacan.On then
@ -566,8 +563,8 @@ function NAVYGROUP:onafterSpawned(From, Event, To)
end
-- Turn on the radio.
if self.radio.On then
self:SwitchRadio(self.radio.Freq, self.radio.Modu)
if self.radioLast then
self:SwitchRadio(self.radioLast.Freq, self.radioLast.Modu)
else
self.radio.On=true -- Radio is always on for ships. If not set, it is default.
end
@ -1128,10 +1125,6 @@ function NAVYGROUP:_InitGroup()
-- Group ammo.
self.ammo=self:GetAmmoTot()
self.traveldist=0
self.traveltime=timer.getAbsTime()
self.position=self:GetCoordinate()
-- 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.Freq=tonumber(self.template.units[1].frequency)/1000000
@ -1230,7 +1223,10 @@ function NAVYGROUP:_CheckFreePath(DistanceMax, dx)
end
-- 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.
local heading=self:GetHeading()
@ -1239,8 +1235,11 @@ function NAVYGROUP:_CheckFreePath(DistanceMax, dx)
--coordinate=coordinate:Translate(500, heading, true)
local function LoS(dist)
local checkcoord=coordinate:Translate(dist, heading, true)
return coordinate:IsLOS(checkcoord, offsetY)
--local checkcoord=coordinate:Translate(dist, heading, true)
--return coordinate:IsLOS(checkcoord, offsetY)
local checkvec3=UTILS.VecTranslate(vec3, dist, heading)
local los=land.isVisible(vec3, checkvec3)
return los
end
-- First check if everything is clear.
@ -1265,7 +1264,7 @@ function NAVYGROUP:_CheckFreePath(DistanceMax, dx)
local los=LoS(x)
-- 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
return x

View File

@ -95,7 +95,7 @@
OPSGROUP = {
ClassName = "OPSGROUP",
Debug = false,
verbose = 3,
verbose = 0,
lid = nil,
groupname = nil,
group = nil,
@ -522,7 +522,7 @@ end
function OPSGROUP:GetVelocity()
if self:IsAlive()~=nil then
local vel=self.group:GetVelocityMPS()
return rel
return vel
else
self:E(self.lid.."WARNING: Group is not alive. Cannot get velocity!")
end
@ -2103,6 +2103,21 @@ function OPSGROUP:onafterMissionDone(From, Event, To, Mission)
end
-- 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.
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))
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)))
end
@ -3118,7 +3133,7 @@ function OPSGROUP:SwitchAlarmstate(alarmstate)
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
self:T2(self.lid..string.format("Setting current Alarm State=%d when GROUP is SPAWNED", self.option.Alarm))
@ -3407,11 +3422,20 @@ end
-- @return #OPSGROUP self
function OPSGROUP:SwitchRadio(Frequency, Modulation)
if self:IsAlive() or self:IsInUtero() then
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
if self.isAircraft and not self.radio.On then
@ -3423,6 +3447,14 @@ function OPSGROUP:SwitchRadio(Frequency, Modulation)
self.radioLast=UTILS.DeepCopy(self.radio)
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.
self.radio.Freq=Frequency
self.radio.Modu=Modulation
@ -3431,27 +3463,13 @@ function OPSGROUP:SwitchRadio(Frequency, Modulation)
-- Only switch radio if different.
if self.radio.Freq~=self.radioLast.Freq or self.radio.Modu~=self.radioLast.Modu 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))
text=text..string.format("\nRadio %s", tostring(self.radio==self.radioLast))
self:I(self.lid..text)
]]
if self:IsInUtero() then
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
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
else

View File

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

View File

@ -201,13 +201,6 @@ function TARGET:New(TargetObject)
-- @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.
self:__Start(-1)