-- ***************************************************************************** -- ** ATIS ** -- ********************************************************* -- region ATISFunctions --- Enable ATIS for a specific airbase. ---@param airbase string The name of the airbase for which to enable ATIS for. (MOOSE Enum) function EnableAtis(airbase) for _, atis in ipairs(ATISArray) do if atis.customconfig.airfield == airbase then -- Enable ATIS atis:Start() Jtff_log.info( string.format( "ATIS at airfield %s enabled (usually by bot).", atis.customconfig.airfield ), "ATIS" ) for _k, _coalition in pairs(coalition.side) do atis.menu[_coalition]:Remove() atis.menu[_coalition] = MENU_COALITION_COMMAND:New( _coalition, "Disable Auto Atis at " .. atis.customconfig.airfield, MenuCoalitionAtis[UTILS.GetCoalitionName(_coalition)], DisableAtis, atis.customconfig.airfield ) end return true end end end --- Disable ATIS for a specific airbase. ---@param airbase string The name of the airbase for which to disable ATIS for. (MOOSE Enum) function DisableAtis(airbase) for _, atis in ipairs(ATISArray) do if atis.customconfig.airfield == airbase then -- Disable ATIS atis:Stop() Jtff_log.info( string.format( "ATIS at airfield %s disabled (usually by bot).", atis.customconfig.airfield ), "ATIS" ) for _k, _coalition in pairs(coalition.side) do atis.menu[_coalition]:Remove() atis.menu[_coalition] = MENU_COALITION_COMMAND:New( _coalition, "Enable Auto Atis at " .. atis.customconfig.airfield, MenuCoalitionAtis[UTILS.GetCoalitionName(_coalition)], EnableAtis, atis.customconfig.airfield ) end return true end end end -- endregion ATISFunctions -- region ATISConfigFunctions -- @type ATISConfig -- @field #boolean enable Enable Atis creation. -- @field #string airfield Airfield name. -- @field #radioConfig radio configuration object. -- @field #string relayunit UNIT Name to emit radio On. -- @field #table active Active Runway config Object. -- @field #tacanConfig tacan TACAN configuration.. -- @field #table ils ILS configuration. -- @field #boolean useSRS Use SRS for the ATIS. --- Parse ATIS config Object. -- @param #JsonObject config Config object to parse -- @return #ATISConfig atisConfigJson Parsed ATISConfig object function ParseAtisConfigJson(config) local json = require('Scripts/json') local parser_name = "ATIS" -- ************************************************************************** -- enable -- ************************************************************************** local atisConfigJson = { enable = config.enable or false, } if type(config) ~= 'table' then Jtff_log.error( string.format( "no proper atisconfig defined, skipping Atis configuration" ), parser_name ) atisConfigJson.enable = false return atisConfigJson end atisConfigJson = config Jtff_log.debug( string.format( "parsed ATIS config for %s ATIS, resulting config :\n%s", config.airfield or "unknown Airbase", json:encode( atisConfigJson, { indent = true } ) ), parser_name ) return atisConfigJson end -- endregion ATISConfigFunctions ATISArray = {} MenuCoalitionAtis = {} for _k, _coalition in pairs(coalition.side) do MenuCoalitionAtis[UTILS.GetCoalitionName(_coalition)] = MENU_COALITION:New(_coalition, "Atis", MenuCoalition[UTILS.GetCoalitionName(_coalition)]) end local compteur = #ATISArray for _index, _currentAtisConfigObject in ipairs(AtisConfig or {}) do local atisconfig = ParseAtisConfigJson(_currentAtisConfigObject) if atisconfig.enable == true then compteur = compteur + 1 Jtff_log.info( string.format( "Creation ATIS at airfield %s", atisconfig.airfield ), "ATIS" ) local objAtis = ATIS:New(atisconfig.airfield, atisconfig.radio.freq, atisconfig.radio.modulation) :SetImperialUnits() :SetSoundfilesPath(SoundFilesPrefix .. 'ATIS/ATIS Soundfiles/') :SetSubtitleDuration(0) :SetMapMarks(true) if (atisconfig.relayunit) then objAtis:SetRadioRelayUnitName(atisconfig.relayunit) else if (atisconfig.radio.power) then objAtis:SetRadioPower(atisconfig.radio.power) end end if (atisconfig.radio.tower) then objAtis:SetTowerFrequencies(atisconfig.radio.tower); end if (atisconfig.active.side) then if (atisconfig.active.number) then objAtis:SetActiveRunway(atisconfig.active.number..atisconfig.active.side) else objAtis:SetActiveRunway(atisconfig.active.side) end else if (atisconfig.active.number) then objAtis:SetActiveRunway(atisconfig.active.number) end end if (atisconfig.tacan) then objAtis:SetTACAN(atisconfig.tacan.channel) end if (atisconfig.ils) then if (atisconfig.ils.runway) then objAtis:AddILS(atisconfig.ils.freq, atisconfig.ils.runway) else objAtis:AddILS(atisconfig.ils.freq) end end if (atisconfig.useSRS) then objAtis:SetSRS(SRSConfig.path, "male", "en-US", nil, SRSConfig.port) end objAtis.customconfig = atisconfig objAtis.menu = {} for _k, _coalition in pairs(coalition.side) do objAtis.menu[_coalition] = MENU_COALITION_COMMAND:New( _coalition, string.format( "Disable Auto Atis at %s", atisconfig.airfield ), MenuCoalitionAtis[UTILS.GetCoalitionName(_coalition)], DisableAtis, atisconfig.airfield ) end ATISArray[compteur] = objAtis ATISArray[compteur]:Start() end end if compteur == 0 then for _k, _coalition in pairs(coalition.side) do MenuCoalitionAtis[UTILS.GetCoalitionName(_coalition)]:Remove() end MenuCoalitionAtis = {} end