mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Ops
This commit is contained in:
@@ -1988,6 +1988,7 @@ function AIRWING:CountAssetsOnMission(MissionTypes, Squadron)
|
||||
end
|
||||
end
|
||||
|
||||
env.info(string.format("FF N=%d Np=%d, Nq=%d", Np+Nq, Np, Nq))
|
||||
return Np+Nq, Np, Nq
|
||||
end
|
||||
|
||||
|
||||
@@ -486,6 +486,7 @@ function AUFTRAG:New(Type)
|
||||
self.engageAsGroup=true
|
||||
self.missionRepeated=0
|
||||
self.missionRepeatMax=0
|
||||
self.NrepeatSuccess=0
|
||||
self.nassets=1
|
||||
self.dTevaluate=0
|
||||
self.Ncasualties=0
|
||||
@@ -982,6 +983,10 @@ function AUFTRAG:NewBOMBRUNWAY(Airdrome, Altitude)
|
||||
if type(Airdrome)=="string" then
|
||||
Airdrome=AIRBASE:FindByName(Airdrome)
|
||||
end
|
||||
|
||||
if Airdrome:IsInstanceOf("AIRBASE") then
|
||||
|
||||
end
|
||||
|
||||
local mission=AUFTRAG:New(AUFTRAG.Type.BOMBRUNWAY)
|
||||
|
||||
@@ -995,7 +1000,7 @@ function AUFTRAG:NewBOMBRUNWAY(Airdrome, Altitude)
|
||||
-- Mission options:
|
||||
mission.missionTask=ENUMS.MissionTask.RUNWAYATTACK
|
||||
mission.missionAltitude=mission.engageAltitude*0.8
|
||||
mission.missionFraction=0.2
|
||||
mission.missionFraction=0.75
|
||||
mission.optionROE=ENUMS.ROE.OpenFire
|
||||
mission.optionROT=ENUMS.ROT.PassiveDefense
|
||||
|
||||
@@ -3052,7 +3057,7 @@ function AUFTRAG:GetDCSMissionTask(TaskControllable)
|
||||
-- BOMBRUNWAY Mission --
|
||||
------------------------
|
||||
|
||||
local DCStask=CONTROLLABLE.TaskBombingRunway(nil, self.engageTarget.Target, self.engageWeaponType, self.engageWeaponExpend, self.engageQuantity, self.engageDirection, self.engageAsGroup)
|
||||
local DCStask=CONTROLLABLE.TaskBombingRunway(nil, self.engageTarget:GetObject(), self.engageWeaponType, self.engageWeaponExpend, self.engageQuantity, self.engageDirection, self.engageAsGroup)
|
||||
|
||||
table.insert(DCStasks, DCStask)
|
||||
|
||||
@@ -3092,7 +3097,7 @@ function AUFTRAG:GetDCSMissionTask(TaskControllable)
|
||||
-- ESCORT Mission --
|
||||
--------------------
|
||||
|
||||
local DCStask=CONTROLLABLE.TaskEscort(nil, self.engageTarget.Target, self.escortVec3, LastWaypointIndex, self.engageMaxDistance, self.engageTargetTypes)
|
||||
local DCStask=CONTROLLABLE.TaskEscort(nil, self.engageTarget:GetObject(), self.escortVec3, LastWaypointIndex, self.engageMaxDistance, self.engageTargetTypes)
|
||||
|
||||
table.insert(DCStasks, DCStask)
|
||||
|
||||
@@ -3102,7 +3107,7 @@ function AUFTRAG:GetDCSMissionTask(TaskControllable)
|
||||
-- FAC Mission --
|
||||
-----------------
|
||||
|
||||
local DCStask=CONTROLLABLE.TaskFAC_AttackGroup(nil, self.engageTarget.Target, self.engageWeaponType, self.facDesignation, self.facDatalink, self.facFreq, self.facModu, CallsignName, CallsignNumber)
|
||||
local DCStask=CONTROLLABLE.TaskFAC_AttackGroup(nil, self.engageTarget:GetObject(), self.engageWeaponType, self.facDesignation, self.facDatalink, self.facFreq, self.facModu, CallsignName, CallsignNumber)
|
||||
|
||||
table.insert(DCStasks, DCStask)
|
||||
|
||||
|
||||
@@ -416,6 +416,9 @@ function NAVYGROUP:onafterStatus(From, Event, To)
|
||||
local pos=self:GetCoordinate()
|
||||
local speed=self.group:GetVelocityKNOTS()
|
||||
|
||||
-- Update last known position, orientation, velocity.
|
||||
self:_UpdatePosition()
|
||||
|
||||
-- Check if group started or stopped turning.
|
||||
self:_CheckTurning()
|
||||
|
||||
@@ -440,9 +443,6 @@ function NAVYGROUP:onafterStatus(From, Event, To)
|
||||
|
||||
end
|
||||
|
||||
-- Check water is ahead.
|
||||
--collision=self:_CheckCollisionCoord(pos:Translate(freepath+100, hdg))
|
||||
|
||||
end
|
||||
|
||||
-- Check into wind queue.
|
||||
@@ -1348,10 +1348,10 @@ function NAVYGROUP:_CheckTurning()
|
||||
if unit and unit:IsAlive() then
|
||||
|
||||
-- Current orientation of carrier.
|
||||
local vNew=unit:GetOrientationX()
|
||||
local vNew=self.orientX --unit:GetOrientationX()
|
||||
|
||||
-- Last orientation from 30 seconds ago.
|
||||
local vLast=self.Corientlast or vNew
|
||||
local vLast=self.orientXLast --self.Corientlast or vNew
|
||||
|
||||
-- We only need the X-Z plane.
|
||||
vNew.y=0 ; vLast.y=0
|
||||
@@ -1360,7 +1360,7 @@ function NAVYGROUP:_CheckTurning()
|
||||
local deltaLast=math.deg(math.acos(UTILS.VecDot(vNew,vLast)/UTILS.VecNorm(vNew)/UTILS.VecNorm(vLast)))
|
||||
|
||||
-- Last orientation becomes new orientation
|
||||
self.Corientlast=vNew
|
||||
--self.Corientlast=vNew
|
||||
|
||||
-- Carrier is turning when its heading changed by at least two degrees since last check.
|
||||
local turning=math.abs(deltaLast)>=2
|
||||
|
||||
@@ -2386,7 +2386,7 @@ function OPSGROUP:onafterCheckZone(From, Event, To)
|
||||
end
|
||||
|
||||
if not self:IsStopped() then
|
||||
self:__CheckZone(-1)
|
||||
self:__CheckZone(-10)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2443,7 +2443,6 @@ function OPSGROUP:_CheckInZones()
|
||||
self:EnterZone(enterzone)
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
@@ -3494,6 +3493,30 @@ end
|
||||
-- Element and Group Status Functions
|
||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
--- Check if all elements of the group have the same status (or are dead).
|
||||
-- @param #OPSGROUP self
|
||||
-- @param #string unitname Name of unit.
|
||||
function OPSGROUP:_UpdatePosition()
|
||||
|
||||
if self:IsAlive() then
|
||||
|
||||
self.positionLast=self.position or self:GetCoordinate()
|
||||
self.headingLast=self.heading or self:GetHeading()
|
||||
self.orientXLast=self.orientX or self.group:GetUnit(1):GetOrientationX()
|
||||
self.velocityLast=self.velocity or self.group:GetVelocityMPS()
|
||||
|
||||
self.position=self:GetCoordinate()
|
||||
self.heading=self:GetHeading()
|
||||
self.orientX=self.group:GetUnit(1):GetOrientationX()
|
||||
self.velocity=self.group:GetVelocityMPS()
|
||||
|
||||
self.dTpositionUpdate=self.TpositionUpdate and self.TpositionUpdate-timer.getAbsTime() or 0
|
||||
self.TpositionUpdate=timer.getAbsTime()
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--- Check if all elements of the group have the same status (or are dead).
|
||||
-- @param #OPSGROUP self
|
||||
-- @param #string unitname Name of unit.
|
||||
|
||||
@@ -574,8 +574,11 @@ function SQUADRON:onafterStatus(From, Event, To)
|
||||
|
||||
local NassetsTot=#self.assets
|
||||
local NassetsInS=self:CountAssetsInStock()
|
||||
local NassetsQP, NassetsP, NassetsQ=self.airwing and self.airwing:CountAssetsOnMission(nil, self) or 0,0,0
|
||||
|
||||
local NassetsQP=0 ; local NassetsP=0 ; local NassetsQ=0
|
||||
if self.airwing then
|
||||
NassetsQP, NassetsP, NassetsQ=self.airwing:CountAssetsOnMission(nil, self)
|
||||
end
|
||||
|
||||
-- Short info.
|
||||
local text=string.format("%s [Type=%s, Callsign=%s, Modex=%d, Skill=%s]: Assets Total=%d, InStock=%d, OnMission=%d [P=%d, Q=%d]",
|
||||
fsmstate, self.aircrafttype, callsign, modex, skill, NassetsTot, NassetsInS, NassetsQP, NassetsP, NassetsQ)
|
||||
@@ -613,6 +616,8 @@ function SQUADRON:_CheckAssetStatus()
|
||||
if mission then
|
||||
local distance=asset.flightgroup and UTILS.MetersToNM(mission:GetTargetDistance(asset.flightgroup.group:GetCoordinate())) or 0
|
||||
text=text..string.format(" Mission %s - %s: Status=%s, Dist=%.1f NM", mission.name, mission.type, mission.status, distance)
|
||||
else
|
||||
text=text.."Mission None"
|
||||
end
|
||||
|
||||
-- Flight status.
|
||||
|
||||
Reference in New Issue
Block a user