From 94863ed8ae05bebe2f09998d68c5b4a070865655 Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 24 Nov 2020 22:00:36 +0100 Subject: [PATCH 1/2] Update OpsGroup.lua --- Moose Development/Moose/Ops/OpsGroup.lua | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Moose Development/Moose/Ops/OpsGroup.lua b/Moose Development/Moose/Ops/OpsGroup.lua index 79240503b..d1abc64bd 100644 --- a/Moose Development/Moose/Ops/OpsGroup.lua +++ b/Moose Development/Moose/Ops/OpsGroup.lua @@ -3497,8 +3497,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 +3542,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 From 5b83f8e45b0905100e31902f3cd29430e24f72d6 Mon Sep 17 00:00:00 2001 From: Frank Date: Wed, 25 Nov 2020 11:27:07 +0100 Subject: [PATCH 2/2] OPS --- Moose Development/Moose/Ops/OpsGroup.lua | 10 ++++++---- Moose Development/Moose/Utilities/Utils.lua | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Moose Development/Moose/Ops/OpsGroup.lua b/Moose Development/Moose/Ops/OpsGroup.lua index d1abc64bd..48145683b 100644 --- a/Moose Development/Moose/Ops/OpsGroup.lua +++ b/Moose Development/Moose/Ops/OpsGroup.lua @@ -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 diff --git a/Moose Development/Moose/Utilities/Utils.lua b/Moose Development/Moose/Utilities/Utils.lua index 40ba3e932..e0eb873da 100644 --- a/Moose Development/Moose/Utilities/Utils.lua +++ b/Moose Development/Moose/Utilities/Utils.lua @@ -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