diff --git a/game/missiongenerator/beacons.py b/game/missiongenerator/beacons.py index 475bd2c5..3bb9fdc3 100644 --- a/game/missiongenerator/beacons.py +++ b/game/missiongenerator/beacons.py @@ -1,12 +1,13 @@ -from dataclasses import dataclass -from enum import auto, IntEnum import json +from collections.abc import Iterator +from dataclasses import dataclass +from enum import IntEnum, auto from pathlib import Path -from typing import Iterable, Optional +from typing import Optional from game.radio.radios import RadioFrequency from game.radio.tacan import TacanBand, TacanChannel - +from game.theater import ConflictTheater BEACONS_RESOURCE_PATH = Path("resources/dcs/beacons") @@ -65,10 +66,32 @@ class Beacon: return TacanChannel(self.channel, TacanBand.X) -def load_beacons_for_terrain(name: str) -> Iterable[Beacon]: - beacons_file = BEACONS_RESOURCE_PATH / f"{name.lower()}.json" - if not beacons_file.exists(): - raise RuntimeError(f"Beacon file {beacons_file.resolve()} is missing") +class Beacons: + _by_terrain: dict[str, dict[str, Beacon]] = {} - for beacon in json.loads(beacons_file.read_text()): - yield Beacon(**beacon) + @classmethod + def _load_for_theater_if_needed(cls, theater: ConflictTheater) -> None: + if theater.terrain.name in cls._by_terrain: + return + + beacons_file = BEACONS_RESOURCE_PATH / f"{theater.terrain.name.lower()}.json" + if not beacons_file.exists(): + raise RuntimeError(f"Beacon file {beacons_file.resolve()} is missing") + + beacons = {} + for bid, beacon in json.loads(beacons_file.read_text()).items(): + beacons[bid] = Beacon(**beacon) + cls._by_terrain[theater.terrain.name] = beacons + + @classmethod + def _dict_for_theater(cls, theater: ConflictTheater) -> dict[str, Beacon]: + cls._load_for_theater_if_needed(theater) + return cls._by_terrain[theater.terrain.name] + + @classmethod + def iter_theater(cls, theater: ConflictTheater) -> Iterator[Beacon]: + yield from cls._dict_for_theater(theater).values() + + @classmethod + def with_id(cls, beacon_id: str, theater: ConflictTheater) -> Beacon: + return cls._dict_for_theater(theater)[beacon_id] diff --git a/game/missiongenerator/missiongenerator.py b/game/missiongenerator/missiongenerator.py index ee01b71c..0d05f0c4 100644 --- a/game/missiongenerator/missiongenerator.py +++ b/game/missiongenerator/missiongenerator.py @@ -23,7 +23,7 @@ from game.theater.bullseye import Bullseye from game.unitmap import UnitMap from .airconflictdescription import AirConflictDescription from .airsupportgenerator import AirSupportGenerator -from .beacons import load_beacons_for_terrain +from .beacons import Beacons from .briefinggenerator import BriefingGenerator, MissionInfoGenerator from .cargoshipgenerator import CargoShipGenerator from .convoygenerator import ConvoyGenerator @@ -169,8 +169,7 @@ class MissionGenerator: Dedup beacon/radio frequencies, since some maps have some frequencies used multiple times. """ - beacons = load_beacons_for_terrain(self.game.theater.terrain.name) - for beacon in beacons: + for beacon in Beacons.iter_theater(self.game.theater): unique_map_frequencies.add(beacon.frequency) if beacon.is_tacan: if beacon.channel is None: diff --git a/resources/dcs/beacons/caucasus.json b/resources/dcs/beacons/caucasus.json index 06eae1d2..093659e4 100644 --- a/resources/dcs/beacons/caucasus.json +++ b/resources/dcs/beacons/caucasus.json @@ -1,1150 +1,1150 @@ -[ - { +{ + "airfield12_0": { "name": "Anapa-Vityazevo", "callsign": "AP", "beacon_type": 12, "hertz": 443000, "channel": null }, - { + "airfield12_1": { "name": "Anapa-Vityazevo", "callsign": "P", "beacon_type": 13, "hertz": 215000, "channel": null }, - { + "airfield12_2": { "name": "Anapa-Vityazevo", "callsign": "AN", "beacon_type": 12, "hertz": 443000, "channel": null }, - { + "airfield12_3": { "name": "Anapa-Vityazevo", "callsign": "N", "beacon_type": 13, "hertz": 215000, "channel": null }, - { + "airfield22_0": { "name": "Batumi", "callsign": "ILU", "beacon_type": 14, "hertz": 110300000, "channel": null }, - { + "airfield22_1": { "name": "Batumi", "callsign": "ILU", "beacon_type": 15, "hertz": 110300000, "channel": null }, - { + "airfield22_2": { "name": "Batumi", "callsign": "BTM", "beacon_type": 5, "hertz": 977000000, "channel": 16 }, - { + "airfield22_3": { "name": "Batumi", "callsign": "LU", "beacon_type": 10, "hertz": 430000, "channel": null }, - { + "airfield32_0": { "name": "Beslan", "callsign": "CX", "beacon_type": 12, "hertz": 1050000, "channel": null }, - { + "airfield32_1": { "name": "Beslan", "callsign": "C", "beacon_type": 13, "hertz": 250000, "channel": null }, - { + "airfield32_2": { "name": "Beslan", "callsign": "ICH", "beacon_type": 14, "hertz": 110500000, "channel": null }, - { + "airfield32_3": { "name": "Beslan", "callsign": "", "beacon_type": 15, "hertz": 110500000, "channel": null }, - { + "airfield17_0": { "name": "Gelendzhik", "callsign": "GN", "beacon_type": 10, "hertz": 1000000, "channel": null }, - { + "airfield17_1": { "name": "Gelendzhik", "callsign": "GN", "beacon_type": 2, "hertz": 114300000, "channel": 90 }, - { + "airfield21_0": { "name": "Gudauta", "callsign": "XC", "beacon_type": 11, "hertz": 395000, "channel": null }, - { + "airfield24_0": { "name": "Kobuleti", "callsign": "KT", "beacon_type": 12, "hertz": 870000, "channel": null }, - { + "airfield24_1": { "name": "Kobuleti", "callsign": "T", "beacon_type": 13, "hertz": 490000, "channel": null }, - { + "airfield24_2": { "name": "Kobuleti", "callsign": "IKB", "beacon_type": 14, "hertz": 111500000, "channel": null }, - { + "airfield24_3": { "name": "Kobuleti", "callsign": "IKB", "beacon_type": 15, "hertz": 111500000, "channel": null }, - { + "airfield24_4": { "name": "Kobuleti", "callsign": "KBL", "beacon_type": 5, "hertz": 1154000000, "channel": 67 }, - { + "airfield13_0": { "name": "Krasnodar-Center", "callsign": "OC", "beacon_type": 12, "hertz": 625000, "channel": null }, - { + "airfield13_1": { "name": "Krasnodar-Center", "callsign": "O", "beacon_type": 13, "hertz": 303000, "channel": null }, - { + "airfield13_2": { "name": "Krasnodar-Center", "callsign": "MB", "beacon_type": 12, "hertz": 625000, "channel": null }, - { + "airfield13_3": { "name": "Krasnodar-Center", "callsign": "M", "beacon_type": 13, "hertz": 303000, "channel": null }, - { + "airfield13_4": { "name": "Krasnodar-Center", "callsign": "MB", "beacon_type": 16, "hertz": 838000000, "channel": 38 }, - { + "airfield13_5": { "name": "Krasnodar-Center", "callsign": "MB", "beacon_type": 17, "hertz": 838000000, "channel": 38 }, - { + "airfield13_6": { "name": "Krasnodar-Center", "callsign": "MB", "beacon_type": 7, "hertz": 840000000, "channel": 40 }, - { + "airfield19_0": { "name": "Krasnodar-Pashkovsky", "callsign": "KR", "beacon_type": 12, "hertz": 493000, "channel": null }, - { + "airfield19_1": { "name": "Krasnodar-Pashkovsky", "callsign": "K", "beacon_type": 13, "hertz": 240000, "channel": null }, - { + "airfield19_2": { "name": "Krasnodar-Pashkovsky", "callsign": "LD", "beacon_type": 12, "hertz": 493000, "channel": null }, - { + "airfield19_3": { "name": "Krasnodar-Pashkovsky", "callsign": "L", "beacon_type": 13, "hertz": 240000, "channel": null }, - { + "airfield19_4": { "name": "Krasnodar-Pashkovsky", "callsign": "KN", "beacon_type": 2, "hertz": 115800000, "channel": 105 }, - { + "airfield15_0": { "name": "Krymsk", "callsign": "KW", "beacon_type": 12, "hertz": 408000, "channel": null }, - { + "airfield15_1": { "name": "Krymsk", "callsign": "K", "beacon_type": 13, "hertz": 803000, "channel": null }, - { + "airfield15_2": { "name": "Krymsk", "callsign": "OX", "beacon_type": 12, "hertz": 408000, "channel": null }, - { + "airfield15_3": { "name": "Krymsk", "callsign": "O", "beacon_type": 13, "hertz": 803000, "channel": null }, - { + "airfield15_4": { "name": "Krymsk", "callsign": "OX", "beacon_type": 17, "hertz": 826000000, "channel": null }, - { + "airfield15_5": { "name": "Krymsk", "callsign": "KW", "beacon_type": 17, "hertz": 826000000, "channel": null }, - { + "airfield15_6": { "name": "Krymsk", "callsign": "KW", "beacon_type": 16, "hertz": 826000000, "channel": 26 }, - { + "airfield15_7": { "name": "Krymsk", "callsign": "OX", "beacon_type": 16, "hertz": 826000000, "channel": 26 }, - { + "airfield15_8": { "name": "Krymsk", "callsign": "KW", "beacon_type": 7, "hertz": 828000000, "channel": 28 }, - { + "airfield25_0": { "name": "Kutaisi", "callsign": "IKS", "beacon_type": 14, "hertz": 109750000, "channel": null }, - { + "airfield25_1": { "name": "Kutaisi", "callsign": "IKS", "beacon_type": 15, "hertz": 109750000, "channel": null }, - { + "airfield25_2": { "name": "Kutaisi", "callsign": "TI", "beacon_type": 11, "hertz": 477000, "channel": null }, - { + "airfield25_3": { "name": "Kutaisi", "callsign": "KTS", "beacon_type": 5, "hertz": 1005000000, "channel": 44 }, - { + "airfield25_4": { "name": "Kutaisi", "callsign": "KT", "beacon_type": 2, "hertz": 113600000, "channel": 83 }, - { + "airfield29_0": { "name": "Tbilisi-Lochini", "callsign": "BP", "beacon_type": 12, "hertz": 342000, "channel": null }, - { + "airfield29_1": { "name": "Tbilisi-Lochini", "callsign": "B", "beacon_type": 13, "hertz": 923000, "channel": null }, - { + "airfield29_2": { "name": "Tbilisi-Lochini", "callsign": "IVP", "beacon_type": 14, "hertz": 110300000, "channel": null }, - { + "airfield29_3": { "name": "Tbilisi-Lochini", "callsign": "IVP", "beacon_type": 15, "hertz": 110300000, "channel": null }, - { + "airfield29_4": { "name": "Tbilisi-Lochini", "callsign": "NA", "beacon_type": 12, "hertz": 211000, "channel": null }, - { + "airfield29_5": { "name": "Tbilisi-Lochini", "callsign": "N", "beacon_type": 13, "hertz": 435000, "channel": null }, - { + "airfield29_6": { "name": "Tbilisi-Lochini", "callsign": "INA", "beacon_type": 14, "hertz": 108900000, "channel": null }, - { + "airfield29_7": { "name": "Tbilisi-Lochini", "callsign": "INA", "beacon_type": 15, "hertz": 108900000, "channel": null }, - { + "airfield29_8": { "name": "Tbilisi-Lochini", "callsign": "TB", "beacon_type": 2, "hertz": 113700000, "channel": 84 }, - { + "airfield29_9": { "name": "Tbilisi-Lochini", "callsign": "GTB", "beacon_type": 5, "hertz": 986000000, "channel": 25 }, - { + "airfield16_0": { "name": "Maykop-Khanskaya", "callsign": "RK", "beacon_type": 12, "hertz": 289000, "channel": null }, - { + "airfield16_1": { "name": "Maykop-Khanskaya", "callsign": "R", "beacon_type": 13, "hertz": 591000, "channel": null }, - { + "airfield16_2": { "name": "Maykop-Khanskaya", "callsign": "DG", "beacon_type": 12, "hertz": 289000, "channel": null }, - { + "airfield16_3": { "name": "Maykop-Khanskaya", "callsign": "D", "beacon_type": 13, "hertz": 591000, "channel": null }, - { + "airfield16_4": { "name": "Maykop-Khanskaya", "callsign": "DG", "beacon_type": 16, "hertz": 836000000, "channel": 36 }, - { + "airfield16_5": { "name": "Maykop-Khanskaya", "callsign": "DG", "beacon_type": 17, "hertz": 836000000, "channel": 36 }, - { + "airfield16_6": { "name": "Maykop-Khanskaya", "callsign": "DG", "beacon_type": 7, "hertz": 834000000, "channel": 34 }, - { + "airfield26_0": { "name": "MineralnyeVody", "callsign": "NR", "beacon_type": 12, "hertz": 583000, "channel": null }, - { + "airfield26_1": { "name": "MineralnyeVody", "callsign": "N", "beacon_type": 13, "hertz": 283000, "channel": null }, - { + "airfield26_2": { "name": "MineralnyeVody", "callsign": "IMW", "beacon_type": 14, "hertz": 109300000, "channel": null }, - { + "airfield26_3": { "name": "MineralnyeVody", "callsign": "IMW", "beacon_type": 15, "hertz": 109300000, "channel": null }, - { + "airfield26_4": { "name": "MineralnyeVody", "callsign": "MD", "beacon_type": 12, "hertz": 583000, "channel": null }, - { + "airfield26_5": { "name": "MineralnyeVody", "callsign": "D", "beacon_type": 13, "hertz": 283000, "channel": null }, - { + "airfield26_6": { "name": "MineralnyeVody", "callsign": "IMD", "beacon_type": 14, "hertz": 111700000, "channel": null }, - { + "airfield26_7": { "name": "MineralnyeVody", "callsign": "IMD", "beacon_type": 15, "hertz": 111700000, "channel": null }, - { + "airfield26_8": { "name": "MineralnyeVody", "callsign": "MN", "beacon_type": 2, "hertz": 117100000, "channel": 118 }, - { + "airfield28_0": { "name": "Mozdok", "callsign": "DO", "beacon_type": 12, "hertz": 525000, "channel": null }, - { + "airfield28_1": { "name": "Mozdok", "callsign": "D", "beacon_type": 13, "hertz": 1065000, "channel": null }, - { + "airfield28_2": { "name": "Mozdok", "callsign": "RM", "beacon_type": 12, "hertz": 525000, "channel": null }, - { + "airfield28_3": { "name": "Mozdok", "callsign": "R", "beacon_type": 13, "hertz": 1065000, "channel": null }, - { + "airfield28_4": { "name": "Mozdok", "callsign": "MZ", "beacon_type": 16, "hertz": 822000000, "channel": 22 }, - { + "airfield28_5": { "name": "Mozdok", "callsign": "MZ", "beacon_type": 17, "hertz": 822000000, "channel": 22 }, - { + "airfield28_6": { "name": "Mozdok", "callsign": "MK", "beacon_type": 16, "hertz": 822000000, "channel": 22 }, - { + "airfield28_7": { "name": "Mozdok", "callsign": "MK", "beacon_type": 17, "hertz": 822000000, "channel": 22 }, - { + "airfield28_8": { "name": "Mozdok", "callsign": "MZ", "beacon_type": 7, "hertz": 820000000, "channel": 20 }, - { + "airfield27_0": { "name": "Nalchik", "callsign": "NL", "beacon_type": 12, "hertz": 718000, "channel": null }, - { + "airfield27_1": { "name": "Nalchik", "callsign": "N", "beacon_type": 13, "hertz": 350000, "channel": null }, - { + "airfield27_2": { "name": "Nalchik", "callsign": "INL", "beacon_type": 14, "hertz": 110500000, "channel": null }, - { + "airfield27_3": { "name": "Nalchik", "callsign": "INL", "beacon_type": 15, "hertz": 110500000, "channel": null }, - { + "airfield23_0": { "name": "Senaki-Kolkhi", "callsign": "BI", "beacon_type": 12, "hertz": 335000, "channel": null }, - { + "airfield23_1": { "name": "Senaki-Kolkhi", "callsign": "B", "beacon_type": 13, "hertz": 688000, "channel": null }, - { + "airfield23_2": { "name": "Senaki-Kolkhi", "callsign": "ITS", "beacon_type": 14, "hertz": 108900000, "channel": null }, - { + "airfield23_3": { "name": "Senaki-Kolkhi", "callsign": "ITS", "beacon_type": 15, "hertz": 108900000, "channel": null }, - { + "airfield23_4": { "name": "Senaki-Kolkhi", "callsign": "TSK", "beacon_type": 5, "hertz": 992000000, "channel": 31 }, - { + "airfield18_0": { "name": "Sochi-Adler", "callsign": "CO", "beacon_type": 11, "hertz": 761000, "channel": null }, - { + "airfield18_1": { "name": "Sochi-Adler", "callsign": "ISO", "beacon_type": 14, "hertz": 111100000, "channel": null }, - { + "airfield18_2": { "name": "Sochi-Adler", "callsign": "ISO", "beacon_type": 15, "hertz": 111100000, "channel": null }, - { + "airfield20_0": { "name": "Sukhumi-Babushara", "callsign": "AV", "beacon_type": 12, "hertz": 489000, "channel": null }, - { + "airfield20_1": { "name": "Sukhumi-Babushara", "callsign": "A", "beacon_type": 13, "hertz": 995000, "channel": null }, - { + "airfield31_0": { "name": "Vaziani", "callsign": "IVZ", "beacon_type": 14, "hertz": 108750000, "channel": null }, - { + "airfield31_1": { "name": "Vaziani", "callsign": "IVZ", "beacon_type": 15, "hertz": 108750000, "channel": null }, - { + "airfield31_2": { "name": "Vaziani", "callsign": "IVI", "beacon_type": 14, "hertz": 108750000, "channel": null }, - { + "airfield31_3": { "name": "Vaziani", "callsign": "IVI", "beacon_type": 15, "hertz": 108750000, "channel": null }, - { + "airfield31_4": { "name": "Vaziani", "callsign": "VAS", "beacon_type": 5, "hertz": 983000000, "channel": 22 }, - { + "world_0": { "name": "Ust-Labinks", "callsign": "NZ", "beacon_type": 9, "hertz": 330000, "channel": null }, - { + "world_1": { "name": "Chervonoglinskoye", "callsign": "AR", "beacon_type": 9, "hertz": 440000, "channel": null }, - { + "world_2": { "name": "Dmitrovka", "callsign": "DM", "beacon_type": 9, "hertz": 690000, "channel": null }, - { + "world_3": { "name": "Agoy", "callsign": "AG", "beacon_type": 9, "hertz": 381000, "channel": null }, - { + "world_4": { "name": "Maykop", "callsign": "MA", "beacon_type": 9, "hertz": 682000, "channel": null }, - { + "world_5": { "name": "Herson", "callsign": "HS", "beacon_type": 9, "hertz": 1065000, "channel": null }, - { + "world_6": { "name": "Smolenkaya", "callsign": "SM", "beacon_type": 9, "hertz": 662000, "channel": null }, - { + "world_7": { "name": "Kislovodsk", "callsign": "KW", "beacon_type": 9, "hertz": 995000, "channel": null }, - { + "world_8": { "name": "Taganrog", "callsign": "TC", "beacon_type": 9, "hertz": 470000, "channel": null }, - { + "world_9": { "name": "Feodosiya", "callsign": "IL", "beacon_type": 9, "hertz": 300500, "channel": null }, - { + "world_10": { "name": "Shyriaeve", "callsign": "SH", "beacon_type": 9, "hertz": 389000, "channel": null }, - { + "world_11": { "name": "Odessa", "callsign": "OD", "beacon_type": 9, "hertz": 348000, "channel": null }, - { + "world_12": { "name": "Yalta", "callsign": "BS", "beacon_type": 9, "hertz": 300500, "channel": null }, - { + "world_13": { "name": "Stavropol", "callsign": "KT", "beacon_type": 9, "hertz": 730000, "channel": null }, - { + "world_14": { "name": "Yegorlykskaya", "callsign": "ER", "beacon_type": 9, "hertz": 435000, "channel": null }, - { + "world_15": { "name": "Komisarivka", "callsign": "KM", "beacon_type": 9, "hertz": 950000, "channel": null }, - { + "world_16": { "name": "Skadovsk", "callsign": "SK", "beacon_type": 9, "hertz": 680000, "channel": null }, - { + "world_17": { "name": "Gali", "callsign": "DA", "beacon_type": 9, "hertz": 525000, "channel": null }, - { + "world_18": { "name": "Mukhrani", "callsign": "DF", "beacon_type": 9, "hertz": 520000, "channel": null }, - { + "world_19": { "name": "Ladozhskaya", "callsign": "RF", "beacon_type": 9, "hertz": 324000, "channel": null }, - { + "world_20": { "name": "Teplorechensky", "callsign": "FM", "beacon_type": 9, "hertz": 1182000, "channel": null }, - { + "world_21": { "name": "Kalaus", "callsign": "BJ", "beacon_type": 9, "hertz": 735000, "channel": null }, - { + "world_22": { "name": "Nikolaev-Kulbakino", "callsign": "NK", "beacon_type": 9, "hertz": 1030000, "channel": null }, - { + "world_23": { "name": "Manychsky", "callsign": "MN", "beacon_type": 9, "hertz": 705000, "channel": null }, - { + "world_24": { "name": "Kerch", "callsign": "KC", "beacon_type": 9, "hertz": 1050000, "channel": null }, - { + "world_25": { "name": "TaganrogYuzhny", "callsign": "TY", "beacon_type": 9, "hertz": 720000, "channel": null }, - { + "world_26": { "name": "Ali", "callsign": "AL", "beacon_type": 9, "hertz": 353000, "channel": null }, - { + "world_27": { "name": "Elista", "callsign": "SA", "beacon_type": 9, "hertz": 311000, "channel": null }, - { + "world_28": { "name": "Ryazanskaya", "callsign": "XT", "beacon_type": 9, "hertz": 312000, "channel": null }, - { + "world_29": { "name": "Kakhovka", "callsign": "KH", "beacon_type": 9, "hertz": 485000, "channel": null }, - { + "world_30": { "name": "Vesely", "callsign": "WS", "beacon_type": 9, "hertz": 641000, "channel": null }, - { + "world_31": { "name": "Odessa", "callsign": "WR", "beacon_type": 9, "hertz": 309500, "channel": null }, - { + "world_32": { "name": "Armavir", "callsign": "VM", "beacon_type": 9, "hertz": 740000, "channel": null }, - { + "world_33": { "name": "Grozny", "callsign": "WK", "beacon_type": 9, "hertz": 830000, "channel": null }, - { + "world_34": { "name": "Tiraspol", "callsign": "TH", "beacon_type": 9, "hertz": 515000, "channel": null }, - { + "world_35": { "name": "Simferopol", "callsign": "KC", "beacon_type": 9, "hertz": 580000, "channel": null }, - { + "world_36": { "name": "Sultanskoye", "callsign": "SN", "beacon_type": 9, "hertz": 866000, "channel": null }, - { + "world_37": { "name": "Buyalyk", "callsign": "DW", "beacon_type": 9, "hertz": 625000, "channel": null }, - { + "world_38": { "name": "Sarmakovo", "callsign": "SR", "beacon_type": 9, "hertz": 907000, "channel": null }, - { + "world_39": { "name": "Tendrovskiy", "callsign": "TD", "beacon_type": 9, "hertz": 309500, "channel": null }, - { + "world_40": { "name": "Sukhoy", "callsign": "SH", "beacon_type": 9, "hertz": 862000, "channel": null }, - { + "world_41": { "name": "Dzhubga", "callsign": "DV", "beacon_type": 9, "hertz": 420000, "channel": null }, - { + "world_42": { "name": "Genichesk", "callsign": "GE", "beacon_type": 9, "hertz": 300500, "channel": null }, - { + "world_43": { "name": "Primorsko-Akhtarsk", "callsign": "GW", "beacon_type": 9, "hertz": 920000, "channel": null }, - { + "world_44": { "name": "Yasnaya", "callsign": "QG", "beacon_type": 9, "hertz": 435000, "channel": null }, - { + "world_45": { "name": "Alushta", "callsign": "AL", "beacon_type": 9, "hertz": 384000, "channel": null }, - { + "world_46": { "name": "Dobrushyn", "callsign": "DO", "beacon_type": 9, "hertz": 1175000, "channel": null }, - { + "world_47": { "name": "Bolshevik", "callsign": "ND", "beacon_type": 9, "hertz": 507000, "channel": null }, - { + "world_48": { "name": "Peredovay", "callsign": "PR", "beacon_type": 9, "hertz": 1210000, "channel": null }, - { + "world_49": { "name": "Parutine", "callsign": "PA", "beacon_type": 9, "hertz": 905000, "channel": null }, - { + "world_50": { "name": "Gori", "callsign": "OE", "beacon_type": 9, "hertz": 462000, "channel": null }, - { + "world_51": { "name": "Liubymivka", "callsign": "LY", "beacon_type": 9, "hertz": 670000, "channel": null }, - { + "world_52": { "name": "Mariupol", "callsign": "MA", "beacon_type": 9, "hertz": 770000, "channel": null }, - { + "world_53": { "name": "Akhilleon", "callsign": "AH", "beacon_type": 9, "hertz": 300500, "channel": null }, - { + "world_54": { "name": "Nikolaev-Matveyevka", "callsign": "NK", "beacon_type": 9, "hertz": 1030000, "channel": null }, - { + "world_55": { "name": "Melitopol", "callsign": "NE", "beacon_type": 9, "hertz": 740000, "channel": null }, - { + "world_56": { "name": "TchervonoLissya", "callsign": "LE", "beacon_type": 9, "hertz": 395000, "channel": null }, - { + "world_57": { "name": "Tikhoretsk", "callsign": "UH", "beacon_type": 9, "hertz": 528000, "channel": null }, - { + "world_58": { "name": "Rostov-Na-Donu", "callsign": "RE", "beacon_type": 9, "hertz": 320000, "channel": null }, - { + "world_59": { "name": "Lazarevskoye", "callsign": "LA", "beacon_type": 9, "hertz": 307000, "channel": null }, - { + "world_60": { "name": "Berdyansk", "callsign": "BD", "beacon_type": 9, "hertz": 342000, "channel": null }, - { + "world_61": { "name": "Kropotkin", "callsign": "KP", "beacon_type": 9, "hertz": 214000, "channel": null }, - { + "world_62": { "name": "Lymans-Ke", "callsign": "LA", "beacon_type": 9, "hertz": 750000, "channel": null }, - { + "world_63": { "name": "Krasny", "callsign": "KS", "beacon_type": 9, "hertz": 1025000, "channel": null } -] \ No newline at end of file +} \ No newline at end of file diff --git a/resources/dcs/beacons/falklands.json b/resources/dcs/beacons/falklands.json index d8147d05..7e85e375 100644 --- a/resources/dcs/beacons/falklands.json +++ b/resources/dcs/beacons/falklands.json @@ -1,198 +1,198 @@ -[ - { +{ + "airfield14_0": { "name": "ELCALACAFE", "callsign": "EC", "beacon_type": 15, "hertz": 108900000, "channel": null }, - { + "airfield14_1": { "name": "ELCALAFATE", "callsign": "ec", "beacon_type": 14, "hertz": 108900000, "channel": null }, - { + "airfield14_2": { "name": "ECA", "callsign": "ECA", "beacon_type": 4, "hertz": 114700000, "channel": 94 }, - { + "airfield2_0": { "name": "MTPLEASANT", "callsign": "imp", "beacon_type": 14, "hertz": 111900000, "channel": null }, - { + "airfield2_1": { "name": "MP", "callsign": "MP", "beacon_type": 10, "hertz": 380000, "channel": null }, - { + "airfield2_2": { "name": "MPA", "callsign": "MPA", "beacon_type": 5, "hertz": 112200000, "channel": 59 }, - { + "airfield2_3": { "name": "MTP", "callsign": "MTP", "beacon_type": 2, "hertz": 114700000, "channel": 94 }, - { + "airfield2_4": { "name": "MTPLEASANT", "callsign": "IMP", "beacon_type": 15, "hertz": 111900000, "channel": null }, - { + "airfield1_0": { "name": "stanleyairport", "callsign": "SA", "beacon_type": 10, "hertz": 305000, "channel": null }, - { + "airfield1_1": { "name": "DFO", "callsign": "DFO", "beacon_type": 2, "hertz": 113300000, "channel": null }, - { + "airfield13_0": { "name": "PUERTO NATALES", "callsign": "PNT", "beacon_type": 4, "hertz": 115900000, "channel": 106 }, - { + "airfield12_0": { "name": "Puerto Williams", "callsign": "PWL", "beacon_type": 4, "hertz": 114900000, "channel": 96 }, - { + "airfield9_0": { "name": "ptarenas", "callsign": "inas", "beacon_type": 15, "hertz": 109900000, "channel": null }, - { + "airfield9_1": { "name": "", "callsign": "INAS", "beacon_type": 14, "hertz": 109900000, "channel": null }, - { + "airfield9_2": { "name": "NAS", "callsign": "NAS", "beacon_type": 4, "hertz": 114100000, "channel": null }, - { + "airfield9_3": { "name": "NAS", "callsign": "NAS", "beacon_type": 9, "hertz": 270000, "channel": null }, - { + "airfield5_0": { "name": "GAL", "callsign": "GAL", "beacon_type": 4, "hertz": 116700000, "channel": 114 }, - { + "airfield5_1": { "name": "RIOGALLEGOS", "callsign": "gl", "beacon_type": 14, "hertz": 110300000, "channel": null }, - { + "airfield5_2": { "name": "RIOGALLEGOS", "callsign": "gl", "beacon_type": 15, "hertz": 110300000, "channel": null }, - { + "airfield6_0": { "name": "RIOGRANDE", "callsign": "gr", "beacon_type": 14, "hertz": 109500000, "channel": null }, - { + "airfield6_1": { "name": "GRA", "callsign": "GRA", "beacon_type": 4, "hertz": 117300000, "channel": 120 }, - { + "airfield6_2": { "name": "RIOGRANDE", "callsign": "gr", "beacon_type": 15, "hertz": 109500000, "channel": null }, - { + "airfield6_3": { "name": "riograndendb", "callsign": "P", "beacon_type": 10, "hertz": 265000, "channel": null }, - { + "airfield6_4": { "name": "riogrande", "callsign": "gra", "beacon_type": 5, "hertz": 1000000, "channel": 31 }, - { + "airfield11_0": { "name": "San Julian", "callsign": "", "beacon_type": 4, "hertz": 117700000, "channel": null }, - { + "airfield7_0": { "name": "RIOGRANDE", "callsign": "us", "beacon_type": 14, "hertz": 111300000, "channel": null }, - { + "airfield7_1": { "name": "Ushuaia", "callsign": "us", "beacon_type": 15, "hertz": 111300000, "channel": null }, - { + "airfield7_2": { "name": "USU", "callsign": "USU", "beacon_type": 2, "hertz": 113700000, "channel": 84 } -] \ No newline at end of file +} \ No newline at end of file diff --git a/resources/dcs/beacons/marianaislands.json b/resources/dcs/beacons/marianaislands.json index da67641b..628b79e2 100644 --- a/resources/dcs/beacons/marianaislands.json +++ b/resources/dcs/beacons/marianaislands.json @@ -1,135 +1,135 @@ -[ - { +{ + "world_0": { "name": "MTMACAJNA", "callsign": "AJA", "beacon_type": 9, "hertz": 385000, "channel": null }, - { + "world_1": { "name": "Nimitz", "callsign": "UNZ", "beacon_type": 6, "hertz": 115800000, "channel": 105 }, - { + "world_2": { "name": "SAIPAN", "callsign": "SN", "beacon_type": 9, "hertz": 312000, "channel": null }, - { + "airfield6_0": { "name": "ANDERSEN", "callsign": "UAM", "beacon_type": 5, "hertz": null, "channel": 54 }, - { + "airfield6_1": { "name": "", "callsign": "IPMY", "beacon_type": 15, "hertz": 110150000, "channel": null }, - { + "airfield6_2": { "name": "", "callsign": "IUAM", "beacon_type": 15, "hertz": 110100000, "channel": null }, - { + "airfield6_3": { "name": "", "callsign": "IYIG", "beacon_type": 15, "hertz": 109350000, "channel": null }, - { + "airfield6_4": { "name": "", "callsign": "IAND", "beacon_type": 15, "hertz": 109300000, "channel": null }, - { + "airfield6_5": { "name": "", "callsign": "IUAM", "beacon_type": 14, "hertz": 110100000, "channel": null }, - { + "airfield6_6": { "name": "", "callsign": "IAND", "beacon_type": 14, "hertz": 109300000, "channel": null }, - { + "airfield6_7": { "name": "", "callsign": "IYIG", "beacon_type": 14, "hertz": 109350000, "channel": null }, - { + "airfield6_8": { "name": "", "callsign": "IPMY", "beacon_type": 14, "hertz": 110150000, "channel": null }, - { + "airfield4_0": { "name": "", "callsign": "IGUM", "beacon_type": 14, "hertz": 110300000, "channel": null }, - { + "airfield4_1": { "name": "", "callsign": "PGUM", "beacon_type": 15, "hertz": 110300000, "channel": null }, - { + "airfield4_2": { "name": "", "callsign": "IAWD", "beacon_type": 14, "hertz": 110900000, "channel": null }, - { + "airfield4_3": { "name": "", "callsign": "PGUM", "beacon_type": 15, "hertz": 110900000, "channel": null }, - { + "airfield1_0": { "name": "ROTA", "callsign": "GRO", "beacon_type": 9, "hertz": 332000, "channel": null }, - { + "airfield2_0": { "name": "", "callsign": "IGSN", "beacon_type": 14, "hertz": 109900000, "channel": null }, - { + "airfield2_1": { "name": "", "callsign": "PGSN", "beacon_type": 15, "hertz": 109900000, "channel": null } -] \ No newline at end of file +} \ No newline at end of file diff --git a/resources/dcs/beacons/nevada.json b/resources/dcs/beacons/nevada.json index 3984e44c..5abefa93 100644 --- a/resources/dcs/beacons/nevada.json +++ b/resources/dcs/beacons/nevada.json @@ -1,317 +1,317 @@ -[ - { +{ + "airfield1_0": { "name": "Creech", "callsign": "ICRR", "beacon_type": 15, "hertz": 108700000, "channel": 24 }, - { + "airfield1_1": { "name": "Creech", "callsign": "ICRR", "beacon_type": 14, "hertz": 108700000, "channel": 24 }, - { + "airfield1_2": { "name": "Creech", "callsign": "ICRS", "beacon_type": 14, "hertz": 108500000, "channel": 22 }, - { + "airfield1_3": { "name": "Creech", "callsign": "ICRS", "beacon_type": 15, "hertz": 108500000, "channel": 22 }, - { + "airfield1_4": { "name": "Creech", "callsign": "INS", "beacon_type": 5, "hertz": null, "channel": 87 }, - { + "airfield2_0": { "name": "Groom-Lake", "callsign": "GLRI", "beacon_type": 14, "hertz": 109300000, "channel": 30 }, - { + "airfield2_1": { "name": "Groom-Lake", "callsign": "GLRI", "beacon_type": 15, "hertz": 109300000, "channel": 30 }, - { + "airfield2_2": { "name": "Groom-Lake", "callsign": "GRL", "beacon_type": 5, "hertz": null, "channel": 18 }, - { + "airfield3_0": { "name": "McCarran-International", "callsign": "I-RLE", "beacon_type": 15, "hertz": 111750000, "channel": null }, - { + "airfield3_1": { "name": "McCarran-International", "callsign": "I-LAS", "beacon_type": 15, "hertz": 110300000, "channel": 40 }, - { + "airfield3_2": { "name": "McCarran-International", "callsign": "I-RLE", "beacon_type": 14, "hertz": 111750000, "channel": null }, - { + "airfield3_3": { "name": "McCarran-International", "callsign": "I-LAS", "beacon_type": 14, "hertz": 110300000, "channel": 40 }, - { + "airfield3_4": { "name": "McCarran-International", "callsign": "LAS", "beacon_type": 6, "hertz": 116900000, "channel": 116 }, - { + "airfield4_0": { "name": "Nellis", "callsign": "IDIQ", "beacon_type": 15, "hertz": 109100000, "channel": null }, - { + "airfield4_1": { "name": "Nellis", "callsign": "LSV", "beacon_type": 5, "hertz": null, "channel": 12 }, - { + "airfield4_2": { "name": "Nellis", "callsign": "IDIQ", "beacon_type": 14, "hertz": 109100000, "channel": null }, - { + "airfield15_0": { "name": "North-Las-Vegas", "callsign": "I-HWG", "beacon_type": 14, "hertz": 110700000, "channel": null }, - { + "airfield15_1": { "name": "North-Las-Vegas", "callsign": "I-HWG", "beacon_type": 15, "hertz": 110700000, "channel": null }, - { + "airfield18_0": { "name": "Tonopah-Test-Range", "callsign": "I-RVP", "beacon_type": 14, "hertz": 108300000, "channel": null }, - { + "airfield18_1": { "name": "Tonopah-Test-Range", "callsign": "I-UVV", "beacon_type": 14, "hertz": 111700000, "channel": null }, - { + "airfield18_2": { "name": "Tonopah-Test-Range", "callsign": "I-UVV", "beacon_type": 15, "hertz": 111700000, "channel": null }, - { + "airfield18_3": { "name": "Tonopah-Test-Range", "callsign": "I-RVP", "beacon_type": 15, "hertz": 108300000, "channel": null }, - { + "airfield18_4": { "name": "Silverbow", "callsign": "TQQ", "beacon_type": 6, "hertz": 113000000, "channel": 77 }, - { + "world_0": { "name": "St George", "callsign": "UTI", "beacon_type": 4, "hertz": 108600000, "channel": 23 }, - { + "world_1": { "name": "Grand Canyon", "callsign": "GCN", "beacon_type": 4, "hertz": 113100000, "channel": 78 }, - { + "world_2": { "name": "Kingman", "callsign": "IGM", "beacon_type": 4, "hertz": 108800000, "channel": 25 }, - { + "world_3": { "name": "Colorado City", "callsign": "AZC", "beacon_type": 10, "hertz": 403000, "channel": null }, - { + "world_4": { "name": "Meggi", "callsign": "EC", "beacon_type": 10, "hertz": 217000, "channel": null }, - { + "world_5": { "name": "Daggett", "callsign": "DAG", "beacon_type": 6, "hertz": 113200000, "channel": 79 }, - { + "world_6": { "name": "Hector", "callsign": "HEC", "beacon_type": 6, "hertz": 112700000, "channel": 74 }, - { + "world_7": { "name": "Needles", "callsign": "EED", "beacon_type": 6, "hertz": 115200000, "channel": 99 }, - { + "world_8": { "name": "Milford", "callsign": "MLF", "beacon_type": 6, "hertz": 112100000, "channel": 58 }, - { + "world_9": { "name": "GOFFS", "callsign": "GFS", "beacon_type": 6, "hertz": 114400000, "channel": 91 }, - { + "world_10": { "name": "Tonopah", "callsign": "TPH", "beacon_type": 6, "hertz": 117200000, "channel": 119 }, - { + "world_11": { "name": "Mina", "callsign": "MVA", "beacon_type": 6, "hertz": 115100000, "channel": 98 }, - { + "world_12": { "name": "Wilson Creek", "callsign": "ILC", "beacon_type": 6, "hertz": 116300000, "channel": 110 }, - { + "world_13": { "name": "Cedar City", "callsign": "CDC", "beacon_type": 6, "hertz": 117300000, "channel": 120 }, - { + "world_14": { "name": "Bryce Canyon", "callsign": "BCE", "beacon_type": 6, "hertz": 112800000, "channel": 75 }, - { + "world_15": { "name": "Mormon Mesa", "callsign": "MMM", "beacon_type": 6, "hertz": 114300000, "channel": 90 }, - { + "world_16": { "name": "Beatty", "callsign": "BTY", "beacon_type": 6, "hertz": 114700000, "channel": 94 }, - { + "world_17": { "name": "Bishop", "callsign": "BIH", "beacon_type": 6, "hertz": 109600000, "channel": 33 }, - { + "world_18": { "name": "Coaldale", "callsign": "OAL", "beacon_type": 6, "hertz": 117700000, "channel": 124 }, - { + "world_19": { "name": "Peach Springs", "callsign": "PGS", "beacon_type": 6, "hertz": 112000000, "channel": 57 }, - { + "world_20": { "name": "Boulder City", "callsign": "BLD", "beacon_type": 6, "hertz": 116700000, "channel": 114 }, - { + "world_21": { "name": "Mercury", "callsign": "MCY", "beacon_type": 10, "hertz": 326000, "channel": null } -] \ No newline at end of file +} \ No newline at end of file diff --git a/resources/dcs/beacons/normandy.json b/resources/dcs/beacons/normandy.json index 0637a088..9e26dfee 100644 --- a/resources/dcs/beacons/normandy.json +++ b/resources/dcs/beacons/normandy.json @@ -1 +1 @@ -[] \ No newline at end of file +{} \ No newline at end of file diff --git a/resources/dcs/beacons/persiangulf.json b/resources/dcs/beacons/persiangulf.json index 55e6ff19..144c39dc 100644 --- a/resources/dcs/beacons/persiangulf.json +++ b/resources/dcs/beacons/persiangulf.json @@ -1,709 +1,709 @@ -[ - { +{ + "airfield22_0": { "name": "ABUDHABI", "callsign": "ADV", "beacon_type": 2, "hertz": 114250000, "channel": null }, - { + "airfield22_1": { "name": "AbuDhabiInt", "callsign": "ADV", "beacon_type": 3, "hertz": 114250000, "channel": 119 }, - { + "airfield1_0": { "name": "Abumusa", "callsign": "ABM", "beacon_type": 3, "hertz": 285000, "channel": 101 }, - { + "airfield25_0": { "name": "AlAinInt", "callsign": "ALN", "beacon_type": 4, "hertz": 112600000, "channel": 119 }, - { + "airfield23_0": { "name": "AlBateenInt", "callsign": "ALB", "beacon_type": 2, "hertz": 114000000, "channel": 119 }, - { + "airfield2_0": { "name": "BandarAbbas", "callsign": "BND", "beacon_type": 4, "hertz": 117200000, "channel": 119 }, - { + "airfield2_1": { "name": "BandarAbbas", "callsign": "BND", "beacon_type": 9, "hertz": 250000, "channel": null }, - { + "airfield2_2": { "name": "", "callsign": "IBND", "beacon_type": 14, "hertz": 109900000, "channel": null }, - { + "airfield2_3": { "name": "", "callsign": "IBND", "beacon_type": 15, "hertz": 109900000, "channel": null }, - { + "airfield2_4": { "name": "BandarAbbas", "callsign": "BND", "beacon_type": 5, "hertz": null, "channel": 78 }, - { + "airfield21_0": { "name": "BandarEJask", "callsign": "KHM", "beacon_type": 4, "hertz": 116300000, "channel": null }, - { + "airfield21_1": { "name": "JASK", "callsign": "JSK", "beacon_type": 9, "hertz": 349000, "channel": null }, - { + "airfield21_2": { "name": "", "callsign": "JSK", "beacon_type": 5, "hertz": null, "channel": 110 }, - { + "airfield3_0": { "name": "BandarLengeh", "callsign": "LEN", "beacon_type": 9, "hertz": 408000, "channel": null }, - { + "airfield3_1": { "name": "BandarLengeh", "callsign": "LEN", "beacon_type": 4, "hertz": 114800000, "channel": 95 }, - { + "airfield4_0": { "name": "", "callsign": "MMA", "beacon_type": 15, "hertz": 109100000, "channel": 28 }, - { + "airfield4_1": { "name": "", "callsign": "LMA", "beacon_type": 15, "hertz": 108700000, "channel": 24 }, - { + "airfield4_2": { "name": "", "callsign": "IMA", "beacon_type": 15, "hertz": 111100000, "channel": 48 }, - { + "airfield4_3": { "name": "", "callsign": "RMA", "beacon_type": 15, "hertz": 108700000, "channel": 24 }, - { + "airfield4_4": { "name": "", "callsign": "MMA", "beacon_type": 14, "hertz": 109100000, "channel": 28 }, - { + "airfield4_5": { "name": "", "callsign": "RMA", "beacon_type": 14, "hertz": 108700000, "channel": 24 }, - { + "airfield4_6": { "name": "", "callsign": "LMA", "beacon_type": 14, "hertz": 108700000, "channel": 24 }, - { + "airfield4_7": { "name": "", "callsign": "IMA", "beacon_type": 14, "hertz": 111100000, "channel": 48 }, - { + "airfield4_8": { "name": "AlDhafra", "callsign": "MA", "beacon_type": 6, "hertz": 114900000, "channel": 96 }, - { + "airfield5_0": { "name": "", "callsign": "IDBW", "beacon_type": 14, "hertz": 109500000, "channel": null }, - { + "airfield5_1": { "name": "", "callsign": "IDBR", "beacon_type": 14, "hertz": 110100000, "channel": null }, - { + "airfield5_2": { "name": "", "callsign": "IDBE", "beacon_type": 14, "hertz": 111300000, "channel": null }, - { + "airfield5_3": { "name": "", "callsign": "IDBL", "beacon_type": 14, "hertz": 110900000, "channel": null }, - { + "airfield5_4": { "name": "", "callsign": "IDBL", "beacon_type": 15, "hertz": 110900000, "channel": null }, - { + "airfield5_5": { "name": "", "callsign": "IDBR", "beacon_type": 15, "hertz": 110100000, "channel": null }, - { + "airfield5_6": { "name": "", "callsign": "IDBE", "beacon_type": 15, "hertz": 111300000, "channel": null }, - { + "airfield5_7": { "name": "", "callsign": "IDBW", "beacon_type": 15, "hertz": 109500000, "channel": null }, - { + "airfield6_0": { "name": "", "callsign": "IJEA", "beacon_type": 14, "hertz": 111750000, "channel": null }, - { + "airfield6_1": { "name": "", "callsign": "IJWA", "beacon_type": 15, "hertz": 109750000, "channel": null }, - { + "airfield6_2": { "name": "", "callsign": "IJEA", "beacon_type": 15, "hertz": 111750000, "channel": null }, - { + "airfield6_3": { "name": "", "callsign": "IJWA", "beacon_type": 14, "hertz": 109750000, "channel": null }, - { + "airfield7_0": { "name": "Fujairah", "callsign": "FJV", "beacon_type": 4, "hertz": 113800000, "channel": 85 }, - { + "airfield7_1": { "name": "", "callsign": "IFJR", "beacon_type": 15, "hertz": 111500000, "channel": null }, - { + "airfield7_2": { "name": "", "callsign": "IFJR", "beacon_type": 14, "hertz": 111500000, "channel": null }, - { + "airfield9_0": { "name": "Havadarya", "callsign": "HDR", "beacon_type": 5, "hertz": 111000000, "channel": 47 }, - { + "airfield9_1": { "name": "", "callsign": "IBHD", "beacon_type": 14, "hertz": 108900000, "channel": null }, - { + "airfield9_2": { "name": "", "callsign": "IBHD", "beacon_type": 15, "hertz": 108900000, "channel": null }, - { + "airfield27_0": { "name": "Jiroft", "callsign": "JIR", "beacon_type": 10, "hertz": 276000, "channel": null }, - { + "airfield18_0": { "name": "KERMAN", "callsign": "KER", "beacon_type": 5, "hertz": 122500000, "channel": 97 }, - { + "airfield18_1": { "name": "KERMAN", "callsign": "KER", "beacon_type": 4, "hertz": 112000000, "channel": 57 }, - { + "airfield18_2": { "name": "KERMAN", "callsign": "KER", "beacon_type": 3, "hertz": 290000000, "channel": null }, - { + "airfield10_0": { "name": "", "callsign": "IBKS", "beacon_type": 14, "hertz": 110300000, "channel": null }, - { + "airfield10_1": { "name": "", "callsign": "IBKS", "beacon_type": 15, "hertz": 110300000, "channel": null }, - { + "airfield24_0": { "name": "KishIsland", "callsign": "KIH", "beacon_type": 9, "hertz": 201000, "channel": null }, - { + "airfield24_1": { "name": "KishIsland", "callsign": "KIH", "beacon_type": 5, "hertz": null, "channel": 112 }, - { + "airfield11_0": { "name": "LAR", "callsign": "LAR", "beacon_type": 4, "hertz": 117900000, "channel": null }, - { + "airfield11_1": { "name": "LAR", "callsign": "OISL", "beacon_type": 9, "hertz": 224000, "channel": null }, - { + "airfield26_0": { "name": "LavanIsland", "callsign": "LVA", "beacon_type": 4, "hertz": 116850000, "channel": 115 }, - { + "airfield26_1": { "name": "LavanIsland", "callsign": "LVA", "beacon_type": 9, "hertz": 310000, "channel": 0 }, - { + "airfield29_0": { "name": "LiwaAirbase", "callsign": "OMLW", "beacon_type": 6, "hertz": 117400000, "channel": 121 }, - { + "airfield12_0": { "name": "Minhad", "callsign": "MIN", "beacon_type": 5, "hertz": 115200000, "channel": 99 }, - { + "airfield12_1": { "name": "", "callsign": "IMNW", "beacon_type": 14, "hertz": 110700000, "channel": null }, - { + "airfield12_2": { "name": "", "callsign": "IMNW", "beacon_type": 15, "hertz": 110700000, "channel": null }, - { + "airfield12_3": { "name": "", "callsign": "IMNR", "beacon_type": 14, "hertz": 110750000, "channel": null }, - { + "airfield12_4": { "name": "", "callsign": "IMNR", "beacon_type": 15, "hertz": 110750000, "channel": null }, - { + "airfield13_0": { "name": "GheshmIsland", "callsign": "KHM", "beacon_type": 9, "hertz": 233000, "channel": null }, - { + "airfield13_1": { "name": "GheshmIsland", "callsign": "KHM", "beacon_type": 4, "hertz": 117100000, "channel": null }, - { + "airfield28_0": { "name": "RasAlKhaimah", "callsign": "OMRK", "beacon_type": 4, "hertz": 113600000, "channel": 83 }, - { + "airfield20_0": { "name": "SasAlNakheel", "callsign": "SAS", "beacon_type": 4, "hertz": 128925000, "channel": 119 }, - { + "airfield14_0": { "name": "", "callsign": "ISRE", "beacon_type": 14, "hertz": 108550000, "channel": null }, - { + "airfield14_1": { "name": "", "callsign": "ISHW", "beacon_type": 14, "hertz": 111950000, "channel": null }, - { + "airfield14_2": { "name": "", "callsign": "ISHW", "beacon_type": 15, "hertz": 111950000, "channel": null }, - { + "airfield14_3": { "name": "", "callsign": "ISRE", "beacon_type": 15, "hertz": 108550000, "channel": null }, - { + "airfield19_0": { "name": "SHIRAZ", "callsign": "SYZ", "beacon_type": 4, "hertz": 117800000, "channel": 125 }, - { + "airfield19_1": { "name": "SHIRAZ", "callsign": "SYZ1", "beacon_type": 5, "hertz": 114700000, "channel": 94 }, - { + "airfield19_2": { "name": "SHIRAZ", "callsign": "SR", "beacon_type": 9, "hertz": 205000, "channel": null }, - { + "airfield19_3": { "name": "", "callsign": "ISYZ", "beacon_type": 15, "hertz": 108500000, "channel": null }, - { + "airfield19_4": { "name": "", "callsign": "ISYZ", "beacon_type": 14, "hertz": 108500000, "channel": null }, - { + "airfield15_0": { "name": "SirriIsland", "callsign": "SIR", "beacon_type": 9, "hertz": 300000, "channel": null }, - { + "airfield15_1": { "name": "SirriIsland", "callsign": "SIR", "beacon_type": 4, "hertz": 113750000, "channel": null }, - { + "airfield16_0": { "name": "Kochak", "callsign": "KCK", "beacon_type": 5, "hertz": 114200000, "channel": 89 }, - { + "world_0": { "name": "Kish", "callsign": "KIS", "beacon_type": 4, "hertz": 117400000, "channel": 121 }, - { + "world_1": { "name": "DohaAirport", "callsign": "DIA", "beacon_type": 4, "hertz": 112400000, "channel": 71 }, - { + "world_2": { "name": "HamadInternationalAirport", "callsign": "DOH", "beacon_type": 4, "hertz": 114400000, "channel": 91 }, - { + "world_3": { "name": "DezfulAirport", "callsign": "DZF", "beacon_type": 9, "hertz": 293000, "channel": null }, - { + "world_4": { "name": "AbadanIntAirport", "callsign": "ABD", "beacon_type": 4, "hertz": 115100000, "channel": 98 }, - { + "world_5": { "name": "AhvazIntAirport", "callsign": "AWZ", "beacon_type": 4, "hertz": 114000000, "channel": 87 }, - { + "world_6": { "name": "AghajariAirport", "callsign": "AJR", "beacon_type": 4, "hertz": 114900000, "channel": 96 }, - { + "world_7": { "name": "BirjandIntAirport", "callsign": "BJD", "beacon_type": 4, "hertz": 113500000, "channel": 82 }, - { + "world_8": { "name": "BushehrIntAirport", "callsign": "BUZ", "beacon_type": 4, "hertz": 117450000, "channel": 121 }, - { + "world_9": { "name": "KonarakAirport", "callsign": "CBH", "beacon_type": 4, "hertz": 115600000, "channel": 103 }, - { + "world_10": { "name": "IsfahanIntAirport", "callsign": "ISN", "beacon_type": 4, "hertz": 113200000, "channel": 79 }, - { + "world_11": { "name": "KhoramabadAirport", "callsign": "KRD", "beacon_type": 4, "hertz": 113750000, "channel": 84 }, - { + "world_12": { "name": "PersianGulfIntAirport", "callsign": "PRG", "beacon_type": 4, "hertz": 112100000, "channel": 58 }, - { + "world_13": { "name": "YasoujAirport", "callsign": "YSJ", "beacon_type": 4, "hertz": 116550000, "channel": 112 }, - { + "world_14": { "name": "BamAirport", "callsign": "BAM", "beacon_type": 4, "hertz": 114900000, "channel": 96 }, - { + "world_15": { "name": "MahshahrAirport", "callsign": "MAH", "beacon_type": 4, "hertz": 115800000, "channel": 105 }, - { + "world_16": { "name": "IranShahrAirport", "callsign": "ISR", "beacon_type": 4, "hertz": 117000000, "channel": 117 }, - { + "world_17": { "name": "LamerdAirport", "callsign": "LAM", "beacon_type": 4, "hertz": 117000000, "channel": 117 }, - { + "world_18": { "name": "SirjanAirport", "callsign": "SRJ", "beacon_type": 4, "hertz": 114600000, "channel": 93 }, - { + "world_19": { "name": "YazdIntAirport", "callsign": "YZD", "beacon_type": 4, "hertz": 117700000, "channel": 124 }, - { + "world_20": { "name": "ZabolAirport", "callsign": "ZAL", "beacon_type": 4, "hertz": 113100000, "channel": 78 }, - { + "world_21": { "name": "ZahedanIntAirport", "callsign": "ZDN", "beacon_type": 4, "hertz": 116000000, "channel": 107 }, - { + "world_22": { "name": "RafsanjanAirport", "callsign": "RAF", "beacon_type": 4, "hertz": 112300000, "channel": 70 }, - { + "world_23": { "name": "SaravanAirport", "callsign": "SRN", "beacon_type": 4, "hertz": 114100000, "channel": 88 }, - { + "world_24": { "name": "BuHasa", "callsign": "BH", "beacon_type": 3, "hertz": 309000000, "channel": null } -] \ No newline at end of file +} \ No newline at end of file diff --git a/resources/dcs/beacons/syria.json b/resources/dcs/beacons/syria.json index cc5c43d9..4fd66042 100644 --- a/resources/dcs/beacons/syria.json +++ b/resources/dcs/beacons/syria.json @@ -1,590 +1,590 @@ -[ - { +{ + "world_0": { "name": "BANIAS", "callsign": "BAN", "beacon_type": 10, "hertz": 304000, "channel": null }, - { + "world_1": { "name": "KAHRAMANMARAS", "callsign": "KHM", "beacon_type": 10, "hertz": 374000, "channel": null }, - { + "world_2": { "name": "KLEYATE", "callsign": "RA", "beacon_type": 10, "hertz": 450000, "channel": null }, - { + "world_3": { "name": "KARIATAIN", "callsign": "KTN", "beacon_type": 10, "hertz": 372500, "channel": null }, - { + "world_4": { "name": "TURAIF", "callsign": "TRF", "beacon_type": 4, "hertz": 116100000, "channel": null }, - { + "world_5": { "name": "BAYSUR", "callsign": "BAR", "beacon_type": 2, "hertz": 113900000, "channel": null }, - { + "world_6": { "name": "MARKA", "callsign": "AMN", "beacon_type": 4, "hertz": 116300000, "channel": null }, - { + "world_7": { "name": "TANF", "callsign": "TAN", "beacon_type": 4, "hertz": 114000000, "channel": null }, - { + "world_8": { "name": "NATANIA", "callsign": "NAT", "beacon_type": 4, "hertz": 112400000, "channel": null }, - { + "world_9": { "name": "KAHRAMANMARAS", "callsign": "KHM", "beacon_type": 4, "hertz": 113900000, "channel": null }, - { + "world_10": { "name": "KARIATAIN", "callsign": "KTN", "beacon_type": 4, "hertz": 117700000, "channel": null }, - { + "world_11": { "name": "MUT", "callsign": "MUT", "beacon_type": 4, "hertz": 112300000, "channel": null }, - { + "world_12": { "name": "DHEKELIA", "callsign": "DKA", "beacon_type": 10, "hertz": 343000, "channel": null }, - { + "airfield2_0": { "name": "", "callsign": "IADA", "beacon_type": 14, "hertz": 108700000, "channel": null }, - { + "airfield2_1": { "name": "", "callsign": "IADA", "beacon_type": 15, "hertz": 108700000, "channel": null }, - { + "airfield2_2": { "name": "ADANA", "callsign": "ADN", "beacon_type": 11, "hertz": 395000, "channel": null }, - { + "airfield2_3": { "name": "ADANA", "callsign": "ADA", "beacon_type": 4, "hertz": 112700000, "channel": null }, - { + "airfield44_0": { "name": "", "callsign": "IAK", "beacon_type": 14, "hertz": 109700000, "channel": null }, - { + "airfield44_1": { "name": "", "callsign": "IAK", "beacon_type": 15, "hertz": 109700000, "channel": null }, - { + "airfield44_2": { "name": "Akrotiri", "callsign": "AKR", "beacon_type": 5, "hertz": 116000000, "channel": 107 }, - { + "airfield44_3": { "name": "AKROTIRI", "callsign": "AK", "beacon_type": 10, "hertz": 365000, "channel": null }, - { + "airfield6_0": { "name": "KALDE", "callsign": "KAD", "beacon_type": 4, "hertz": 112600000, "channel": null }, - { + "airfield6_1": { "name": "", "callsign": "IBB", "beacon_type": 15, "hertz": 110100000, "channel": null }, - { + "airfield6_2": { "name": "", "callsign": "IKK", "beacon_type": 14, "hertz": 110700000, "channel": null }, - { + "airfield6_3": { "name": "", "callsign": "BIL", "beacon_type": 14, "hertz": 109500000, "channel": null }, - { + "airfield6_4": { "name": "", "callsign": "IBB", "beacon_type": 14, "hertz": 110100000, "channel": null }, - { + "airfield6_5": { "name": "", "callsign": "BIL", "beacon_type": 15, "hertz": 109500000, "channel": null }, - { + "airfield6_6": { "name": "", "callsign": "IKK", "beacon_type": 15, "hertz": 110700000, "channel": null }, - { + "airfield6_7": { "name": "BEIRUT", "callsign": "BOD", "beacon_type": 11, "hertz": 351000, "channel": null }, - { + "airfield7_0": { "name": "", "callsign": "IDA", "beacon_type": 15, "hertz": 109900000, "channel": null }, - { + "airfield7_1": { "name": "", "callsign": "IDA", "beacon_type": 14, "hertz": 109900000, "channel": null }, - { + "airfield7_2": { "name": "Damascus", "callsign": "DAM", "beacon_type": 4, "hertz": 116000000, "channel": null }, - { + "airfield7_3": { "name": "", "callsign": "DAML", "beacon_type": 14, "hertz": 111100000, "channel": null }, - { + "airfield7_4": { "name": "DAMASCUS", "callsign": "DAL", "beacon_type": 11, "hertz": 342000000, "channel": null }, - { + "airfield7_5": { "name": "ABYAD", "callsign": "ABD", "beacon_type": 10, "hertz": 264000, "channel": null }, - { + "airfield7_6": { "name": "", "callsign": "DAML", "beacon_type": 15, "hertz": 111100000, "channel": null }, - { + "airfield42_0": { "name": "Deir ez-Zor", "callsign": "DRZ", "beacon_type": 10, "hertz": 295000, "channel": null }, - { + "airfield42_1": { "name": "Deir ez-Zor", "callsign": "DRZ", "beacon_type": 4, "hertz": 117000000, "channel": null }, - { + "airfield49_0": { "name": "ERCAN", "callsign": "ECN", "beacon_type": 4, "hertz": 117000000, "channel": null }, - { + "airfield49_1": { "name": "", "callsign": "IECR", "beacon_type": 14, "hertz": 108300000, "channel": null }, - { + "airfield11_0": { "name": "", "callsign": "IGNP", "beacon_type": 14, "hertz": 109100000, "channel": null }, - { + "airfield11_1": { "name": "", "callsign": "IGNP", "beacon_type": 15, "hertz": 109100000, "channel": null }, - { + "airfield11_2": { "name": "GAZIANTEP", "callsign": "GAZ", "beacon_type": 10, "hertz": 432000, "channel": null }, - { + "airfield11_3": { "name": "GAZIANTEP", "callsign": "GAZ", "beacon_type": 4, "hertz": 116700000, "channel": null }, - { + "airfield41_0": { "name": "", "callsign": "IGZP", "beacon_type": 14, "hertz": 108500000, "channel": null }, - { + "airfield41_1": { "name": "ALANYA/GAZIPASA", "callsign": "GZP", "beacon_type": 3, "hertz": 0, "channel": 89 }, - { + "airfield41_2": { "name": "GAZIPASA/ALANYA", "callsign": "GZP", "beacon_type": 10, "hertz": 316000, "channel": null }, - { + "airfield50_0": { "name": "FAMAGUSTA_GECITKALE", "callsign": "GKE", "beacon_type": 4, "hertz": 114300000, "channel": null }, - { + "airfield50_1": { "name": "GECITKALE", "callsign": "GKE", "beacon_type": 10, "hertz": 435000, "channel": null }, - { + "airfield15_0": { "name": "HATAY", "callsign": "HTY", "beacon_type": 4, "hertz": 112050000, "channel": null }, - { + "airfield15_1": { "name": "", "callsign": "IHAT", "beacon_type": 14, "hertz": 108900000, "channel": null }, - { + "airfield15_2": { "name": "", "callsign": "IHAT", "beacon_type": 15, "hertz": 108900000, "channel": null }, - { + "airfield15_3": { "name": "HATAY", "callsign": "HTY", "beacon_type": 10, "hertz": 336000, "channel": null }, - { + "airfield16_0": { "name": "INCIRLIC", "callsign": "DAN", "beacon_type": 5, "hertz": null, "channel": 21 }, - { + "airfield16_1": { "name": "", "callsign": "IDAN", "beacon_type": 14, "hertz": 109300000, "channel": null }, - { + "airfield16_2": { "name": "", "callsign": "IDAN", "beacon_type": 15, "hertz": 109300000, "channel": null }, - { + "airfield16_3": { "name": "", "callsign": "IDNA", "beacon_type": 15, "hertz": 111700000, "channel": null }, - { + "airfield16_4": { "name": "", "callsign": "IDNA", "beacon_type": 14, "hertz": 111700000, "channel": null }, - { + "airfield47_0": { "name": "", "callsign": "ILC", "beacon_type": 14, "hertz": 110300000, "channel": null }, - { + "airfield47_1": { "name": "Larnaca", "callsign": "LCA", "beacon_type": 4, "hertz": 112800000, "channel": null }, - { + "airfield47_2": { "name": "", "callsign": "ILC", "beacon_type": 15, "hertz": 110300000, "channel": null }, - { + "airfield47_3": { "name": "Larnaca", "callsign": "LCA", "beacon_type": 9, "hertz": 432000, "channel": null }, - { + "airfield21_0": { "name": "", "callsign": "IBA", "beacon_type": 15, "hertz": 109100000, "channel": null }, - { + "airfield21_1": { "name": "", "callsign": "IBA", "beacon_type": 14, "hertz": 109100000, "channel": null }, - { + "airfield21_2": { "name": "LATAKIA", "callsign": "LTK", "beacon_type": 4, "hertz": 114800000, "channel": null }, - { + "airfield21_3": { "name": "LATAKIA", "callsign": "LTK", "beacon_type": 9, "hertz": 414000, "channel": null }, - { + "airfield25_0": { "name": "MEZZEH", "callsign": "MEZ", "beacon_type": 10, "hertz": 358000, "channel": null }, - { + "airfield27_0": { "name": "ALEPPO", "callsign": "ALE", "beacon_type": 10, "hertz": 396000, "channel": null }, - { + "airfield27_1": { "name": "ALEPPO", "callsign": "MER", "beacon_type": 10, "hertz": 365000, "channel": null }, - { + "airfield27_2": { "name": "ALEPPO", "callsign": "ALE", "beacon_type": 4, "hertz": 114500000, "channel": null }, - { + "airfield28_0": { "name": "PALMYRA", "callsign": "PLR", "beacon_type": 10, "hertz": 363000, "channel": null }, - { + "airfield28_1": { "name": "PALMYRA", "callsign": "PAL", "beacon_type": 10, "hertz": 337000, "channel": null }, - { + "airfield46_0": { "name": "Pafos", "callsign": "PHA", "beacon_type": 10, "hertz": 328000, "channel": null }, - { + "airfield46_1": { "name": "", "callsign": "IPA", "beacon_type": 15, "hertz": 108900000, "channel": null }, - { + "airfield46_2": { "name": "", "callsign": "IPA", "beacon_type": 14, "hertz": 108900000, "channel": null }, - { + "airfield46_3": { "name": "Pafos", "callsign": "IPA", "beacon_type": 3, "hertz": 108900000, "channel": null }, - { + "airfield46_4": { "name": "Pafos", "callsign": "PHA", "beacon_type": 4, "hertz": 117900000, "channel": null }, - { + "airfield46_5": { "name": "Pafos", "callsign": "PHA", "beacon_type": 5, "hertz": null, "channel": 79 }, - { + "airfield30_0": { "name": "RAMATDAVID", "callsign": "RMD", "beacon_type": 10, "hertz": 368000, "channel": null }, - { + "airfield30_1": { "name": "RAMATDAVID", "callsign": "RMD", "beacon_type": 6, "hertz": 113700000, "channel": 84 }, - { + "airfield30_2": { "name": "", "callsign": "RMD", "beacon_type": 14, "hertz": 111100000, "channel": null }, - { + "airfield30_3": { "name": "", "callsign": "RMD", "beacon_type": 15, "hertz": 111100000, "channel": null }, - { + "airfield34_0": { "name": "ROSH-PINA", "callsign": "ROP", "beacon_type": 4, "hertz": 115300000, "channel": null }, - { + "airfield40_0": { "name": "Cheka", "callsign": "CAK", "beacon_type": 4, "hertz": 116200000, "channel": null } -] \ No newline at end of file +} \ No newline at end of file diff --git a/resources/dcs/beacons/thechannel.json b/resources/dcs/beacons/thechannel.json index 0637a088..9e26dfee 100644 --- a/resources/dcs/beacons/thechannel.json +++ b/resources/dcs/beacons/thechannel.json @@ -1 +1 @@ -[] \ No newline at end of file +{} \ No newline at end of file diff --git a/resources/tools/import_beacons.py b/resources/tools/import_beacons.py index d6e568e2..a4d24dab 100644 --- a/resources/tools/import_beacons.py +++ b/resources/tools/import_beacons.py @@ -21,18 +21,19 @@ beacons = { """ import argparse -from contextlib import contextmanager import dataclasses import gettext +import json import logging import os -from pathlib import Path import textwrap +from contextlib import contextmanager +from pathlib import Path from typing import Dict, Iterable, Union import lupa -from game.missiongenerator.beacons import Beacon, BeaconType, BEACONS_RESOURCE_PATH +from game.missiongenerator.beacons import BEACONS_RESOURCE_PATH, Beacon, BeaconType THIS_DIR = Path(__file__).parent.resolve() SRC_DIR = THIS_DIR.parents[1] @@ -59,7 +60,7 @@ def convert_lua_frequency(raw: Union[float, int]) -> int: return raw -def beacons_from_terrain(dcs_path: Path, path: Path) -> Iterable[Beacon]: +def beacons_from_terrain(dcs_path: Path, path: Path) -> Iterable[tuple[str, Beacon]]: logging.info(f"Loading terrain data from {path}") # TODO: Fix case-sensitive issues. # The beacons.lua file differs by case in some terrains. Will need to be @@ -133,7 +134,7 @@ def beacons_from_terrain(dcs_path: Path, path: Path) -> Iterable[Beacon]: ) beacon_type = beacon_types_map[beacon_type_lua] - yield Beacon( + yield beacon["beaconId"], Beacon( beacon["display_name"], beacon["callsign"], beacon_type, @@ -161,12 +162,13 @@ class Importer: beacons = beacons_from_terrain(self.dcs_path, terrain) self.export_beacons(terrain.name, beacons) - def export_beacons(self, terrain: str, beacons: Iterable[Beacon]) -> None: + def export_beacons( + self, terrain: str, beacons: Iterable[tuple[str, Beacon]] + ) -> None: terrain_py_path = self.export_dir / f"{terrain.lower()}.json" - import json terrain_py_path.write_text( - json.dumps([dataclasses.asdict(b) for b in beacons], indent=True) + json.dumps({bid: dataclasses.asdict(b) for bid, b in beacons}, indent=True) )