From 8b640912c3517533e92be4c5853a95f41aab8190 Mon Sep 17 00:00:00 2001 From: Frank Date: Wed, 2 Sep 2020 22:54:54 +0200 Subject: [PATCH] Ops --- Moose Development/Moose/Ops/AirWing.lua | 2 +- Moose Development/Moose/Ops/ArmyGroup.lua | 25 +++---- Moose Development/Moose/Ops/Auftrag.lua | 2 +- Moose Development/Moose/Ops/FlightGroup.lua | 20 ++---- Moose Development/Moose/Ops/NavyGroup.lua | 39 ++++++----- Moose Development/Moose/Ops/OpsGroup.lua | 74 +++++++++++++-------- Moose Development/Moose/Ops/Squadron.lua | 2 +- Moose Development/Moose/Ops/Target.lua | 9 +-- 8 files changed, 84 insertions(+), 89 deletions(-) diff --git a/Moose Development/Moose/Ops/AirWing.lua b/Moose Development/Moose/Ops/AirWing.lua index 5ea8ffe5a..efe9161e2 100644 --- a/Moose Development/Moose/Ops/AirWing.lua +++ b/Moose Development/Moose/Ops/AirWing.lua @@ -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 diff --git a/Moose Development/Moose/Ops/ArmyGroup.lua b/Moose Development/Moose/Ops/ArmyGroup.lua index 83ef84b60..33b6d96ca 100644 --- a/Moose Development/Moose/Ops/ArmyGroup.lua +++ b/Moose Development/Moose/Ops/ArmyGroup.lua @@ -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 + self:SwitchROE(self.option.ROE) -- Set default Alarm State. - if self.option.Alarm then - self:SwitchAlarmstate(self.option.Alarm) - else - self:SwitchAlarmstate(ENUMS.AlarmState.Auto) - end + self:SwitchAlarmstate(self.option.Alarm) -- 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 diff --git a/Moose Development/Moose/Ops/Auftrag.lua b/Moose Development/Moose/Ops/Auftrag.lua index 5f0335a76..e7d7933b0 100644 --- a/Moose Development/Moose/Ops/Auftrag.lua +++ b/Moose Development/Moose/Ops/Auftrag.lua @@ -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() diff --git a/Moose Development/Moose/Ops/FlightGroup.lua b/Moose Development/Moose/Ops/FlightGroup.lua index f786bf6e7..6bf9da7e2 100644 --- a/Moose Development/Moose/Ops/FlightGroup.lua +++ b/Moose Development/Moose/Ops/FlightGroup.lua @@ -1394,19 +1394,11 @@ function FLIGHTGROUP:onafterSpawned(From, Event, To) 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 ROE. + self:SwitchROE(self.option.ROE) - -- Set default ROT. - if self.option.ROT then - self:SwitchROT(self.option.ROT) - else - self:SwitchROT(ENUMS.ROT.PassiveDefense) - end + -- Set ROT. + self:SwitchROT(self.option.ROT) -- 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. diff --git a/Moose Development/Moose/Ops/NavyGroup.lua b/Moose Development/Moose/Ops/NavyGroup.lua index bb5006272..7a12f07e5 100644 --- a/Moose Development/Moose/Ops/NavyGroup.lua +++ b/Moose Development/Moose/Ops/NavyGroup.lua @@ -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 + self:SwitchROE(self.option.ROE) -- 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 diff --git a/Moose Development/Moose/Ops/OpsGroup.lua b/Moose Development/Moose/Ops/OpsGroup.lua index 7a5917094..c3ea95bf4 100644 --- a/Moose Development/Moose/Ops/OpsGroup.lua +++ b/Moose Development/Moose/Ops/OpsGroup.lua @@ -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 @@ -2102,7 +2102,22 @@ 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. 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,10 +3422,19 @@ 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 - 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 @@ -3423,35 +3447,29 @@ 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 + self.radio.Modu=Modulation self.radio.On=true -- 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 + -- 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))) 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 diff --git a/Moose Development/Moose/Ops/Squadron.lua b/Moose Development/Moose/Ops/Squadron.lua index 515bca3ea..3748a0c7a 100644 --- a/Moose Development/Moose/Ops/Squadron.lua +++ b/Moose Development/Moose/Ops/Squadron.lua @@ -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) diff --git a/Moose Development/Moose/Ops/Target.lua b/Moose Development/Moose/Ops/Target.lua index 7f8cdd7cb..32c1bcb78 100644 --- a/Moose Development/Moose/Ops/Target.lua +++ b/Moose Development/Moose/Ops/Target.lua @@ -201,14 +201,7 @@ 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)