From da2740fb834e93f99b7148bd46cf040c943a5178 Mon Sep 17 00:00:00 2001 From: mcmicha Date: Thu, 29 Aug 2019 00:40:14 +0200 Subject: [PATCH] Update FC_AuxiliaryFuntions.lua Corrected US and Russian HSI distance calculation. --- .../ExportsModules/FC_AuxiliaryFuntions.lua | 83 +++++++++++-------- 1 file changed, 47 insertions(+), 36 deletions(-) diff --git a/Scripts/DCS-ExportScript/ExportsModules/FC_AuxiliaryFuntions.lua b/Scripts/DCS-ExportScript/ExportsModules/FC_AuxiliaryFuntions.lua index 104dda1..906f38e 100644 --- a/Scripts/DCS-ExportScript/ExportsModules/FC_AuxiliaryFuntions.lua +++ b/Scripts/DCS-ExportScript/ExportsModules/FC_AuxiliaryFuntions.lua @@ -351,28 +351,32 @@ function ExportScript.AF.FC_Russian_HSI(distancetoway) [116] = "%0.1f", -- HSI_range_unavailable_flag{0.0, 1.0} [121] = "%0.1f", -- HSI_course_unavailable_flag{0.0, 1.0} ]] - local lAltCounter = {[0] = 0.0, [1] = 0.11, [2] = 0.22, [3] = 0.33, [4] = 0.44, [5] = 0.55, [6] = 0.66, [7] = 0.77, [8] = 0.88, [9] = 0.99} lDistanceToWay = ExportScript.Tools.round(lDistanceToWay / 1000, 1) local lDistanceToWayTmp = string.format("%03d", lDistanceToWay) local lRangeCounter1 = 0 local lRangeCounter2 = 0 local lRangeCounter3 = 0 - if lDistanceToWay > 100 then - lRangeCounter1 = ExportScript.Tools.round((lDistanceToWay / 100), 0, "floor") * 0.11 - lRangeCounter1 = lRangeCounter1 - ExportScript.Tools.round(lRangeCounter1, 0, "floor") - end - if lDistanceToWay > 10 then - if lDistanceToWay > 100 then - lRangeCounter2 = (ExportScript.Tools.round((lDistanceToWay - (ExportScript.Tools.round(lDistanceToWay / 100, 0, "floor") * 100)), 0, "floor") / 10) * 0.11 - else - lRangeCounter2 = (lDistanceToWay / 10) * 0.11 - lRangeCounter2 = lRangeCounter2 - ExportScript.Tools.round(lRangeCounter2, 0, "floor") - end - end - if lDistanceToWay > 10 then - lRangeCounter3 = (lDistanceToWay - (ExportScript.Tools.round(lDistanceToWay / 10, 0, "floor") * 10)) * 0.11 + local temp = 0 + + if lDistanceToWay > 999 then + lRangeCounter1 = 1 + lRangeCounter2 = 1 + lRangeCounter3 = 1 else - lRangeCounter3 = lDistanceToWay * 0.11 + if lDistanceToWay > 100 then + lRangeCounter1, temp = math.modf(lDistanceToWay / 100) + lRangeCounter1 = lRangeCounter1 * 0.11 + + lRangeCounter2, lRangeCounter3 = math.modf(lDistanceToWay / 10) + temp, lRangeCounter2 = math.modf(lRangeCounter2 * 0.11) + lRangeCounter3 = lRangeCounter3 * 0.11 + elseif lDistanceToWay > 10 then + lRangeCounter2, lRangeCounter3 = math.modf(lDistanceToWay / 10) + lRangeCounter2 = lRangeCounter2 * 0.11 + lRangeCounter3 = lRangeCounter3 * 1.1 + else + lRangeCounter3 = lDistanceToWay * 0.11 + end end lHeading = (lHeading / lRadToDCSunsignd) @@ -398,8 +402,8 @@ function ExportScript.AF.FC_Russian_HSI(distancetoway) ExportScript.Tools.SendData(15, lDefaultNull) -- KC Flag ExportScript.Tools.SendData(16, lDefaultOne) -- K Flag ExportScript.Tools.SendData(17, lDefaultOne) -- L Flag - ExportScript.Tools.SendData(18, string.format("%.4f", lAltCounter[tonumber(string.sub(lDistanceToWayTmp, 1, 1))])) - ExportScript.Tools.SendData(19, string.format("%.4f", lAltCounter[tonumber(string.sub(lDistanceToWayTmp, 2, 2))])) + ExportScript.Tools.SendData(18, string.format("%.4f", lRangeCounter1)) + ExportScript.Tools.SendData(19, string.format("%.4f", lRangeCounter2)) ExportScript.Tools.SendData(20, string.format("%.4f", lRangeCounter3)) ExportScript.Tools.SendData(21, string.format("%.4f", lGlide)) ExportScript.Tools.SendData(22, string.format("%.4f", lSide)) @@ -456,32 +460,39 @@ end function ExportScript.AF.FC_Russian_HSI_Distance_old(distancetoway) local lDistanceToWay = distancetoway or 999 - local lAltCounter = {[0] = 0.0, [1] = 0.11, [2] = 0.22, [3] = 0.33, [4] = 0.44, [5] = 0.55, [6] = 0.66, [7] = 0.77, [8] = 0.88, [9] = 0.99} lDistanceToWay = ExportScript.Tools.round(lDistanceToWay / 1000, 1) - local lDistanceToWayTmp = string.format("%03d", lDistanceToWay) + local lRangeCounter1 = 0 local lRangeCounter2 = 0 local lRangeCounter3 = 0 - if lDistanceToWay > 100 then - lRangeCounter1 = ExportScript.Tools.round((lDistanceToWay / 100), 0, "floor") * 0.11 - lRangeCounter1 = lRangeCounter1 - ExportScript.Tools.round(lRangeCounter1, 0, "floor") - end - if lDistanceToWay > 10 then + local temp = 0 + if lDistanceToWay > 999 then + lRangeCounter1 = 0.9 + lRangeCounter2 = 0.9 + lRangeCounter3 = 0.9 + else if lDistanceToWay > 100 then - lRangeCounter2 = (ExportScript.Tools.round((lDistanceToWay - (ExportScript.Tools.round(lDistanceToWay / 100, 0, "floor") * 100)), 0, "floor") / 10) * 0.11 + lRangeCounter1, temp = math.modf(lDistanceToWay / 100) + lRangeCounter1 = lRangeCounter1 / 10 + lRangeCounter1 = (lRangeCounter1 > 0.9 and 0.9 or lRangeCounter1) + + lRangeCounter2, lRangeCounter3 = math.modf(lDistanceToWay / 10) + temp, lRangeCounter2 = math.modf(lRangeCounter2 / 10) + lRangeCounter2 = (lRangeCounter2 > 0.9 and 0.9 or lRangeCounter2) + lRangeCounter3 = (lRangeCounter3 > 0.9 and 0.9 or lRangeCounter3) + elseif lDistanceToWay > 10 then + lRangeCounter2, lRangeCounter3 = math.modf(lDistanceToWay / 10) + lRangeCounter2 = lRangeCounter2 / 10 + lRangeCounter2 = (lRangeCounter2 > 0.9 and 0.9 or lRangeCounter2) + lRangeCounter3 = (lRangeCounter3 > 0.9 and 0.9 or lRangeCounter3) else - lRangeCounter2 = (lDistanceToWay / 10) * 0.11 - lRangeCounter2 = lRangeCounter2 - ExportScript.Tools.round(lRangeCounter2, 0, "floor") + lRangeCounter3 = lDistanceToWay / 10 + lRangeCounter3 = (lRangeCounter3 > 0.9 and 0.9 or lRangeCounter3) end end - if lDistanceToWay > 10 then - lRangeCounter3 = (lDistanceToWay - (ExportScript.Tools.round(lDistanceToWay / 10, 0, "floor") * 10)) * 0.11 - else - lRangeCounter3 = lDistanceToWay * 0.11 - end - ExportScript.Tools.SendData(18, string.format("%.4f", lAltCounter[tonumber(string.sub(lDistanceToWayTmp, 1, 1))])) - ExportScript.Tools.SendData(19, string.format("%.4f", lAltCounter[tonumber(string.sub(lDistanceToWayTmp, 2, 2))])) + ExportScript.Tools.SendData(18, string.format("%.4f", lRangeCounter1)) + ExportScript.Tools.SendData(19, string.format("%.4f", lRangeCounter2)) ExportScript.Tools.SendData(20, string.format("%.4f", lRangeCounter3)) end @@ -2101,7 +2112,7 @@ function ExportScript.AF.FC_US_HSI(distancetoway) ExportScript.Tools.SendData(13, string.format("%.4f", lHSI_Curse)) -- Bearing #2 ExportScript.Tools.SendData(14, lDefaultNull) ExportScript.Tools.SendData(15, string.format("%.4f", lHSI_Curse)) - ExportScript.Tools.SendData(16, string.format("%.4f", lCourseDeviation)) + ExportScript.Tools.SendData(16, string.format("%.4f", lCourseDeviation)) ExportScript.Tools.SendData(17, string.format("%.4f", lRangeCounter1)) ExportScript.Tools.SendData(18, string.format("%.4f", lRangeCounter2)) ExportScript.Tools.SendData(19, string.format("%.4f", lRangeCounter3))