Merge pull request #1385 from FlightControl-Master/FF/Ops

OPS
This commit is contained in:
Frank 2020-11-25 11:34:41 +01:00 committed by GitHub
commit 41690fdf7b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 10 deletions

View File

@ -90,6 +90,7 @@
-- @field #OPSGROUP.Spot spot Laser and IR spot.
--
-- @field #OPSGROUP.Ammo ammo Initial ammount of ammo.
-- @field #OPSGROUP.WeaponData weaponData Weapon data table with key=BitType.
--
-- @extends Core.Fsm#FSM
@ -144,6 +145,7 @@ OPSGROUP = {
callsign = {},
Ndestroyed = 0,
Nkills = 0,
weaponData = {},
}
@ -601,14 +603,14 @@ end
--- Add a weapon range for ARTY auftrag.
-- @param #OPSGROUP self
-- @param #number RangeMin Minimum range in kilometers. Default 0 km.
-- @param #number RangeMax Maximum range in kilometers. Default 10 km.
-- @param #number RangeMin Minimum range in nautical miles. Default 0 NM.
-- @param #number RangeMax Maximum range in nautical miles. Default 10 NM.
-- @param #number BitType Bit mask of weapon type for which the given min/max ranges apply. Default is `ENUMS.WeaponFlag.Auto`, i.e. for all weapon types.
-- @return #OPSGROUP self
function OPSGROUP:AddWeaponRange(RangeMin, RangeMax, BitType)
RangeMin=(RangeMin or 0)*1000
RangeMax=(RangeMax or 10)*1000
RangeMin=UTILS.NMToMeters(RangeMin or 0)
RangeMax=UTILS.NMToMeters(RangeMax or 10)
local weapon={} --#OPSGROUP.WeaponData
@ -3497,8 +3499,15 @@ function OPSGROUP:SetLaserTarget(Target)
if Target then
-- Check if we have a POSITIONABLE.
if Target:IsInstanceOf("POSITIONABLE") then
-- Check object type.
if Target:IsInstanceOf("SCENERY") then
-- Scenery as target. Treat it like a coordinate. Set offset to 1 meter above ground.
self.spot.TargetType=0
self.spot.offsetTarget={x=0, y=1, z=0}
elseif Target:IsInstanceOf("POSITIONABLE") then
local target=Target --Wrapper.Positionable#POSITIONABLE
if target:IsAlive() then
@ -3535,13 +3544,11 @@ function OPSGROUP:SetLaserTarget(Target)
end
elseif Target:IsInstanceOf("COORDINATE") then
-- Coordinate as target.
self.spot.TargetType=0
self.spot.offsetTarget={x=0, y=0, z=0}
elseif Target:IsInstanceOf("SCENERY") then
-- Coordinate as target.
self.spot.TargetType=0
self.spot.offsetTarget={x=0, y=1, z=0}
else
self:E(self.lid.."ERROR: LASER target should be a POSITIONABLE (GROUP, UNIT or STATIC) or a COORDINATE object!")
return

View File

@ -324,18 +324,34 @@ UTILS.MetersToNM = function(meters)
return meters/1852
end
UTILS.KiloMetersToNM = function(kilometers)
return kilometers/1852*1000
end
UTILS.MetersToSM = function(meters)
return meters/1609.34
end
UTILS.KiloMetersToSM = function(kilometers)
return kilometers/1609.34*1000
end
UTILS.MetersToFeet = function(meters)
return meters/0.3048
end
UTILS.KiloMetersToFeet = function(kilometers)
return kilometers/0.3048*1000
end
UTILS.NMToMeters = function(NM)
return NM*1852
end
UTILS.NMToKiloMeters = function(NM)
return NM*1852/1000
end
UTILS.FeetToMeters = function(feet)
return feet*0.3048
end