From c7ea45e5fd7d053074cd135d1e7657618b10f659 Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Wed, 18 Aug 2021 18:01:04 +0200 Subject: [PATCH] Clean up UTF-8 mess --- Moose Development/Moose/Core/Point.lua | 28 +++--- .../Moose/Functional/Detection.lua | 10 +- Moose Development/Moose/Functional/Fox.lua | 10 +- .../Moose/Functional/MissileTrainer.lua | 2 +- .../Moose/Functional/PseudoATC.lua | 8 +- Moose Development/Moose/Functional/RAT.lua | 2 +- Moose Development/Moose/Functional/Range.lua | 18 ++-- Moose Development/Moose/Ops/ATIS.lua | 60 ++++++------ Moose Development/Moose/Ops/Airboss.lua | 98 +++++++++---------- Moose Development/Moose/Sound/RadioSpeech.lua | 37 ++++--- .../Moose/Tasking/DetectionManager.lua | 2 +- .../Moose/Tasking/Task_Cargo_Dispatcher.lua | 2 +- Moose Development/Moose/Utilities/Utils.lua | 10 +- Moose Development/Moose/Wrapper/Airbase.lua | 6 +- 14 files changed, 146 insertions(+), 147 deletions(-) diff --git a/Moose Development/Moose/Core/Point.lua b/Moose Development/Moose/Core/Point.lua index ba77d7dda..f79d54593 100644 --- a/Moose Development/Moose/Core/Point.lua +++ b/Moose Development/Moose/Core/Point.lua @@ -806,13 +806,13 @@ do -- COORDINATE --- Returns a text of the temperature according the measurement system @{Settings}. -- The text will reflect the temperature like this: -- - -- - For Russian and European aircraft using the metric system - Degrees Celcius (C) - -- - For Americain aircraft we link to the imperial system - Degrees Farenheit (F) + -- - For Russian and European aircraft using the metric system - Degrees Celcius (°C) + -- - For Americain aircraft we link to the imperial system - Degrees Farenheit (°F) -- -- A text containing a pressure will look like this: -- - -- - `Temperature: %n.d C` - -- - `Temperature: %n.d F` + -- - `Temperature: %n.d °C` + -- - `Temperature: %n.d °F` -- -- @param #COORDINATE self -- @param height (Optional) parameter specifying the height ASL. @@ -825,9 +825,9 @@ do -- COORDINATE if DegreesCelcius then if Settings:IsMetric() then - return string.format( " %-2.2f C", DegreesCelcius ) + return string.format( " %-2.2f °C", DegreesCelcius ) else - return string.format( " %-2.2f F", UTILS.CelciusToFarenheit( DegreesCelcius ) ) + return string.format( " %-2.2f °F", UTILS.CelciusToFarenheit( DegreesCelcius ) ) end else return " no temperature" @@ -945,13 +945,13 @@ do -- COORDINATE --- Returns a text documenting the wind direction (from) and strength according the measurement system @{Settings}. -- The text will reflect the wind like this: -- - -- - For Russian and European aircraft using the metric system - Wind direction in degrees () and wind speed in meters per second (mps). - -- - For Americain aircraft we link to the imperial system - Wind direction in degrees () and wind speed in knots per second (kps). + -- - For Russian and European aircraft using the metric system - Wind direction in degrees (°) and wind speed in meters per second (mps). + -- - For Americain aircraft we link to the imperial system - Wind direction in degrees (°) and wind speed in knots per second (kps). -- -- A text containing a pressure will look like this: -- - -- - `Wind: %n at n.d mps` - -- - `Wind: %n at n.d kps` + -- - `Wind: %n ° at n.d mps` + -- - `Wind: %n ° at n.d kps` -- -- @param #COORDINATE self -- @param height (Optional) parameter specifying the height ASL. The minimum height will be always be the land height since the wind is zero below the ground. @@ -964,9 +964,9 @@ do -- COORDINATE if Direction and Strength then if Settings:IsMetric() then - return string.format( " %d at %3.2f mps", Direction, UTILS.MpsToKmph( Strength ) ) + return string.format( " %d ° at %3.2f mps", Direction, UTILS.MpsToKmph( Strength ) ) else - return string.format( " %d at %3.2f kps", Direction, UTILS.MpsToKnots( Strength ) ) + return string.format( " %d ° at %3.2f kps", Direction, UTILS.MpsToKnots( Strength ) ) end else return " no wind" @@ -998,7 +998,7 @@ do -- COORDINATE local AngleDegrees = UTILS.Round( UTILS.ToDegree( AngleRadians ), Precision ) - local s = string.format( '%03d', AngleDegrees ) + local s = string.format( '%03d°', AngleDegrees ) return s end @@ -1085,7 +1085,7 @@ do -- COORDINATE function COORDINATE:GetHeadingText( Settings ) local Heading = self:GetHeading() if Heading then - return string.format( " bearing %3d", Heading ) + return string.format( " bearing %3d°", Heading ) else return " bearing unknown" end diff --git a/Moose Development/Moose/Functional/Detection.lua b/Moose Development/Moose/Functional/Detection.lua index 4942b57bf..eb9b2e982 100644 --- a/Moose Development/Moose/Functional/Detection.lua +++ b/Moose Development/Moose/Functional/Detection.lua @@ -153,12 +153,12 @@ do -- DETECTION_BASE -- Upon a **visual** detection, the higher the unit is during the detecting process, the more likely the detected unit is to be detected properly. -- A detection at a 90% alpha angle is the most optimal, a detection at 10% is less and a detection at 0% is less likely to be correct. -- - -- A probability factor between 0 and 1 can be given, that will model a progressive extrapolated probability if the target would be detected at a 0 angle. + -- A probability factor between 0 and 1 can be given, that will model a progressive extrapolated probability if the target would be detected at a 0° angle. -- -- For example, if a alpha angle probability factor of 0.7 is given, the extrapolated probabilities of the different angles would look like: - -- 0: 70%, 10: 75,21%, 20: 80,26%, 30: 85%, 40: 89,28%, 50: 92,98%, 60: 95,98%, 70: 98,19%, 80: 99,54%, 90: 100% + -- 0°: 70%, 10°: 75,21%, 20°: 80,26%, 30°: 85%, 40°: 89,28%, 50°: 92,98%, 60°: 95,98%, 70°: 98,19%, 80°: 99,54%, 90°: 100% -- - -- Use the method @{Functional.Detection#DETECTION_BASE.SetAlphaAngleProbability}() to set the probability factor if 0. + -- Use the method @{Functional.Detection#DETECTION_BASE.SetAlphaAngleProbability}() to set the probability factor if 0°. -- -- ### Cloudy Zones detection probability -- @@ -1155,10 +1155,10 @@ do -- DETECTION_BASE --- Upon a **visual** detection, the higher the unit is during the detecting process, the more likely the detected unit is to be detected properly. -- A detection at a 90% alpha angle is the most optimal, a detection at 10% is less and a detection at 0% is less likely to be correct. -- - -- A probability factor between 0 and 1 can be given, that will model a progressive extrapolated probability if the target would be detected at a 0 angle. + -- A probability factor between 0 and 1 can be given, that will model a progressive extrapolated probability if the target would be detected at a 0° angle. -- -- For example, if a alpha angle probability factor of 0.7 is given, the extrapolated probabilities of the different angles would look like: - -- 0: 70%, 10: 75,21%, 20: 80,26%, 30: 85%, 40: 89,28%, 50: 92,98%, 60: 95,98%, 70: 98,19%, 80: 99,54%, 90: 100% + -- 0°: 70%, 10°: 75,21%, 20°: 80,26%, 30°: 85%, 40°: 89,28%, 50°: 92,98%, 60°: 95,98%, 70°: 98,19%, 80°: 99,54%, 90°: 100% -- @param #DETECTION_BASE self -- @param AlphaAngleProbability The probability factor. -- @return #DETECTION_BASE self diff --git a/Moose Development/Moose/Functional/Fox.lua b/Moose Development/Moose/Functional/Fox.lua index 56dd5f51f..efcdc99a5 100644 --- a/Moose Development/Moose/Functional/Fox.lua +++ b/Moose Development/Moose/Functional/Fox.lua @@ -791,7 +791,7 @@ function FOX:onafterMissileLaunch(From, Event, To, missile) if (missile.targetPlayer and player.unitname==missile.targetPlayer.unitname) or (distance0, at a distance of ~1 NM. --- At the beginning of the groove (X), he significantly overshoots to the starboard side (LUE<5). +-- The pilot approaches the carrier from the port side, LUE>0°, at a distance of ~1 NM. +-- At the beginning of the groove (X), he significantly overshoots to the starboard side (LUE<5°). -- In the middle (IM), he performs good corrections and smoothly reduces the lineup error. --- Finally, at a distance of ~0.3 NM (IC) he has corrected his lineup with the runway to a reasonable level, |LUE|<0.5. +-- Finally, at a distance of ~0.3 NM (IC) he has corrected his lineup with the runway to a reasonable level, |LUE|<0.5°. -- -- ## Glideslope Error -- @@ -876,7 +876,7 @@ -- The graph displays the glideslope error (GSE) as a function of the distance to the carrier. -- -- In this case the pilot already enters the groove (X) below the optimal glideslope. He is not able to correct his height in the IM part and --- stays significantly too low. In close, he performs a harsh correction to gain altitude and ends up even slightly too high (GSE>0.5). +-- stays significantly too low. In close, he performs a harsh correction to gain altitude and ends up even slightly too high (GSE>0.5°). -- At his point further corrections are necessary. -- -- ## Angle of Attack @@ -2438,7 +2438,7 @@ end -- @param #number duration Default duration of the recovery in minutes. Default 30 min. -- @param #number windondeck Default wind on deck in knots. Default 25 knots. -- @param #boolean uturn U-turn after recovery window closes on=true or off=false/nil. Default off. --- @param #number offset Relative Marshal radial in degrees for Case II/III recoveries. Default 30. +-- @param #number offset Relative Marshal radial in degrees for Case II/III recoveries. Default 30°. -- @return #AIRBOSS self function AIRBOSS:SetMenuRecovery(duration, windondeck, uturn, offset) @@ -3878,7 +3878,7 @@ function AIRBOSS:_CheckRecoveryTimes() -- Check if time is less than 5 minutes. if nextwindow.WIND and nextwindow.START-time 5 different from the current heading. + -- Check that wind is blowing from a direction > 5° different from the current heading. local hdg=self:GetHeading() local wind=self:GetHeadingIntoWind() local delta=self:_GetDeltaHeading(hdg, wind) @@ -3896,7 +3896,7 @@ function AIRBOSS:_CheckRecoveryTimes() end --Debug info - self:T(self.lid..string.format("Heading=%03d, Wind=%03d %.1f kts, Delta=%03d ==> U-turn=%s", hdg, wind,UTILS.MpsToKnots(vwind), delta, tostring(uturn))) + self:T(self.lid..string.format("Heading=%03d°, Wind=%03d° %.1f kts, Delta=%03d° ==> U-turn=%s", hdg, wind,UTILS.MpsToKnots(vwind), delta, tostring(uturn))) -- Time into the wind 1 day or if longer recovery time + the 5 min early. local t=math.max(nextwindow.STOP-nextwindow.START+self.dTturn, 60*60*24) @@ -6933,7 +6933,7 @@ function AIRBOSS:_AddMarshalGroup(flight, stack) -- For case 1 we want the BRC but above routine return FB. radial=self:GetBRC() end - local text=string.format("Select TACAN %03d, channel %d%s (%s)", radial, self.TACANchannel,self.TACANmode, self.TACANmorse) + local text=string.format("Select TACAN %03d°, channel %d%s (%s)", radial, self.TACANchannel,self.TACANmode, self.TACANmorse) self:MessageToPlayer(flight, text, nil, "") end @@ -9346,7 +9346,7 @@ function AIRBOSS:_Initial(playerData) -- Hook down for students. if playerData.difficulty==AIRBOSS.Difficulty.EASY and playerData.actype~=AIRBOSS.AircraftCarrier.AV8B then if playerData.actype==AIRBOSS.AircraftCarrier.F14A or playerData.actype==AIRBOSS.AircraftCarrier.F14B then - hint=hint.." - Hook down, SAS on, Wing Sweep 68!" + hint=hint.." - Hook down, SAS on, Wing Sweep 68°!" else hint=hint.." - Hook down!" end @@ -11331,15 +11331,15 @@ function AIRBOSS:_AttitudeMonitor(playerData) -- Output local text=string.format("Pattern step: %s", step) - text=text..string.format("\nAoA=%.1f = %.1f Units | |V|=%.1f knots", aoa, self:_AoADeg2Units(playerData, aoa), UTILS.MpsToKnots(vabs)) + text=text..string.format("\nAoA=%.1f° = %.1f Units | |V|=%.1f knots", aoa, self:_AoADeg2Units(playerData, aoa), UTILS.MpsToKnots(vabs)) if self.Debug then -- Velocity vector. text=text..string.format("\nVx=%.1f Vy=%.1f Vz=%.1f m/s", velo.x, velo.y, velo.z) --Wind vector. text=text..string.format("\nWind Vx=%.1f Vy=%.1f Vz=%.1f m/s", wind.x, wind.y, wind.z) end - text=text..string.format("\nPitch=%.1f | Roll=%.1f | Yaw=%.1f", pitch, roll, yaw) - text=text..string.format("\nClimb Angle=%.1f | Rate=%d ft/min", unit:GetClimbAngle(), velo.y*196.85) + text=text..string.format("\nPitch=%.1f° | Roll=%.1f° | Yaw=%.1f°", pitch, roll, yaw) + text=text..string.format("\nClimb Angle=%.1f° | Rate=%d ft/min", unit:GetClimbAngle(), velo.y*196.85) local dist=self:_GetOptLandingCoordinate():Get3DDistance(playerData.unit) -- Get player velocity in km/h. local vplayer=playerData.unit:GetVelocityKMH() @@ -11360,14 +11360,14 @@ function AIRBOSS:_AttitudeMonitor(playerData) playerData.step==AIRBOSS.PatternStep.GROOVE_IW then local lue=self:_Lineup(playerData.unit, true) local gle=self:_Glideslope(playerData.unit) - text=text..string.format("\nGamma=%.1f | Rho=%.1f", relhead, phi) - text=text..string.format("\nLineUp=%.2f | GlideSlope=%.2f | AoA=%.1f Units", lue, gle, self:_AoADeg2Units(playerData, aoa)) + text=text..string.format("\nGamma=%.1f° | Rho=%.1f°", relhead, phi) + text=text..string.format("\nLineUp=%.2f° | GlideSlope=%.2f° | AoA=%.1f Units", lue, gle, self:_AoADeg2Units(playerData, aoa)) local grade, points, analysis=self:_LSOgrade(playerData) text=text..string.format("\nTgroove=%.1f sec", self:_GetTimeInGroove(playerData)) text=text..string.format("\nGrade: %s %.1f PT - %s", grade, points, analysis) else text=text..string.format("\nR=%.2f NM | X=%d Z=%d m", UTILS.MetersToNM(rho), dx, dz) - text=text..string.format("\nGamma=%.1f | Rho=%.1f", relhead, phi) + text=text..string.format("\nGamma=%.1f° | Rho=%.1f°", relhead, phi) end MESSAGE:New(text, 1, nil , true):ToClient(playerData.client) @@ -12695,7 +12695,7 @@ function AIRBOSS:_PlayerHint(playerData, delay, soundoff) if self.holdingoffset<0 then turn="left" end - hint=hint..string.format("\nTurn %s and select TACAN %03d.", turn, radial) + hint=hint..string.format("\nTurn %s and select TACAN %03d°.", turn, radial) end end @@ -12704,7 +12704,7 @@ function AIRBOSS:_PlayerHint(playerData, delay, soundoff) if playerData.step==AIRBOSS.PatternStep.DIRTYUP then if playerData.difficulty==AIRBOSS.Difficulty.EASY then if playerData.actype==AIRBOSS.AircraftCarrier.AV8B then - hint=hint.."\nFAF! Checks completed. Nozzles 50." + hint=hint.."\nFAF! Checks completed. Nozzles 50°." else --TODO: Tomcat? hint=hint.."\nDirty up! Hook, gear and flaps down." @@ -12773,14 +12773,14 @@ function AIRBOSS:_StepHint(playerData, step) -- Late break. if step==AIRBOSS.PatternStep.LATEBREAK then if playerData.actype==AIRBOSS.AircraftCarrier.F14A or playerData.actype==AIRBOSS.AircraftCarrier.F14B then - hint=hint.."\nWing Sweep 20, Gear DOWN < 280 KIAS." + hint=hint.."\nWing Sweep 20°, Gear DOWN < 280 KIAS." end end -- Abeam. if step==AIRBOSS.PatternStep.ABEAM then if playerData.actype==AIRBOSS.AircraftCarrier.AV8B then - hint=hint.."\nNozzles 50-60. Antiskid OFF. Lights OFF." + hint=hint.."\nNozzles 50°-60°. Antiskid OFF. Lights OFF." elseif playerData.actype==AIRBOSS.AircraftCarrier.F14A or playerData.actype==AIRBOSS.AircraftCarrier.F14B then hint=hint.."\nSlats/Flaps EXTENDED < 225 KIAS. DLC SELECTED. Auto Throttle IF DESIRED." else @@ -13215,7 +13215,7 @@ function AIRBOSS:_Debrief(playerData) end -- Re-enter message. - local text=string.format("fly heading %03d for %d NM to re-enter the pattern.", heading, UTILS.MetersToNM(distance)) + local text=string.format("fly heading %03d° for %d NM to re-enter the pattern.", heading, UTILS.MetersToNM(distance)) self:MessageToPlayer(playerData, text, "LSO", nil, nil, false, 5) else @@ -13411,9 +13411,9 @@ function AIRBOSS:_CheckCollisionCoord(coordto, coordfrom) local text="" if clear then - text=string.format("Path into direction %03d is clear for the next %.1f NM.", direction, UTILS.MetersToNM(d)) + text=string.format("Path into direction %03d° is clear for the next %.1f NM.", direction, UTILS.MetersToNM(d)) else - text=string.format("Detected obstacle at distance %.1f NM into direction %03d.", UTILS.MetersToNM(d), direction) + text=string.format("Detected obstacle at distance %.1f NM into direction %03d°.", UTILS.MetersToNM(d), direction) end self:T2(self.lid..text) @@ -13473,7 +13473,7 @@ function AIRBOSS:_Pathfinder() local collision=self:_CheckFreePathToNextWP(fromcoord) -- Debug info. - self:T2(self.lid..string.format("Pathfinder d=%.1f m, direction=%03d, collision=%s", distance, direction, tostring(collision))) + self:T2(self.lid..string.format("Pathfinder d=%.1f m, direction=%03d°, collision=%s", distance, direction, tostring(collision))) -- If path is clear, we start a little detour. if not collision then @@ -13907,7 +13907,7 @@ function AIRBOSS:_CheckPatternUpdate() -- Update if carrier moves by more than 2.5 NM. local Dupdate=UTILS.NMToMeters(2.5) - -- Update if carrier turned by more than 5. + -- Update if carrier turned by more than 5°. local Hupdate=5 ----------------------- @@ -13941,7 +13941,7 @@ function AIRBOSS:_CheckPatternUpdate() -- Check if orientation changed. local Hchange=false if math.abs(deltaHeading)>=Hupdate then - self:T(self.lid..string.format("Carrier heading changed by %d.", deltaHeading)) + self:T(self.lid..string.format("Carrier heading changed by %d°.", deltaHeading)) Hchange=true end @@ -15642,7 +15642,7 @@ end function AIRBOSS:_MarshalCallNewFinalBearing(FB) -- Subtitle. - local text=string.format("new final bearing %03d.", FB) + local text=string.format("new final bearing %03d°.", FB) -- Debug message. self:I(self.lid..text) @@ -15665,7 +15665,7 @@ end function AIRBOSS:_MarshalCallCarrierTurnTo(hdg) -- Subtitle. - local text=string.format("carrier is now starting turn to heading %03d.", hdg) + local text=string.format("carrier is now starting turn to heading %03d°.", hdg) -- Debug message. self:I(self.lid..text) @@ -15718,11 +15718,11 @@ function AIRBOSS:_MarshalCallRecoveryStart(case) -- Debug output. local text=string.format("Starting aircraft recovery Case %d ops.", case) if case==1 then - text=text..string.format(" BRC %03d.", self:GetBRC()) + text=text..string.format(" BRC %03d°.", self:GetBRC()) elseif case==2 then - text=text..string.format(" Marshal radial %03d. BRC %03d.", radial, self:GetBRC()) + text=text..string.format(" Marshal radial %03d°. BRC %03d°.", radial, self:GetBRC()) elseif case==3 then - text=text..string.format(" Marshal radial %03d. Final heading %03d.", radial, self:GetFinalBearing(false)) + text=text..string.format(" Marshal radial %03d°. Final heading %03d°.", radial, self:GetFinalBearing(false)) end self:T(self.lid..text) @@ -15767,7 +15767,7 @@ function AIRBOSS:_MarshalCallArrived(modex, case, brc, altitude, charlie, qfe) local CT=UTILS.Split(clock[1], ":") -- Subtitle text. - local text=string.format("Case %d, expected BRC %03d, hold at angels %d. Expected Charlie Time %s. Altimeter %.2f. Report see me.", case, brc, angels, charlie, qfe) + local text=string.format("Case %d, expected BRC %03d°, hold at angels %d. Expected Charlie Time %s. Altimeter %.2f. Report see me.", case, brc, angels, charlie, qfe) -- Debug message. self:I(self.lid..text) @@ -15944,11 +15944,11 @@ function AIRBOSS:_AddF10Commands(_unitName) missionCommands.addCommandForGroup(gid, "60 min", _menusetrtime, self._SkipperRecoveryTime, self, _unitName, 60) missionCommands.addCommandForGroup(gid, "90 min", _menusetrtime, self._SkipperRecoveryTime, self, _unitName, 90) local _menusetrtime=missionCommands.addSubMenuForGroup(gid, "Set Marshal Radial", _skipperPath) - missionCommands.addCommandForGroup(gid, "+30", _menusetrtime, self._SkipperRecoveryOffset, self, _unitName, 30) - missionCommands.addCommandForGroup(gid, "+15", _menusetrtime, self._SkipperRecoveryOffset, self, _unitName, 15) - missionCommands.addCommandForGroup(gid, "0", _menusetrtime, self._SkipperRecoveryOffset, self, _unitName, 0) - missionCommands.addCommandForGroup(gid, "-15", _menusetrtime, self._SkipperRecoveryOffset, self, _unitName, -15) - missionCommands.addCommandForGroup(gid, "-30", _menusetrtime, self._SkipperRecoveryOffset, self, _unitName, -30) + missionCommands.addCommandForGroup(gid, "+30°", _menusetrtime, self._SkipperRecoveryOffset, self, _unitName, 30) + missionCommands.addCommandForGroup(gid, "+15°", _menusetrtime, self._SkipperRecoveryOffset, self, _unitName, 15) + missionCommands.addCommandForGroup(gid, "0°", _menusetrtime, self._SkipperRecoveryOffset, self, _unitName, 0) + missionCommands.addCommandForGroup(gid, "-15°", _menusetrtime, self._SkipperRecoveryOffset, self, _unitName, -15) + missionCommands.addCommandForGroup(gid, "-30°", _menusetrtime, self._SkipperRecoveryOffset, self, _unitName, -30) missionCommands.addCommandForGroup(gid, "U-turn On/Off", _skipperPath, self._SkipperRecoveryUturn, self, _unitName) missionCommands.addCommandForGroup(gid, "Start CASE I", _skipperPath, self._SkipperStartRecovery, self, _unitName, 1) missionCommands.addCommandForGroup(gid, "Start CASE II", _skipperPath, self._SkipperStartRecovery, self, _unitName, 2) @@ -16005,7 +16005,7 @@ function AIRBOSS:_SkipperStartRecovery(_unitName, case) -- Inform player. local text=string.format("affirm, Case %d recovery will start in 5 min for %d min. Wind on deck %d knots. U-turn=%s.", case, self.skipperTime, self.skipperSpeed, tostring(self.skipperUturn)) if case>1 then - text=text..string.format(" Marshal radial %d.", self.skipperOffset) + text=text..string.format(" Marshal radial %d°.", self.skipperOffset) end if self:IsRecovering() then text="negative, carrier is already recovering." @@ -16071,7 +16071,7 @@ function AIRBOSS:_SkipperRecoveryOffset(_unitName, offset) if playerData then -- Inform player. - local text=string.format("roger, relative CASE II/III Marshal radial set to %d.", offset) + local text=string.format("roger, relative CASE II/III Marshal radial set to %d°.", offset) self:MessageToPlayer(playerData, text, "AIRBOSS") self.skipperOffset=offset @@ -16534,7 +16534,7 @@ function AIRBOSS:_RequestCommence(_unitName) -- For case 1 we want the BRC but above routine return FB. radial=self:GetBRC() end - text=text..string.format("\nSelect TACAN %03d, Channel %d%s (%s).\n", radial, self.TACANchannel,self.TACANmode, self.TACANmorse) + text=text..string.format("\nSelect TACAN %03d°, Channel %d%s (%s).\n", radial, self.TACANchannel,self.TACANmode, self.TACANmorse) end -- TODO: Inform section members. @@ -17146,7 +17146,7 @@ function AIRBOSS:_DisplayCarrierInfo(_unitname) -- Only include current and future recovery windows. if Tabs1 then -- Get inverse magnetic radial potential offset. local radial=self:GetRadial(playerData.case, true, true, true) - stacktext=stacktext..string.format("Select TACAN %03d, %d DME\n", radial, angels+15) + stacktext=stacktext..string.format("Select TACAN %03d°, %d DME\n", radial, angels+15) end end @@ -17545,7 +17545,7 @@ function AIRBOSS:_DisplayPlayerStatus(_unitName) local brc=self:GetBRC() -- Help player to find its way to the initial zone. - text=text..string.format("\nTo Initial: Fly heading %03d for %.1f NM and turn to BRC %03d", flyhdg, flydist, brc) + text=text..string.format("\nTo Initial: Fly heading %03d° for %.1f NM and turn to BRC %03d°", flyhdg, flydist, brc) elseif playerData.step==AIRBOSS.PatternStep.PLATFORM then @@ -17560,7 +17560,7 @@ function AIRBOSS:_DisplayPlayerStatus(_unitName) local hdg=self:GetRadial(playerData.case, true, true, true) -- Help player to find its way to the initial zone. - text=text..string.format("\nTo Platform: Fly heading %03d for %.1f NM and turn to %03d", flyhdg, flydist, hdg) + text=text..string.format("\nTo Platform: Fly heading %03d° for %.1f NM and turn to %03d°", flyhdg, flydist, hdg) end diff --git a/Moose Development/Moose/Sound/RadioSpeech.lua b/Moose Development/Moose/Sound/RadioSpeech.lua index f77c446a2..5d748cae8 100644 --- a/Moose Development/Moose/Sound/RadioSpeech.lua +++ b/Moose Development/Moose/Sound/RadioSpeech.lua @@ -162,33 +162,32 @@ RADIOSPEECH.Vocabulary.RU = { ["8000"] = { "8000", 0.92 }, ["9000"] = { "9000", 0.87 }, - ["Ñ�тепени"] = { "degrees", 0.5 }, - ["километров"] = { "kilometers", 0.65 }, + ["градусы"] = { "degrees", 0.5 }, + ["километры"] = { "kilometers", 0.65 }, ["km"] = { "kilometers", 0.65 }, - ["миль"] = { "miles", 0.45 }, + ["мили"] = { "miles", 0.45 }, ["mi"] = { "miles", 0.45 }, - ["метры"] = { "meters", 0.41 }, + ["метров"] = { "meters", 0.41 }, ["m"] = { "meters", 0.41 }, - ["ноги"] = { "feet", 0.37 }, + ["ноги"] = { "feet", 0.37 }, ["br"] = { "br", 1.1 }, ["bra"] = { "bra", 0.3 }, + ["возвращение на базу"] = { "returning_to_base", 1.40 }, + ["на пути к наземной цели"] = { "on_route_to_ground_target", 1.45 }, + ["перехват боги"] = { "intercepting_bogeys", 1.22 }, + ["поражение наземной цели"] = { "engaging_ground_target", 1.53 }, + ["привлечение болотных птиц"] = { "engaging_bogeys", 1.68 }, + ["колёса вверх..."] = { "wheels_up", 0.92 }, + ["посадка на базу"] = { "landing at base", 1.04 }, + ["патрулирование"] = { "patrolling", 0.96 }, - ["возвращаÑ�Ñ�ÑŒ на базу"] = { "returning_to_base", 1.40 }, - ["на пути к наземной цели"] = { "on_route_to_ground_target", 1.45 }, - ["перехват Ñ�амолетов"] = { "intercepting_bogeys", 1.22 }, - ["поражение наземной цели"] = { "engaging_ground_target", 1.53 }, - ["захватывающие Ñ�амолеты"] = { "engaging_bogeys", 1.68 }, - ["колеÑ�а вверх"] = { "wheels_up", 0.92 }, - ["поÑ�адка на базу"] = { "landing at base", 1.04 }, - ["патрулирующий"] = { "patrolling", 0.96 }, - - ["за"] = { "for", 0.27 }, - ["и"] = { "and", 0.17 }, - ["в"] = { "at", 0.19 }, - ["dot"] = { "dot", 0.51 }, - ["defender"] = { "defender", 0.45 }, + ["для"] = { "for", 0.27 }, + ["и"] = { "and", 0.17 }, + ["на сайте"] = { "at", 0.19 }, + ["точка"] = { "dot", 0.51 }, + ["защитник"] = { "defender", 0.45 }, } --- Create a new RADIOSPEECH object for a given radio frequency/modulation. diff --git a/Moose Development/Moose/Tasking/DetectionManager.lua b/Moose Development/Moose/Tasking/DetectionManager.lua index 2e0a3e148..3e16fad29 100644 --- a/Moose Development/Moose/Tasking/DetectionManager.lua +++ b/Moose Development/Moose/Tasking/DetectionManager.lua @@ -286,7 +286,7 @@ do -- DETECTION MANAGER self.CC:MessageToCoalition( Message ) end - Message = Message:gsub( "", " degrees " ) + Message = Message:gsub( "°", " degrees " ) Message = Message:gsub( "(%d)%.(%d)", "%1 dot %2" ) -- Here we handle the transmission of the voice over. diff --git a/Moose Development/Moose/Tasking/Task_Cargo_Dispatcher.lua b/Moose Development/Moose/Tasking/Task_Cargo_Dispatcher.lua index 50fd4b86f..6833f197c 100644 --- a/Moose Development/Moose/Tasking/Task_Cargo_Dispatcher.lua +++ b/Moose Development/Moose/Tasking/Task_Cargo_Dispatcher.lua @@ -574,7 +574,7 @@ do -- TASK_CARGO_DISPATCHER -- local Coordinate = PlaneUnit:GetPointVec2() -- TaskA2ADispatcher:AddCSARTask( "CSAR Task", Coordinate ) -- - -- -- Add a CSAR task to rescue a downed pilot from within a coordinate of country RUSSIA, which is pointing to the west (270). + -- -- Add a CSAR task to rescue a downed pilot from within a coordinate of country RUSSIA, which is pointing to the west (270°). -- local Coordinate = PlaneUnit:GetPointVec2() -- TaskA2ADispatcher:AddCSARTask( "CSAR Task", Coordinate, 270, Country.RUSSIA ) -- diff --git a/Moose Development/Moose/Utilities/Utils.lua b/Moose Development/Moose/Utilities/Utils.lua index 22a5d35d4..84abdc68f 100644 --- a/Moose Development/Moose/Utilities/Utils.lua +++ b/Moose Development/Moose/Utilities/Utils.lua @@ -491,9 +491,9 @@ UTILS.tostringLL = function( lat, lon, acc, DMS) secFrmtStr = '%0' .. width .. '.' .. acc .. 'f' end - -- 024� 23' 12"N or 024� 23' 12.03"N - return string.format('%03d', latDeg)..string.format('%02d', latMin)..'\''..string.format(secFrmtStr, latSec)..'"'..latHemi..' ' - .. string.format('%03d', lonDeg)..string.format('%02d', lonMin)..'\''..string.format(secFrmtStr, lonSec)..'"'..lonHemi + -- 024° 23' 12"N or 024° 23' 12.03"N + return string.format('%03d°', latDeg)..string.format('%02d', latMin)..'\''..string.format(secFrmtStr, latSec)..'"'..latHemi..' ' + .. string.format('%03d°', lonDeg)..string.format('%02d', lonMin)..'\''..string.format(secFrmtStr, lonSec)..'"'..lonHemi else -- degrees, decimal minutes. latMin = UTILS.Round(latMin, acc) @@ -518,8 +518,8 @@ UTILS.tostringLL = function( lat, lon, acc, DMS) end -- 024 23'N or 024 23.123'N - return string.format('%03d', latDeg) .. ' ' .. string.format(minFrmtStr, latMin) .. '\'' .. latHemi .. ' ' - .. string.format('%03d', lonDeg) .. ' ' .. string.format(minFrmtStr, lonMin) .. '\'' .. lonHemi + return string.format('%03d°', latDeg) .. ' ' .. string.format(minFrmtStr, latMin) .. '\'' .. latHemi .. ' ' + .. string.format('%03d°', lonDeg) .. ' ' .. string.format(minFrmtStr, lonMin) .. '\'' .. lonHemi end end diff --git a/Moose Development/Moose/Wrapper/Airbase.lua b/Moose Development/Moose/Wrapper/Airbase.lua index 99afa080c..223d459b6 100644 --- a/Moose Development/Moose/Wrapper/Airbase.lua +++ b/Moose Development/Moose/Wrapper/Airbase.lua @@ -509,7 +509,7 @@ AIRBASE.TerminalType = { --- Runway data. -- @type AIRBASE.Runway -- @field #number heading Heading of the runway in degrees. --- @field #string idx Runway ID: heading 070 ==> idx="07". +-- @field #string idx Runway ID: heading 070° ==> idx="07". -- @field #number length Length of runway in meters. -- @field Core.Point#COORDINATE position Position of runway start. -- @field Core.Point#COORDINATE endpoint End point of runway. @@ -1516,7 +1516,7 @@ function AIRBASE:GetRunwayData(magvar, mark) -- Heading of runway. local hdg=c1:HeadingTo(c2) - -- Runway ID: heading=070 ==> idx="07" + -- Runway ID: heading=070° ==> idx="07" local idx=string.format("%02d", UTILS.Round((hdg-magvar)/10, 0)) -- Runway table. @@ -1594,7 +1594,7 @@ function AIRBASE:GetActiveRunway(magvar) local dot=UTILS.VecDot(Vwind, Vrunway) -- Debug. - --env.info(string.format("runway=%03d dot=%.3f", runway.heading, dot)) + --env.info(string.format("runway=%03d° dot=%.3f", runway.heading, dot)) -- New min? if dotmin==nil or dot