mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
Ops
This commit is contained in:
parent
444cc43971
commit
8b640912c3
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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()
|
||||||
|
|||||||
@ -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.
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user