mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Added moddable campaigns through json files.
This commit is contained in:
parent
9101dae38a
commit
71f77dd8fb
@ -85,10 +85,10 @@ def load_icons():
|
||||
ICONS["Hangar"] = QPixmap("./resources/ui/misc/hangar.png")
|
||||
|
||||
ICONS["Terrain_Caucasus"] = QPixmap("./resources/ui/terrain_caucasus.gif")
|
||||
ICONS["Terrain_Persian_Gulf"] = QPixmap("./resources/ui/terrain_pg.gif")
|
||||
ICONS["Terrain_PersianGulf"] = QPixmap("./resources/ui/terrain_pg.gif")
|
||||
ICONS["Terrain_Nevada"] = QPixmap("./resources/ui/terrain_nevada.gif")
|
||||
ICONS["Terrain_Normandy"] = QPixmap("./resources/ui/terrain_normandy.gif")
|
||||
ICONS["Terrain_Channel"] = QPixmap("./resources/ui/terrain_channel.gif")
|
||||
ICONS["Terrain_TheChannel"] = QPixmap("./resources/ui/terrain_channel.gif")
|
||||
ICONS["Terrain_Syria"] = QPixmap("./resources/ui/terrain_syria.gif")
|
||||
|
||||
ICONS["Dawn"] = QPixmap("./resources/ui/daytime/dawn.png")
|
||||
|
||||
@ -1,41 +1,38 @@
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
|
||||
from PySide2 import QtGui
|
||||
from PySide2.QtCore import QSize, QItemSelectionModel
|
||||
from PySide2.QtGui import QStandardItemModel, QStandardItem
|
||||
from PySide2.QtWidgets import QListView, QAbstractItemView
|
||||
|
||||
from theater import caucasus, nevada, persiangulf, normandy, thechannel, syria
|
||||
from theater import caucasus, nevada, persiangulf, normandy, thechannel, syria, ConflictTheater
|
||||
import qt_ui.uiconstants as CONST
|
||||
|
||||
CAMPAIGNS = [
|
||||
("Caucasus - Western Georgia", caucasus.WesternGeorgia, "Terrain_Caucasus"),
|
||||
("Caucasus - Russia Small", caucasus.RussiaSmall, "Terrain_Caucasus"),
|
||||
("Caucasus - North Caucasus", caucasus.NorthCaucasus, "Terrain_Caucasus"),
|
||||
("Caucasus - Full Map", caucasus.CaucasusTheater, "Terrain_Caucasus"),
|
||||
("Nevada - North Nevada", nevada.NevadaTheater, "Terrain_Nevada"),
|
||||
("Persian Gulf - Invasion of Iran", persiangulf.IranianCampaign, "Terrain_Persian_Gulf"),
|
||||
("Persian Gulf - Invasion of Iran [Lite]", persiangulf.IranInvasionLite, "Terrain_Persian_Gulf"),
|
||||
("Persian Gulf - Emirates", persiangulf.Emirates, "Terrain_Persian_Gulf"),
|
||||
("Persian Gulf - Desert War", persiangulf.DesertWar, "Terrain_Persian_Gulf"),
|
||||
("Persian Gulf - Full Map", persiangulf.PersianGulfTheater, "Terrain_Persian_Gulf"),
|
||||
|
||||
("Syria - Golan heights battle", syria.GolanHeights, "Terrain_Syria"),
|
||||
("Syria - Invasion from Turkey", syria.TurkishInvasion, "Terrain_Syria"),
|
||||
("Syria - Syrian Civil War", syria.SyrianCivilWar, "Terrain_Syria"),
|
||||
("Syria - Inherent Resolve", syria.InherentResolve, "Terrain_Syria"),
|
||||
("Syria - Full Map", syria.SyriaFullMap, "Terrain_Syria"),
|
||||
|
||||
("Normandy - Normandy", normandy.NormandyTheater, "Terrain_Normandy"),
|
||||
("Normandy - Normandy Small", normandy.NormandySmall, "Terrain_Normandy"),
|
||||
("The Channel - Battle of Britain", thechannel.BattleOfBritain, "Terrain_Channel"),
|
||||
("The Channel - Dunkirk", thechannel.Dunkirk, "Terrain_Channel"),
|
||||
]
|
||||
CAMPAIGN_DIR = ".\\resources\\campaigns"
|
||||
CAMPAIGNS = []
|
||||
|
||||
# Load the campaigns files from the directory
|
||||
campaign_files = os.listdir(CAMPAIGN_DIR)
|
||||
for f in campaign_files:
|
||||
try:
|
||||
ff = os.path.join(CAMPAIGN_DIR, f)
|
||||
with open(ff, "r") as campaign_data:
|
||||
data = json.load(campaign_data)
|
||||
choice = (data["name"], ff, "Terrain_" + data["theater"].replace(" ", ""))
|
||||
logging.info("Loaded campaign : " + data["name"])
|
||||
CAMPAIGNS.append(choice)
|
||||
ConflictTheater.from_file(choice[1])
|
||||
logging.info("Loaded campaign :" + ff)
|
||||
except Exception as e:
|
||||
logging.info("Unable to load campaign :" + f)
|
||||
|
||||
class QCampaignItem(QStandardItem):
|
||||
|
||||
def __init__(self, text, theater, icon):
|
||||
def __init__(self, text, filename, icon):
|
||||
super(QCampaignItem, self).__init__()
|
||||
self.theater = theater
|
||||
self.filename = filename
|
||||
self.setIcon(QtGui.QIcon(CONST.ICONS[icon]))
|
||||
self.setEditable(False)
|
||||
self.setText(text)
|
||||
|
||||
@ -44,7 +44,8 @@ class NewGameWizard(QtWidgets.QWizard):
|
||||
selectedCampaign = self.field("selectedCampaign")
|
||||
if selectedCampaign is None:
|
||||
selectedCampaign = CAMPAIGNS[0]
|
||||
conflictTheater = selectedCampaign[1]()
|
||||
|
||||
conflictTheater = ConflictTheater.from_file(selectedCampaign[1])
|
||||
|
||||
timePeriod = db.TIME_PERIODS[list(db.TIME_PERIODS.keys())[self.field("timePeriod")]]
|
||||
midGame = self.field("midGame")
|
||||
@ -242,35 +243,6 @@ class TheaterConfiguration(QtWidgets.QWizardPage):
|
||||
self.setPixmap(QtWidgets.QWizard.WatermarkPixmap,
|
||||
QtGui.QPixmap('./resources/ui/wizard/watermark3.png'))
|
||||
|
||||
# Terrain selection
|
||||
terrainGroup = QtWidgets.QGroupBox("Terrain")
|
||||
terrainCaucasusSmall = QtWidgets.QRadioButton("Caucasus - Western Georgia")
|
||||
terrainCaucasusSmall.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Caucasus"]))
|
||||
terrainRussia = QtWidgets.QRadioButton("Caucasus - Russia Small")
|
||||
terrainRussia.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Caucasus"]))
|
||||
terrainCaucasus = QtWidgets.QRadioButton("Caucasus - Full map [NOT RECOMMENDED]")
|
||||
terrainCaucasus.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Caucasus"]))
|
||||
terrainCaucasusNorth = QtWidgets.QRadioButton("Caucasus - North")
|
||||
terrainCaucasusNorth.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Caucasus"]))
|
||||
|
||||
terrainPg = QtWidgets.QRadioButton("Persian Gulf - Full Map [NOT RECOMMENDED]")
|
||||
terrainPg.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Persian_Gulf"]))
|
||||
terrainIran = QtWidgets.QRadioButton("Persian Gulf - Invasion of Iran")
|
||||
terrainIran.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Persian_Gulf"]))
|
||||
terrainEmirates = QtWidgets.QRadioButton("Persian Gulf - Emirates")
|
||||
terrainEmirates.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Persian_Gulf"]))
|
||||
terrainNttr = QtWidgets.QRadioButton("Nevada - North Nevada")
|
||||
terrainNttr.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Nevada"]))
|
||||
terrainNormandy = QtWidgets.QRadioButton("Normandy")
|
||||
terrainNormandy.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Normandy"]))
|
||||
terrainNormandySmall = QtWidgets.QRadioButton("Normandy Small")
|
||||
terrainNormandySmall.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Normandy"]))
|
||||
terrainChannel = QtWidgets.QRadioButton("The Channel : Start in Dunkirk")
|
||||
terrainChannel.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Channel"]))
|
||||
terrainChannelComplete = QtWidgets.QRadioButton("The Channel : Battle of Britain")
|
||||
terrainChannelComplete.setIcon(QtGui.QIcon(CONST.ICONS["Terrain_Channel"]))
|
||||
terrainCaucasusSmall.setChecked(True)
|
||||
|
||||
# List of campaigns
|
||||
campaignList = QCampaignList()
|
||||
self.registerField("selectedCampaign", campaignList)
|
||||
@ -284,8 +256,6 @@ class TheaterConfiguration(QtWidgets.QWizardPage):
|
||||
campaignList.selectionModel().selectionChanged.connect(on_campaign_selected)
|
||||
on_campaign_selected()
|
||||
|
||||
|
||||
|
||||
# Campaign settings
|
||||
mapSettingsGroup = QtWidgets.QGroupBox("Map Settings")
|
||||
invertMap = QtWidgets.QCheckBox()
|
||||
|
||||
@ -1,212 +0,0 @@
|
||||
from dcs import mapping
|
||||
from dcs.terrain import caucasus
|
||||
|
||||
from .conflicttheater import *
|
||||
from .landmap import *
|
||||
|
||||
|
||||
class CaucasusTheater(ConflictTheater):
|
||||
terrain = caucasus.Caucasus()
|
||||
overview_image = "caumap.gif"
|
||||
reference_points = {(-317948.32727306, 635639.37385346): (278.5*4, 319*4),
|
||||
(-355692.3067714, 617269.96285781): (263*4, 352*4), }
|
||||
|
||||
landmap = load_landmap("resources\\caulandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 9),
|
||||
"day": (9, 18),
|
||||
"dusk": (18, 20),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
|
||||
|
||||
def __init__(self, load_ground_objects=True):
|
||||
super(CaucasusTheater, self).__init__()
|
||||
|
||||
self.vaziani = ControlPoint.from_airport(caucasus.Vaziani, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.kutaisi = ControlPoint.from_airport(caucasus.Kutaisi, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.senaki = ControlPoint.from_airport(caucasus.Senaki_Kolkhi, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.kobuleti = ControlPoint.from_airport(caucasus.Kobuleti, COAST_A_E, SIZE_SMALL, 1.1)
|
||||
self.batumi = ControlPoint.from_airport(caucasus.Batumi, COAST_DL_E, SIZE_SMALL, 1.3)
|
||||
self.sukhumi = ControlPoint.from_airport(caucasus.Sukhumi_Babushara, COAST_DR_E, SIZE_REGULAR, 1.2)
|
||||
self.gudauta = ControlPoint.from_airport(caucasus.Gudauta, COAST_DR_E, SIZE_REGULAR, 1.2)
|
||||
self.sochi = ControlPoint.from_airport(caucasus.Sochi_Adler, COAST_DR_E, SIZE_BIG, IMPORTANCE_HIGH)
|
||||
self.gelendzhik = ControlPoint.from_airport(caucasus.Gelendzhik, COAST_DR_E, SIZE_BIG, 1.1)
|
||||
self.maykop = ControlPoint.from_airport(caucasus.Maykop_Khanskaya, LAND, SIZE_LARGE, IMPORTANCE_HIGH)
|
||||
self.krasnodar = ControlPoint.from_airport(caucasus.Krasnodar_Center, LAND, SIZE_LARGE, IMPORTANCE_HIGH)
|
||||
self.krymsk = ControlPoint.from_airport(caucasus.Krymsk, LAND, SIZE_LARGE, 1.2)
|
||||
self.anapa = ControlPoint.from_airport(caucasus.Anapa_Vityazevo, LAND, SIZE_LARGE, IMPORTANCE_HIGH)
|
||||
self.beslan = ControlPoint.from_airport(caucasus.Beslan, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.nalchik = ControlPoint.from_airport(caucasus.Nalchik, LAND, SIZE_REGULAR, 1.1)
|
||||
self.mineralnye = ControlPoint.from_airport(caucasus.Mineralnye_Vody, LAND, SIZE_BIG, 1.3)
|
||||
self.mozdok = ControlPoint.from_airport(caucasus.Mozdok, LAND, SIZE_BIG, 1.1)
|
||||
|
||||
self.carrier_1 = ControlPoint.carrier("Carrier", mapping.Point(-305810.6875, 406399.1875), 1001)
|
||||
self.lha = ControlPoint.lha("Tarawa", mapping.Point(-326050.6875, 519452.1875), 1002)
|
||||
|
||||
self.vaziani.frontline_offset = 0.5
|
||||
self.vaziani.base.strength = 1
|
||||
|
||||
self.add_controlpoint(self.vaziani, connected_to=[self.kutaisi, self.beslan])
|
||||
self.add_controlpoint(self.beslan, connected_to=[self.vaziani, self.mozdok, self.nalchik])
|
||||
self.add_controlpoint(self.nalchik, connected_to=[self.beslan, self.mozdok, self.mineralnye])
|
||||
self.add_controlpoint(self.mozdok, connected_to=[self.nalchik, self.beslan, self.mineralnye])
|
||||
self.add_controlpoint(self.mineralnye, connected_to=[self.nalchik, self.mozdok, self.maykop])
|
||||
self.add_controlpoint(self.maykop, connected_to=[self.mineralnye, self.krasnodar])
|
||||
|
||||
self.add_controlpoint(self.kutaisi, connected_to=[self.vaziani, self.senaki])
|
||||
self.add_controlpoint(self.senaki, connected_to=[self.kobuleti, self.sukhumi, self.kutaisi])
|
||||
self.add_controlpoint(self.kobuleti, connected_to=[self.batumi, self.senaki])
|
||||
self.add_controlpoint(self.batumi, connected_to=[self.kobuleti])
|
||||
self.add_controlpoint(self.sukhumi, connected_to=[self.gudauta, self.senaki])
|
||||
self.add_controlpoint(self.gudauta, connected_to=[self.sochi, self.sukhumi])
|
||||
self.add_controlpoint(self.sochi, connected_to=[self.gudauta, self.gelendzhik])
|
||||
|
||||
self.add_controlpoint(self.gelendzhik, connected_to=[self.sochi, self.krymsk])
|
||||
self.add_controlpoint(self.krymsk, connected_to=[self.anapa, self.krasnodar, self.gelendzhik])
|
||||
self.add_controlpoint(self.anapa, connected_to=[self.krymsk])
|
||||
self.add_controlpoint(self.krasnodar, connected_to=[self.krymsk, self.maykop])
|
||||
|
||||
self.add_controlpoint(self.carrier_1)
|
||||
self.add_controlpoint(self.lha)
|
||||
|
||||
self.carrier_1.captured = True
|
||||
self.carrier_1.captured_invert = True
|
||||
self.lha.captured = True
|
||||
self.lha.captured_invert = True
|
||||
|
||||
self.batumi.captured = True
|
||||
self.anapa.captured_invert = True
|
||||
|
||||
|
||||
"""
|
||||
A smaller version of the caucasus map in western georgia.
|
||||
Ideal for smaller scale campaign
|
||||
"""
|
||||
class WesternGeorgia(ConflictTheater):
|
||||
|
||||
terrain = caucasus.Caucasus()
|
||||
overview_image = "caumap.gif"
|
||||
reference_points = {(-317948.32727306, 635639.37385346): (278.5 * 4, 319 * 4),
|
||||
(-355692.3067714, 617269.96285781): (263 * 4, 352 * 4), }
|
||||
landmap = load_landmap("resources\\caulandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 9),
|
||||
"day": (9, 18),
|
||||
"dusk": (18, 20),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
|
||||
def __init__(self, load_ground_objects=True):
|
||||
super(WesternGeorgia, self).__init__()
|
||||
|
||||
self.kobuleti = ControlPoint.from_airport(caucasus.Kobuleti, COAST_A_E, SIZE_SMALL, 1.1)
|
||||
self.senaki = ControlPoint.from_airport(caucasus.Senaki_Kolkhi, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.kutaisi = ControlPoint.from_airport(caucasus.Kutaisi, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.sukhumi = ControlPoint.from_airport(caucasus.Sukhumi_Babushara, COAST_DR_E, SIZE_REGULAR, 1.2)
|
||||
self.gudauta = ControlPoint.from_airport(caucasus.Gudauta, COAST_DR_E, SIZE_REGULAR, 1.2)
|
||||
self.sochi = ControlPoint.from_airport(caucasus.Sochi_Adler, COAST_DR_E, SIZE_BIG, IMPORTANCE_HIGH)
|
||||
self.carrier_1 = ControlPoint.carrier("Carrier", mapping.Point(-285810.6875, 496399.1875), 1001)
|
||||
self.lha = ControlPoint.lha("Tarawa", mapping.Point(-326050.6875, 519452.1875), 1002)
|
||||
|
||||
self.add_controlpoint(self.kutaisi, connected_to=[self.senaki])
|
||||
self.add_controlpoint(self.senaki, connected_to=[self.kobuleti, self.sukhumi, self.kutaisi])
|
||||
self.add_controlpoint(self.kobuleti, connected_to=[self.senaki])
|
||||
self.add_controlpoint(self.sukhumi, connected_to=[self.gudauta, self.senaki])
|
||||
self.add_controlpoint(self.gudauta, connected_to=[self.sochi, self.sukhumi])
|
||||
self.add_controlpoint(self.sochi, connected_to=[self.gudauta])
|
||||
self.add_controlpoint(self.carrier_1)
|
||||
self.add_controlpoint(self.lha)
|
||||
|
||||
self.carrier_1.captured = True
|
||||
self.carrier_1.captured_invert = True
|
||||
self.lha.captured = True
|
||||
self.lha.captured_invert = True
|
||||
self.kobuleti.captured = True
|
||||
self.sochi.captured_invert = True
|
||||
|
||||
|
||||
"""
|
||||
Georgian Theather [inverted starting position]
|
||||
Ideal for smaller scale campaign
|
||||
"""
|
||||
class RussiaSmall(ConflictTheater):
|
||||
terrain = caucasus.Caucasus()
|
||||
overview_image = "caumap.gif"
|
||||
reference_points = {(-317948.32727306, 635639.37385346): (278.5 * 4, 319 * 4),
|
||||
(-355692.3067714, 617269.96285781): (263 * 4, 352 * 4), }
|
||||
|
||||
landmap = load_landmap("resources\\caulandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 9),
|
||||
"day": (9, 18),
|
||||
"dusk": (18, 20),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
def __init__(self, load_ground_objects=True):
|
||||
super(RussiaSmall, self).__init__()
|
||||
|
||||
self.maykop = ControlPoint.from_airport(caucasus.Maykop_Khanskaya, LAND, SIZE_LARGE, IMPORTANCE_HIGH)
|
||||
self.mineralnye = ControlPoint.from_airport(caucasus.Mineralnye_Vody, LAND, SIZE_BIG, 1.3)
|
||||
self.mozdok = ControlPoint.from_airport(caucasus.Mozdok, LAND, SIZE_BIG, 1.1)
|
||||
|
||||
self.add_controlpoint(self.mozdok, connected_to=[self.mineralnye])
|
||||
self.add_controlpoint(self.mineralnye, connected_to=[self.mozdok, self.maykop])
|
||||
self.add_controlpoint(self.maykop, connected_to=[self.mineralnye])
|
||||
|
||||
self.mozdok.captured = True
|
||||
self.maykop.captured_invert = True
|
||||
|
||||
|
||||
class NorthCaucasus(ConflictTheater):
|
||||
terrain = caucasus.Caucasus()
|
||||
overview_image = "caumap.gif"
|
||||
reference_points = {(-317948.32727306, 635639.37385346): (278.5*4, 319*4),
|
||||
(-355692.3067714, 617269.96285781): (263*4, 352*4), }
|
||||
|
||||
landmap = load_landmap("resources\\caulandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 9),
|
||||
"day": (9, 18),
|
||||
"dusk": (18, 20),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
def __init__(self, load_ground_objects=True):
|
||||
super(NorthCaucasus, self).__init__()
|
||||
|
||||
self.kutaisi = ControlPoint.from_airport(caucasus.Kutaisi, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.vaziani = ControlPoint.from_airport(caucasus.Vaziani, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.maykop = ControlPoint.from_airport(caucasus.Maykop_Khanskaya, LAND, SIZE_LARGE, IMPORTANCE_HIGH)
|
||||
self.beslan = ControlPoint.from_airport(caucasus.Beslan, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.nalchik = ControlPoint.from_airport(caucasus.Nalchik, LAND, SIZE_REGULAR, 1.1)
|
||||
self.mineralnye = ControlPoint.from_airport(caucasus.Mineralnye_Vody, LAND, SIZE_BIG, 1.3)
|
||||
self.mozdok = ControlPoint.from_airport(caucasus.Mozdok, LAND, SIZE_BIG, 1.1)
|
||||
self.carrier_1 = ControlPoint.carrier("Carrier", mapping.Point(-285810.6875, 496399.1875), 1001)
|
||||
self.lha = ControlPoint.lha("Tarawa", mapping.Point(-326050.6875, 519452.1875), 1002)
|
||||
|
||||
self.vaziani.frontline_offset = 0.5
|
||||
self.vaziani.base.strength = 1
|
||||
|
||||
self.add_controlpoint(self.kutaisi, connected_to=[self.vaziani])
|
||||
self.add_controlpoint(self.vaziani, connected_to=[self.beslan, self.kutaisi])
|
||||
self.add_controlpoint(self.beslan, connected_to=[self.vaziani, self.mozdok, self.nalchik])
|
||||
self.add_controlpoint(self.nalchik, connected_to=[self.beslan, self.mozdok, self.mineralnye])
|
||||
self.add_controlpoint(self.mozdok, connected_to=[self.nalchik, self.beslan, self.mineralnye])
|
||||
self.add_controlpoint(self.mineralnye, connected_to=[self.nalchik, self.mozdok, self.maykop])
|
||||
self.add_controlpoint(self.maykop, connected_to=[self.mineralnye])
|
||||
self.add_controlpoint(self.carrier_1, connected_to=[])
|
||||
self.add_controlpoint(self.lha, connected_to=[])
|
||||
|
||||
self.carrier_1.captured = True
|
||||
self.vaziani.captured = True
|
||||
self.kutaisi.captured = True
|
||||
|
||||
self.carrier_1.captured_invert = True
|
||||
self.maykop.captured_invert = True
|
||||
self.lha.captured = True
|
||||
self.lha.captured_invert = True
|
||||
self.mineralnye.captured_invert = True
|
||||
@ -1,10 +1,12 @@
|
||||
import json
|
||||
import typing
|
||||
|
||||
import dcs
|
||||
from dcs.mapping import Point
|
||||
from dcs.terrain import caucasus, persiangulf, nevada, normandy, thechannel, syria
|
||||
|
||||
from .controlpoint import ControlPoint
|
||||
from .landmap import poly_contains
|
||||
from .landmap import poly_contains, load_landmap
|
||||
|
||||
SIZE_TINY = 150
|
||||
SIZE_SMALL = 600
|
||||
@ -32,7 +34,7 @@ LAND = [0, 45, 90, 135, 180, 225, 270, 315, ]
|
||||
COAST_V_E = [0, 45, 90, 135, 180]
|
||||
COAST_V_W = [180, 225, 270, 315, 0]
|
||||
|
||||
COAST_A_W = [315, 0, 45, 135, 180, 225, 270]
|
||||
COAST_A_W = [315, 0, 45, 135, 180, 225, 270]
|
||||
COAST_A_E = [0, 45, 90, 135, 180, 225, 315]
|
||||
|
||||
COAST_H_N = [270, 315, 0, 45, 90]
|
||||
@ -117,4 +119,158 @@ class ConflictTheater:
|
||||
def enemy_points(self) -> typing.Collection[ControlPoint]:
|
||||
return [point for point in self.controlpoints if not point.captured]
|
||||
|
||||
def add_json_cp(self, theater, p: dict) -> ControlPoint:
|
||||
|
||||
if p["type"] == "airbase":
|
||||
|
||||
airbase = theater.terrain.airports[p["id"]].__class__
|
||||
|
||||
if "radials" in p.keys():
|
||||
radials = p["radials"]
|
||||
else:
|
||||
radials = LAND
|
||||
|
||||
if "size" in p.keys():
|
||||
size = p["size"]
|
||||
else:
|
||||
size = SIZE_REGULAR
|
||||
|
||||
if "importance" in p.keys():
|
||||
importance = p["importance"]
|
||||
else:
|
||||
importance = IMPORTANCE_MEDIUM
|
||||
|
||||
cp = ControlPoint.from_airport(airbase, radials, size, importance)
|
||||
elif p["type"] == "carrier":
|
||||
cp = ControlPoint.carrier("carrier", Point(p["x"], p["y"]), p["id"])
|
||||
else:
|
||||
cp = ControlPoint.lha("lha", Point(p["x"], p["y"]), p["id"])
|
||||
|
||||
if "captured_invert" in p.keys():
|
||||
cp.captured_invert = p["captured_invert"]
|
||||
else:
|
||||
cp.captured_invert = False
|
||||
|
||||
return cp
|
||||
|
||||
@staticmethod
|
||||
def from_file(filename):
|
||||
with open(filename, "r") as content:
|
||||
json_data = json.loads(content.read())
|
||||
|
||||
|
||||
theaters = {
|
||||
"Caucasus": CaucasusTheater,
|
||||
"Nevada": NevadaTheater,
|
||||
"Persian Gulf": PersianGulfTheater,
|
||||
"Normandy": NormandyTheater,
|
||||
"The Channel": TheChannelTheater,
|
||||
"Syria": SyriaTheater,
|
||||
}
|
||||
theater = theaters[json_data["theater"]]
|
||||
t = theater()
|
||||
cps = {}
|
||||
|
||||
for p in json_data["player_points"]:
|
||||
cp = t.add_json_cp(theater, p)
|
||||
cp.captured = True
|
||||
cps[p["id"]] = cp
|
||||
t.add_controlpoint(cp)
|
||||
|
||||
for p in json_data["enemy_points"]:
|
||||
cp = t.add_json_cp(theater, p)
|
||||
cps[p["id"]] = cp
|
||||
t.add_controlpoint(cp)
|
||||
|
||||
for l in json_data["links"]:
|
||||
cps[l[0]].connect(cps[l[1]])
|
||||
cps[l[1]].connect(cps[l[0]])
|
||||
|
||||
return t
|
||||
|
||||
|
||||
class CaucasusTheater(ConflictTheater):
|
||||
terrain = caucasus.Caucasus()
|
||||
overview_image = "caumap.gif"
|
||||
reference_points = {(-317948.32727306, 635639.37385346): (278.5 * 4, 319 * 4),
|
||||
(-355692.3067714, 617269.96285781): (263 * 4, 352 * 4), }
|
||||
|
||||
landmap = load_landmap("resources\\caulandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 9),
|
||||
"day": (9, 18),
|
||||
"dusk": (18, 20),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
|
||||
class PersianGulfTheater(ConflictTheater):
|
||||
terrain = dcs.terrain.PersianGulf()
|
||||
overview_image = "persiangulf.gif"
|
||||
reference_points = {
|
||||
(persiangulf.Shiraz_International_Airport.position.x, persiangulf.Shiraz_International_Airport.position.y): (
|
||||
772, -1970),
|
||||
(persiangulf.Liwa_Airbase.position.x, persiangulf.Liwa_Airbase.position.y): (1188, 78), }
|
||||
landmap = load_landmap("resources\\gulflandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 8),
|
||||
"day": (8, 16),
|
||||
"dusk": (16, 18),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
|
||||
class NevadaTheater(ConflictTheater):
|
||||
terrain = dcs.terrain.Nevada()
|
||||
overview_image = "nevada.gif"
|
||||
reference_points = {(nevada.Mina_Airport_3Q0.position.x, nevada.Mina_Airport_3Q0.position.y): (45 * 2, -360 * 2),
|
||||
(nevada.Laughlin_Airport.position.x, nevada.Laughlin_Airport.position.y): (440 * 2, 80 * 2), }
|
||||
landmap = load_landmap("resources\\nev_landmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (4, 6),
|
||||
"day": (6, 17),
|
||||
"dusk": (17, 18),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
|
||||
class NormandyTheater(ConflictTheater):
|
||||
terrain = dcs.terrain.Normandy()
|
||||
overview_image = "normandy.gif"
|
||||
reference_points = {(normandy.Needs_Oar_Point.position.x, normandy.Needs_Oar_Point.position.y): (-170, -1000),
|
||||
(normandy.Evreux.position.x, normandy.Evreux.position.y): (2020, 500)}
|
||||
landmap = load_landmap("resources\\normandylandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 8),
|
||||
"day": (10, 17),
|
||||
"dusk": (17, 18),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
|
||||
class TheChannelTheater(ConflictTheater):
|
||||
terrain = dcs.terrain.TheChannel()
|
||||
overview_image = "thechannel.gif"
|
||||
reference_points = {(thechannel.Abbeville_Drucat.position.x, thechannel.Abbeville_Drucat.position.y): (2400, 4100),
|
||||
(thechannel.Detling.position.x, thechannel.Detling.position.y): (1100, 2000)}
|
||||
landmap = load_landmap("resources\\channellandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 8),
|
||||
"day": (10, 17),
|
||||
"dusk": (17, 18),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
|
||||
class SyriaTheater(ConflictTheater):
|
||||
terrain = dcs.terrain.Syria()
|
||||
overview_image = "syria.gif"
|
||||
reference_points = {(syria.Eyn_Shemer.position.x, syria.Eyn_Shemer.position.y): (1300, 1380),
|
||||
(syria.Tabqa.position.x, syria.Tabqa.position.y): (2060, 570)}
|
||||
landmap = load_landmap("resources\\syrialandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 8),
|
||||
"day": (8, 16),
|
||||
"dusk": (16, 18),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
@ -1,42 +0,0 @@
|
||||
from dcs.terrain import nevada
|
||||
from dcs import mapping
|
||||
|
||||
from .landmap import *
|
||||
from .conflicttheater import *
|
||||
from .base import *
|
||||
|
||||
|
||||
class NevadaTheater(ConflictTheater):
|
||||
terrain = dcs.terrain.Nevada()
|
||||
overview_image = "nevada.gif"
|
||||
reference_points = {(nevada.Mina_Airport_3Q0.position.x, nevada.Mina_Airport_3Q0.position.y): (45*2, -360*2),
|
||||
(nevada.Laughlin_Airport.position.x, nevada.Laughlin_Airport.position.y): (440*2, 80*2), }
|
||||
landmap = load_landmap("resources\\nev_landmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (4, 6),
|
||||
"day": (6, 17),
|
||||
"dusk": (17, 18),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
super(NevadaTheater, self).__init__()
|
||||
|
||||
self.tonopah_test_range = ControlPoint.from_airport(nevada.Tonopah_Test_Range_Airfield, LAND, SIZE_SMALL,IMPORTANCE_LOW)
|
||||
self.lincoln_conty = ControlPoint.from_airport(nevada.Lincoln_County, LAND, SIZE_SMALL, 1.2)
|
||||
self.groom_lake = ControlPoint.from_airport(nevada.Groom_Lake_AFB, LAND, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.mesquite = ControlPoint.from_airport(nevada.Mesquite, LAND, SIZE_REGULAR, 1.3)
|
||||
self.creech = ControlPoint.from_airport(nevada.Creech_AFB, LAND, SIZE_BIG, IMPORTANCE_HIGH)
|
||||
self.nellis = ControlPoint.from_airport(nevada.Nellis_AFB, LAND, SIZE_BIG, IMPORTANCE_HIGH)
|
||||
|
||||
self.add_controlpoint(self.tonopah_test_range, connected_to=[self.lincoln_conty, self.groom_lake])
|
||||
self.add_controlpoint(self.lincoln_conty, connected_to=[self.tonopah_test_range, self.mesquite])
|
||||
self.add_controlpoint(self.groom_lake, connected_to=[self.mesquite, self.creech, self.tonopah_test_range])
|
||||
|
||||
self.add_controlpoint(self.creech, connected_to=[self.groom_lake, self.nellis])
|
||||
self.add_controlpoint(self.mesquite, connected_to=[self.lincoln_conty, self.groom_lake])
|
||||
self.add_controlpoint(self.nellis, connected_to=[self.creech])
|
||||
|
||||
self.nellis.captured = True
|
||||
self.tonopah_test_range.captured_invert = True
|
||||
|
||||
@ -1,83 +0,0 @@
|
||||
from dcs.terrain import normandy
|
||||
|
||||
from .conflicttheater import *
|
||||
from .landmap import *
|
||||
|
||||
|
||||
class NormandyTheater(ConflictTheater):
|
||||
terrain = dcs.terrain.Normandy()
|
||||
overview_image = "normandy.gif"
|
||||
reference_points = {(normandy.Needs_Oar_Point.position.x, normandy.Needs_Oar_Point.position.y): (-170, -1000),
|
||||
(normandy.Evreux.position.x, normandy.Evreux.position.y): (2020, 500)}
|
||||
landmap = load_landmap("resources\\normandylandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 8),
|
||||
"day": (10, 17),
|
||||
"dusk": (17, 18),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
super(NormandyTheater, self).__init__()
|
||||
|
||||
self.needOarPoint = ControlPoint.from_airport(normandy.Needs_Oar_Point, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.chailey = ControlPoint.from_airport(normandy.Chailey, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
|
||||
self.deuxjumeaux = ControlPoint.from_airport(normandy.Deux_Jumeaux, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.lignerolles = ControlPoint.from_airport(normandy.Lignerolles, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.carpiquet = ControlPoint.from_airport(normandy.Carpiquet, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.lessay = ControlPoint.from_airport(normandy.Lessay, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.maupertus = ControlPoint.from_airport(normandy.Maupertus, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.evreux = ControlPoint.from_airport(normandy.Evreux, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
|
||||
self.add_controlpoint(self.chailey, connected_to=[self.needOarPoint])
|
||||
self.add_controlpoint(self.needOarPoint, connected_to=[self.chailey])
|
||||
|
||||
self.add_controlpoint(self.deuxjumeaux, connected_to=[self.lignerolles])
|
||||
self.add_controlpoint(self.lignerolles, connected_to=[self.deuxjumeaux, self.lessay, self.carpiquet])
|
||||
self.add_controlpoint(self.lessay, connected_to=[self.lignerolles, self.maupertus])
|
||||
self.add_controlpoint(self.carpiquet, connected_to=[self.lignerolles, self.evreux])
|
||||
self.add_controlpoint(self.maupertus, connected_to=[self.lessay])
|
||||
self.add_controlpoint(self.evreux, connected_to=[self.carpiquet])
|
||||
|
||||
self.deuxjumeaux.captured = True
|
||||
self.chailey.captured = True
|
||||
self.needOarPoint.captured = True
|
||||
|
||||
self.evreux.captured_invert = True
|
||||
|
||||
|
||||
class NormandySmall(ConflictTheater):
|
||||
terrain = dcs.terrain.Normandy()
|
||||
overview_image = "normandy.gif"
|
||||
reference_points = {(normandy.Needs_Oar_Point.position.x, normandy.Needs_Oar_Point.position.y): (-170, -1000),
|
||||
(normandy.Evreux.position.x, normandy.Evreux.position.y): (2020, 500)}
|
||||
landmap = load_landmap("resources\\normandylandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 8),
|
||||
"day": (10, 17),
|
||||
"dusk": (17, 18),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
super(NormandySmall, self).__init__()
|
||||
|
||||
self.needOarPoint = ControlPoint.from_airport(normandy.Needs_Oar_Point, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
|
||||
self.deuxjumeaux = ControlPoint.from_airport(normandy.Deux_Jumeaux, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.lignerolles = ControlPoint.from_airport(normandy.Lignerolles, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.carpiquet = ControlPoint.from_airport(normandy.Carpiquet, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.evreux = ControlPoint.from_airport(normandy.Evreux, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
|
||||
self.add_controlpoint(self.needOarPoint, connected_to=[self.needOarPoint])
|
||||
|
||||
self.add_controlpoint(self.deuxjumeaux, connected_to=[self.lignerolles])
|
||||
self.add_controlpoint(self.lignerolles, connected_to=[self.deuxjumeaux, self.carpiquet])
|
||||
self.add_controlpoint(self.carpiquet, connected_to=[self.lignerolles, self.evreux])
|
||||
self.add_controlpoint(self.evreux, connected_to=[self.carpiquet])
|
||||
|
||||
self.deuxjumeaux.captured = True
|
||||
self.needOarPoint.captured = True
|
||||
|
||||
self.evreux.captured_invert = True
|
||||
@ -1,298 +0,0 @@
|
||||
from dcs.terrain import persiangulf
|
||||
from dcs import mapping
|
||||
|
||||
from .conflicttheater import *
|
||||
from .base import *
|
||||
from .landmap import load_landmap
|
||||
|
||||
|
||||
class PersianGulfTheater(ConflictTheater):
|
||||
terrain = dcs.terrain.PersianGulf()
|
||||
overview_image = "persiangulf.gif"
|
||||
reference_points = {
|
||||
(persiangulf.Shiraz_International_Airport.position.x, persiangulf.Shiraz_International_Airport.position.y): (772, -1970),
|
||||
(persiangulf.Liwa_Airbase.position.x, persiangulf.Liwa_Airbase.position.y): (1188, 78), }
|
||||
landmap = load_landmap("resources\\gulflandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 8),
|
||||
"day": (8, 16),
|
||||
"dusk": (16, 18),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
|
||||
def __init__(self):
|
||||
super(PersianGulfTheater, self).__init__()
|
||||
|
||||
self.al_dhafra = ControlPoint.from_airport(persiangulf.Al_Dhafra_AB, LAND, SIZE_BIG, IMPORTANCE_LOW)
|
||||
self.al_maktoum = ControlPoint.from_airport(persiangulf.Al_Maktoum_Intl, LAND, SIZE_BIG, IMPORTANCE_LOW)
|
||||
self.al_minhad = ControlPoint.from_airport(persiangulf.Al_Minhad_AB, LAND, SIZE_REGULAR, 1.1)
|
||||
self.sir_abu_nuayr = ControlPoint.from_airport(persiangulf.Sir_Abu_Nuayr, [0, 330], SIZE_SMALL, 1.1,has_frontline=False)
|
||||
self.dubai = ControlPoint.from_airport(persiangulf.Dubai_Intl, COAST_DL_E, SIZE_LARGE, IMPORTANCE_MEDIUM)
|
||||
self.sharjah = ControlPoint.from_airport(persiangulf.Sharjah_Intl, LAND, SIZE_BIG, 1.0)
|
||||
self.fujairah = ControlPoint.from_airport(persiangulf.Fujairah_Intl, COAST_V_W, SIZE_REGULAR, 1.0)
|
||||
self.khasab = ControlPoint.from_airport(persiangulf.Khasab, LAND, SIZE_SMALL, IMPORTANCE_MEDIUM)
|
||||
self.sirri = ControlPoint.from_airport(persiangulf.Sirri_Island, COAST_DL_W, SIZE_REGULAR, IMPORTANCE_LOW,has_frontline=False)
|
||||
self.abu_musa = ControlPoint.from_airport(persiangulf.Abu_Musa_Island_Airport, LAND, SIZE_SMALL,IMPORTANCE_MEDIUM, has_frontline=False)
|
||||
self.tunb_island = ControlPoint.from_airport(persiangulf.Tunb_Island_AFB, [0, 270, 330], SIZE_SMALL,IMPORTANCE_MEDIUM, has_frontline=False)
|
||||
self.tunb_kochak = ControlPoint.from_airport(persiangulf.Tunb_Kochak, [135, 180], SIZE_SMALL, 1.1,has_frontline=False)
|
||||
self.bandar_lengeh = ControlPoint.from_airport(persiangulf.Bandar_Lengeh, [270, 315, 0, 45], SIZE_SMALL,IMPORTANCE_HIGH)
|
||||
self.qeshm = ControlPoint.from_airport(persiangulf.Qeshm_Island, [270, 315, 0, 45, 90, 135, 180], SIZE_SMALL,1.1, has_frontline=False)
|
||||
self.havadarya = ControlPoint.from_airport(persiangulf.Havadarya, COAST_DL_W, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.bandar_abbas = ControlPoint.from_airport(persiangulf.Bandar_Abbas_Intl, LAND, SIZE_BIG, IMPORTANCE_HIGH)
|
||||
self.lar = ControlPoint.from_airport(persiangulf.Lar_Airbase, LAND, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.shiraz = ControlPoint.from_airport(persiangulf.Shiraz_International_Airport, LAND, SIZE_BIG,IMPORTANCE_HIGH)
|
||||
self.kerman = ControlPoint.from_airport(persiangulf.Kerman_Airport, LAND, SIZE_BIG, IMPORTANCE_HIGH)
|
||||
self.ras_al_khaimah = ControlPoint.from_airport(persiangulf.Ras_Al_Khaimah, LAND, SIZE_REGULAR,IMPORTANCE_MEDIUM)
|
||||
self.al_ain = ControlPoint.from_airport(persiangulf.Al_Ain_International_Airport, LAND, SIZE_BIG,IMPORTANCE_HIGH)
|
||||
self.liwa = ControlPoint.from_airport(persiangulf.Liwa_Airbase, LAND, SIZE_BIG, IMPORTANCE_HIGH)
|
||||
self.jiroft = ControlPoint.from_airport(persiangulf.Jiroft_Airport, LAND, SIZE_BIG, IMPORTANCE_HIGH)
|
||||
self.bandar_e_jask = ControlPoint.from_airport(persiangulf.Bandar_e_Jask_airfield, LAND, SIZE_TINY,IMPORTANCE_LOW)
|
||||
self.west_carrier = ControlPoint.carrier("West carrier", Point(-69043.813952358, -159916.65947136), 1001)
|
||||
self.east_carrier = ControlPoint.carrier("East carrier", Point(59514.324335475, 28165.517980635), 1002)
|
||||
|
||||
self.add_controlpoint(self.liwa, connected_to=[self.al_dhafra])
|
||||
self.add_controlpoint(self.al_dhafra, connected_to=[self.liwa, self.al_maktoum, self.al_ain])
|
||||
self.add_controlpoint(self.al_ain, connected_to=[self.al_dhafra, self.al_maktoum])
|
||||
self.add_controlpoint(self.al_maktoum, connected_to=[self.al_dhafra, self.al_minhad, self.al_ain])
|
||||
self.add_controlpoint(self.al_minhad, connected_to=[self.al_maktoum, self.dubai])
|
||||
self.add_controlpoint(self.dubai, connected_to=[self.al_minhad, self.sharjah, self.fujairah])
|
||||
self.add_controlpoint(self.sharjah, connected_to=[self.dubai, self.ras_al_khaimah])
|
||||
self.add_controlpoint(self.ras_al_khaimah, connected_to=[self.sharjah, self.khasab])
|
||||
self.add_controlpoint(self.fujairah, connected_to=[self.dubai, self.khasab])
|
||||
self.add_controlpoint(self.khasab, connected_to=[self.ras_al_khaimah, self.fujairah])
|
||||
|
||||
self.add_controlpoint(self.sir_abu_nuayr, connected_to=[])
|
||||
self.add_controlpoint(self.sirri, connected_to=[])
|
||||
self.add_controlpoint(self.abu_musa, connected_to=[])
|
||||
self.add_controlpoint(self.tunb_kochak, connected_to=[])
|
||||
|
||||
self.add_controlpoint(self.tunb_island, connected_to=[])
|
||||
self.add_controlpoint(self.bandar_lengeh, connected_to=[self.lar, self.qeshm])
|
||||
self.add_controlpoint(self.qeshm, connected_to=[self.bandar_lengeh, self.havadarya])
|
||||
self.add_controlpoint(self.havadarya, connected_to=[self.lar, self.qeshm, self.bandar_abbas])
|
||||
self.add_controlpoint(self.bandar_abbas, connected_to=[self.havadarya, self.kerman])
|
||||
|
||||
self.add_controlpoint(self.shiraz, connected_to=[self.lar, self.kerman])
|
||||
self.add_controlpoint(self.kerman, connected_to=[self.lar, self.shiraz, self.bandar_abbas])
|
||||
self.add_controlpoint(self.lar, connected_to=[self.havadarya, self.shiraz, self.kerman])
|
||||
|
||||
self.add_controlpoint(self.west_carrier)
|
||||
self.add_controlpoint(self.east_carrier)
|
||||
|
||||
self.west_carrier.captured = True
|
||||
self.east_carrier.captured = True
|
||||
self.liwa.captured = True
|
||||
|
||||
self.west_carrier.captured_invert = True
|
||||
self.east_carrier.captured_invert = True
|
||||
self.shiraz.captured_invert = True
|
||||
|
||||
|
||||
class IranianCampaign(ConflictTheater):
|
||||
|
||||
terrain = dcs.terrain.PersianGulf()
|
||||
overview_image = "persiangulf.gif"
|
||||
reference_points = {
|
||||
(persiangulf.Shiraz_International_Airport.position.x, persiangulf.Shiraz_International_Airport.position.y): (
|
||||
772, -1970),
|
||||
(persiangulf.Liwa_Airbase.position.x, persiangulf.Liwa_Airbase.position.y): (1188, 78), }
|
||||
landmap = load_landmap("resources\\gulflandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 8),
|
||||
"day": (8, 16),
|
||||
"dusk": (16, 18),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
super(IranianCampaign, self).__init__()
|
||||
self.al_dhafra = ControlPoint.from_airport(persiangulf.Al_Dhafra_AB, LAND, SIZE_BIG, IMPORTANCE_LOW)
|
||||
self.al_maktoum = ControlPoint.from_airport(persiangulf.Al_Maktoum_Intl, LAND, SIZE_BIG, IMPORTANCE_LOW)
|
||||
self.al_minhad = ControlPoint.from_airport(persiangulf.Al_Minhad_AB, LAND, SIZE_REGULAR, 1.1)
|
||||
self.sir_abu_nuayr = ControlPoint.from_airport(persiangulf.Sir_Abu_Nuayr, [0, 330], SIZE_SMALL, 1.1,has_frontline=False)
|
||||
self.dubai = ControlPoint.from_airport(persiangulf.Dubai_Intl, COAST_DL_E, SIZE_LARGE, IMPORTANCE_MEDIUM)
|
||||
self.sharjah = ControlPoint.from_airport(persiangulf.Sharjah_Intl, LAND, SIZE_BIG, 1.0)
|
||||
self.fujairah = ControlPoint.from_airport(persiangulf.Fujairah_Intl, COAST_V_W, SIZE_REGULAR, 1.0)
|
||||
self.khasab = ControlPoint.from_airport(persiangulf.Khasab, LAND, SIZE_SMALL, IMPORTANCE_MEDIUM)
|
||||
self.sirri = ControlPoint.from_airport(persiangulf.Sirri_Island, COAST_DL_W, SIZE_REGULAR, IMPORTANCE_LOW,has_frontline=False)
|
||||
self.abu_musa = ControlPoint.from_airport(persiangulf.Abu_Musa_Island_Airport, LAND, SIZE_SMALL,IMPORTANCE_MEDIUM, has_frontline=False)
|
||||
self.tunb_island = ControlPoint.from_airport(persiangulf.Tunb_Island_AFB, [0, 270, 330], SIZE_SMALL,IMPORTANCE_MEDIUM, has_frontline=False)
|
||||
self.tunb_kochak = ControlPoint.from_airport(persiangulf.Tunb_Kochak, [135, 180], SIZE_SMALL, 1.1,has_frontline=False)
|
||||
self.bandar_lengeh = ControlPoint.from_airport(persiangulf.Bandar_Lengeh, [270, 315, 0, 45], SIZE_SMALL,IMPORTANCE_HIGH)
|
||||
self.qeshm = ControlPoint.from_airport(persiangulf.Qeshm_Island, [270, 315, 0, 45, 90, 135, 180], SIZE_SMALL,1.1, has_frontline=False)
|
||||
self.havadarya = ControlPoint.from_airport(persiangulf.Havadarya, COAST_DL_W, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.bandar_abbas = ControlPoint.from_airport(persiangulf.Bandar_Abbas_Intl, LAND, SIZE_BIG, IMPORTANCE_HIGH)
|
||||
self.lar = ControlPoint.from_airport(persiangulf.Lar_Airbase, LAND, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.shiraz = ControlPoint.from_airport(persiangulf.Shiraz_International_Airport, LAND, SIZE_BIG,IMPORTANCE_HIGH)
|
||||
self.kerman = ControlPoint.from_airport(persiangulf.Kerman_Airport, LAND, SIZE_BIG, IMPORTANCE_HIGH)
|
||||
self.jiroft = ControlPoint.from_airport(persiangulf.Jiroft_Airport, LAND, SIZE_BIG, IMPORTANCE_HIGH)
|
||||
self.bandar_e_jask = ControlPoint.from_airport(persiangulf.Bandar_e_Jask_airfield, LAND, SIZE_TINY,IMPORTANCE_LOW)
|
||||
self.ras_al_khaimah = ControlPoint.from_airport(persiangulf.Ras_Al_Khaimah, LAND, SIZE_REGULAR,IMPORTANCE_MEDIUM)
|
||||
|
||||
self.east_carrier = ControlPoint.carrier("East carrier", Point(59514.324335475, 28165.517980635), 1001)
|
||||
self.west_carrier = ControlPoint.lha("Tarawa", Point(-27500.813952358, -147000.65947136), 1002)
|
||||
|
||||
self.add_controlpoint(self.ras_al_khaimah, connected_to=[self.khasab])
|
||||
self.add_controlpoint(self.khasab, connected_to=[self.ras_al_khaimah])
|
||||
|
||||
self.add_controlpoint(self.bandar_lengeh, connected_to=[self.lar])
|
||||
self.add_controlpoint(self.qeshm, connected_to=[])
|
||||
self.add_controlpoint(self.havadarya, connected_to=[self.lar, self.bandar_abbas])
|
||||
self.add_controlpoint(self.bandar_abbas, connected_to=[self.havadarya, self.jiroft])
|
||||
|
||||
self.add_controlpoint(self.shiraz, connected_to=[self.lar, self.kerman])
|
||||
self.add_controlpoint(self.jiroft, connected_to=[self.kerman, self.bandar_abbas])
|
||||
self.add_controlpoint(self.kerman, connected_to=[self.lar, self.shiraz, self.jiroft])
|
||||
self.add_controlpoint(self.lar, connected_to=[self.bandar_lengeh, self.havadarya, self.shiraz, self.kerman])
|
||||
|
||||
self.add_controlpoint(self.east_carrier)
|
||||
self.add_controlpoint(self.west_carrier)
|
||||
|
||||
self.east_carrier.captured = True
|
||||
self.west_carrier.captured = True
|
||||
self.al_dhafra.captured = True
|
||||
self.ras_al_khaimah.captured = True
|
||||
self.khasab.captured = True
|
||||
self.qeshm.captured = True
|
||||
self.havadarya.captured = True
|
||||
self.bandar_abbas.captured = True
|
||||
|
||||
self.shiraz.captured_invert = True
|
||||
|
||||
|
||||
class Emirates(ConflictTheater):
|
||||
terrain = dcs.terrain.PersianGulf()
|
||||
overview_image = "persiangulf.gif"
|
||||
reference_points = {
|
||||
(persiangulf.Shiraz_International_Airport.position.x, persiangulf.Shiraz_International_Airport.position.y): (
|
||||
772, -1970),
|
||||
(persiangulf.Liwa_Airbase.position.x, persiangulf.Liwa_Airbase.position.y): (1188, 78), }
|
||||
landmap = load_landmap("resources\\gulflandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 8),
|
||||
"day": (8, 16),
|
||||
"dusk": (16, 18),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
|
||||
def __init__(self):
|
||||
super(Emirates, self).__init__()
|
||||
|
||||
self.al_dhafra = ControlPoint.from_airport(persiangulf.Al_Dhafra_AB, LAND, SIZE_BIG, IMPORTANCE_MEDIUM)
|
||||
self.al_maktoum = ControlPoint.from_airport(persiangulf.Al_Maktoum_Intl, LAND, SIZE_BIG, IMPORTANCE_LOW)
|
||||
self.al_minhad = ControlPoint.from_airport(persiangulf.Al_Minhad_AB, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.sharjah = ControlPoint.from_airport(persiangulf.Sharjah_Intl, LAND, SIZE_BIG, IMPORTANCE_LOW)
|
||||
self.fujairah = ControlPoint.from_airport(persiangulf.Fujairah_Intl, COAST_V_W, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.ras_al_khaimah = ControlPoint.from_airport(persiangulf.Ras_Al_Khaimah, LAND, SIZE_REGULAR,IMPORTANCE_LOW)
|
||||
self.al_ain = ControlPoint.from_airport(persiangulf.Al_Ain_International_Airport, LAND, SIZE_BIG,IMPORTANCE_LOW)
|
||||
|
||||
self.east_carrier = ControlPoint.carrier("Carrier", Point(-61770, 69039), 1001)
|
||||
self.tarawa_carrier = ControlPoint.lha("LHA Carrier", Point(-79770, 49430), 1002)
|
||||
|
||||
self.add_controlpoint(self.al_dhafra, connected_to=[self.al_ain, self.al_maktoum])
|
||||
self.add_controlpoint(self.al_ain, connected_to=[self.fujairah, self.al_maktoum, self.al_dhafra])
|
||||
self.add_controlpoint(self.al_maktoum, connected_to=[self.al_dhafra, self.al_minhad, self.al_ain])
|
||||
self.add_controlpoint(self.al_minhad, connected_to=[self.al_maktoum, self.sharjah])
|
||||
self.add_controlpoint(self.sharjah, connected_to=[self.al_minhad, self.ras_al_khaimah, self.fujairah])
|
||||
self.add_controlpoint(self.ras_al_khaimah, connected_to=[self.sharjah])
|
||||
self.add_controlpoint(self.fujairah, connected_to=[self.sharjah, self.al_ain])
|
||||
|
||||
self.add_controlpoint(self.tarawa_carrier)
|
||||
self.add_controlpoint(self.east_carrier)
|
||||
|
||||
self.tarawa_carrier.captured = True
|
||||
self.east_carrier.captured = True
|
||||
self.fujairah.captured = True
|
||||
|
||||
self.tarawa_carrier.captured_invert = True
|
||||
self.east_carrier.captured_invert = True
|
||||
self.fujairah.captured_invert = True
|
||||
|
||||
|
||||
class DesertWar(ConflictTheater):
|
||||
terrain = dcs.terrain.PersianGulf()
|
||||
overview_image = "persiangulf.gif"
|
||||
reference_points = {
|
||||
(persiangulf.Shiraz_International_Airport.position.x, persiangulf.Shiraz_International_Airport.position.y): (
|
||||
772, -1970),
|
||||
(persiangulf.Liwa_Airbase.position.x, persiangulf.Liwa_Airbase.position.y): (1188, 78), }
|
||||
landmap = load_landmap("resources\\gulflandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 8),
|
||||
"day": (8, 16),
|
||||
"dusk": (16, 18),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
|
||||
def __init__(self):
|
||||
super(DesertWar, self).__init__()
|
||||
|
||||
self.liwa = ControlPoint.from_airport(persiangulf.Liwa_Airbase, LAND, SIZE_BIG, IMPORTANCE_MEDIUM)
|
||||
self.al_maktoum = ControlPoint.from_airport(persiangulf.Al_Maktoum_Intl, LAND, SIZE_BIG, IMPORTANCE_LOW)
|
||||
self.al_minhad = ControlPoint.from_airport(persiangulf.Al_Minhad_AB, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.al_ain = ControlPoint.from_airport(persiangulf.Al_Ain_International_Airport, LAND, SIZE_BIG,IMPORTANCE_LOW)
|
||||
|
||||
self.carrier = ControlPoint.carrier("Carrier", Point(-124000, -303000), 1001)
|
||||
self.tarawa_carrier = ControlPoint.lha("LHA Carrier", Point(-164000, -257000), 1002)
|
||||
|
||||
self.add_controlpoint(self.liwa, connected_to=[self.al_ain])
|
||||
self.add_controlpoint(self.al_ain, connected_to=[self.al_maktoum, self.liwa])
|
||||
self.add_controlpoint(self.al_maktoum, connected_to=[self.al_minhad, self.al_ain])
|
||||
self.add_controlpoint(self.al_minhad, connected_to=[self.al_maktoum])
|
||||
|
||||
self.add_controlpoint(self.tarawa_carrier)
|
||||
self.add_controlpoint(self.carrier)
|
||||
|
||||
self.tarawa_carrier.captured = True
|
||||
self.carrier.captured = True
|
||||
self.liwa.captured = True
|
||||
|
||||
self.tarawa_carrier.captured_invert = True
|
||||
self.carrier.captured_invert = True
|
||||
self.al_ain.captured_invert = True
|
||||
|
||||
|
||||
class IranInvasionLite(ConflictTheater):
|
||||
terrain = dcs.terrain.PersianGulf()
|
||||
overview_image = "persiangulf.gif"
|
||||
reference_points = {
|
||||
(persiangulf.Shiraz_International_Airport.position.x, persiangulf.Shiraz_International_Airport.position.y): (
|
||||
772, -1970),
|
||||
(persiangulf.Liwa_Airbase.position.x, persiangulf.Liwa_Airbase.position.y): (1188, 78), }
|
||||
landmap = load_landmap("resources\\gulflandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 8),
|
||||
"day": (8, 16),
|
||||
"dusk": (16, 18),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
super(IranInvasionLite, self).__init__()
|
||||
|
||||
self.bandar_lengeh = ControlPoint.from_airport(persiangulf.Bandar_Lengeh, [270, 315, 0, 45], SIZE_SMALL, IMPORTANCE_HIGH)
|
||||
self.lar = ControlPoint.from_airport(persiangulf.Lar_Airbase, LAND, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.shiraz = ControlPoint.from_airport(persiangulf.Shiraz_International_Airport, LAND, SIZE_BIG, IMPORTANCE_HIGH)
|
||||
self.kerman = ControlPoint.from_airport(persiangulf.Kerman_Airport, LAND, SIZE_BIG, IMPORTANCE_HIGH)
|
||||
self.jiroft = ControlPoint.from_airport(persiangulf.Jiroft_Airport, LAND, SIZE_BIG, IMPORTANCE_HIGH)
|
||||
self.carrier = ControlPoint.carrier("Carrier", Point(72000.324335475, -376000), 1001)
|
||||
self.lha = ControlPoint.lha("LHA", Point(-27500.813952358, -147000.65947136), 1002)
|
||||
|
||||
self.add_controlpoint(self.bandar_lengeh, connected_to=[self.lar])
|
||||
self.add_controlpoint(self.shiraz, connected_to=[self.lar, self.kerman])
|
||||
self.add_controlpoint(self.jiroft, connected_to=[self.kerman])
|
||||
self.add_controlpoint(self.kerman, connected_to=[self.shiraz, self.jiroft])
|
||||
self.add_controlpoint(self.lar, connected_to=[self.bandar_lengeh, self.shiraz])
|
||||
|
||||
self.add_controlpoint(self.carrier)
|
||||
self.add_controlpoint(self.lha)
|
||||
|
||||
self.carrier.captured = True
|
||||
self.lha.captured = True
|
||||
|
||||
self.shiraz.captured_invert = True
|
||||
self.bandar_lengeh.captured = True
|
||||
|
||||
225
theater/syria.py
225
theater/syria.py
@ -1,225 +0,0 @@
|
||||
from dcs.terrain import syria
|
||||
|
||||
from .conflicttheater import *
|
||||
from .landmap import *
|
||||
|
||||
|
||||
class SyriaTheater(ConflictTheater):
|
||||
terrain = dcs.terrain.Syria()
|
||||
overview_image = "syria.gif"
|
||||
reference_points = {(syria.Eyn_Shemer.position.x, syria.Eyn_Shemer.position.y): (1300, 1380),
|
||||
(syria.Tabqa.position.x, syria.Tabqa.position.y): (2060, 570)}
|
||||
landmap = load_landmap("resources\\syrialandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 8),
|
||||
"day": (8, 16),
|
||||
"dusk": (16, 18),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
super(SyriaTheater, self).__init__()
|
||||
|
||||
|
||||
class GolanHeights(SyriaTheater):
|
||||
|
||||
def __init__(self):
|
||||
super(GolanHeights, self).__init__()
|
||||
|
||||
self.ramatDavid = ControlPoint.from_airport(syria.Ramat_David, LAND, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.kinghussein = ControlPoint.from_airport(syria.King_Hussein_Air_College, LAND, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.khalkhala = ControlPoint.from_airport(syria.Khalkhalah, LAND, SIZE_REGULAR, IMPORTANCE_MEDIUM)
|
||||
|
||||
self.khalkhala.allow_sea_units = False
|
||||
self.ramatDavid.allow_sea_units = False
|
||||
self.kinghussein.allow_sea_units = False
|
||||
|
||||
self.marjruhayyil = ControlPoint.from_airport(syria.Marj_Ruhayyil, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.mezzeh = ControlPoint.from_airport(syria.Mezzeh, LAND, SIZE_REGULAR, IMPORTANCE_MEDIUM)
|
||||
self.aldumayr = ControlPoint.from_airport(syria.Al_Dumayr, LAND, SIZE_REGULAR, IMPORTANCE_MEDIUM)
|
||||
|
||||
self.carrier = ControlPoint.carrier("Carrier", Point(-280000, -238000), 1001)
|
||||
self.lha = ControlPoint.lha("LHA Carrier", Point(-237000, -89800), 1002)
|
||||
|
||||
self.add_controlpoint(self.ramatDavid, connected_to=[self.khalkhala])
|
||||
self.add_controlpoint(self.khalkhala, connected_to=[self.ramatDavid, self.kinghussein, self.marjruhayyil])
|
||||
self.add_controlpoint(self.kinghussein, connected_to=[self.khalkhala])
|
||||
self.add_controlpoint(self.marjruhayyil, connected_to=[self.khalkhala, self.mezzeh, self.aldumayr])
|
||||
self.add_controlpoint(self.mezzeh, connected_to=[self.marjruhayyil])
|
||||
self.add_controlpoint(self.aldumayr, connected_to=[self.marjruhayyil])
|
||||
|
||||
self.add_controlpoint(self.carrier)
|
||||
self.add_controlpoint(self.lha)
|
||||
|
||||
self.ramatDavid.captured = True
|
||||
self.carrier.captured = True
|
||||
self.lha.captured = True
|
||||
|
||||
self.aldumayr.captured_invert = True
|
||||
self.carrier.captured_invert = True
|
||||
self.lha.captured_invert = True
|
||||
|
||||
|
||||
class TurkishInvasion(SyriaTheater):
|
||||
|
||||
def __init__(self):
|
||||
super(TurkishInvasion, self).__init__()
|
||||
|
||||
self.hatay = ControlPoint.from_airport(syria.Hatay, LAND, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.incirlik = ControlPoint.from_airport(syria.Incirlik, LAND, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.minakh = ControlPoint.from_airport(syria.Minakh, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.aleppo = ControlPoint.from_airport(syria.Aleppo, LAND, SIZE_REGULAR, IMPORTANCE_MEDIUM)
|
||||
self.kuweires = ControlPoint.from_airport(syria.Kuweires, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.jirah = ControlPoint.from_airport(syria.Jirah, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.tabqa = ControlPoint.from_airport(syria.Tabqa, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
|
||||
self.carrier = ControlPoint.carrier("Carrier", Point(133000, -54000), 1001)
|
||||
self.lha = ControlPoint.lha("LHA", Point(155000, -19000), 1002)
|
||||
|
||||
self.add_controlpoint(self.incirlik, connected_to=[])
|
||||
self.add_controlpoint(self.hatay, connected_to=[self.minakh])
|
||||
self.add_controlpoint(self.minakh, connected_to=[self.aleppo, self.hatay])
|
||||
self.add_controlpoint(self.aleppo, connected_to=[self.kuweires, self.minakh])
|
||||
self.add_controlpoint(self.kuweires, connected_to=[self.jirah, self.aleppo])
|
||||
self.add_controlpoint(self.jirah, connected_to=[self.tabqa, self.kuweires])
|
||||
self.add_controlpoint(self.tabqa, connected_to=[self.jirah])
|
||||
|
||||
self.add_controlpoint(self.carrier)
|
||||
self.add_controlpoint(self.lha)
|
||||
|
||||
self.incirlik.captured = True
|
||||
self.hatay.captured = True
|
||||
self.carrier.captured = True
|
||||
self.lha.captured = True
|
||||
|
||||
self.tabqa.captured_invert = True
|
||||
|
||||
|
||||
class SyrianCivilWar(SyriaTheater):
|
||||
|
||||
def __init__(self):
|
||||
super(SyrianCivilWar, self).__init__()
|
||||
|
||||
self.basselAlAssad = ControlPoint.from_airport(syria.Bassel_Al_Assad, LAND, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.marjruhayyil = ControlPoint.from_airport(syria.Marj_Ruhayyil, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.aldumayr = ControlPoint.from_airport(syria.Al_Dumayr, LAND, SIZE_REGULAR, IMPORTANCE_MEDIUM)
|
||||
self.hama = ControlPoint.from_airport(syria.Hama, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.alqusair= ControlPoint.from_airport(syria.Al_Qusayr, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.aleppo = ControlPoint.from_airport(syria.Aleppo, LAND, SIZE_REGULAR, IMPORTANCE_MEDIUM)
|
||||
|
||||
self.palmyra = ControlPoint.from_airport(syria.Palmyra, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
|
||||
self.carrier = ControlPoint.carrier("Carrier", Point(18537, -52000), 1001)
|
||||
self.lha = ControlPoint.lha("LHA", Point(116000, -30000), 1002)
|
||||
|
||||
self.add_controlpoint(self.basselAlAssad, connected_to=[self.hama])
|
||||
self.add_controlpoint(self.marjruhayyil, connected_to=[self.aldumayr])
|
||||
|
||||
self.add_controlpoint(self.hama, connected_to=[self.basselAlAssad, self.aleppo, self.alqusair])
|
||||
self.add_controlpoint(self.aleppo, connected_to=[self.hama])
|
||||
self.add_controlpoint(self.alqusair, connected_to=[self.hama, self.aldumayr, self.palmyra])
|
||||
self.add_controlpoint(self.palmyra, connected_to=[self.alqusair])
|
||||
self.add_controlpoint(self.aldumayr, connected_to=[self.alqusair, self.marjruhayyil])
|
||||
|
||||
self.add_controlpoint(self.carrier)
|
||||
self.add_controlpoint(self.lha)
|
||||
|
||||
self.basselAlAssad.captured = True
|
||||
self.marjruhayyil.captured = True
|
||||
self.carrier.captured = True
|
||||
self.lha.captured = True
|
||||
|
||||
self.aleppo.captured_invert = True
|
||||
self.carrier.captured_invert = True
|
||||
self.lha.captured_invert = True
|
||||
|
||||
|
||||
class InherentResolve(SyriaTheater):
|
||||
|
||||
def __init__(self):
|
||||
super(InherentResolve, self).__init__()
|
||||
|
||||
self.kinghussein = ControlPoint.from_airport(syria.King_Hussein_Air_College, LAND, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.incirlik = ControlPoint.from_airport(syria.Incirlik, LAND, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.khalkhala = ControlPoint.from_airport(syria.Khalkhalah, LAND, SIZE_REGULAR, IMPORTANCE_MEDIUM)
|
||||
self.palmyra = ControlPoint.from_airport(syria.Palmyra, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.jirah = ControlPoint.from_airport(syria.Jirah, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.tabqa = ControlPoint.from_airport(syria.Tabqa, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
|
||||
self.carrier = ControlPoint.carrier("Carrier", Point(-210000, -200000), 1001)
|
||||
self.lha = ControlPoint.lha("LHA", Point(-131000, -161000), 1002)
|
||||
|
||||
self.add_controlpoint(self.kinghussein, connected_to=[self.khalkhala])
|
||||
self.add_controlpoint(self.incirlik, connected_to=[self.incirlik])
|
||||
self.add_controlpoint(self.khalkhala, connected_to=[self.kinghussein, self.palmyra])
|
||||
self.add_controlpoint(self.palmyra, connected_to=[self.khalkhala, self.tabqa])
|
||||
self.add_controlpoint(self.tabqa, connected_to=[self.palmyra, self.jirah])
|
||||
self.add_controlpoint(self.jirah, connected_to=[self.tabqa])
|
||||
|
||||
self.add_controlpoint(self.carrier)
|
||||
self.add_controlpoint(self.lha)
|
||||
|
||||
self.kinghussein.captured = True
|
||||
self.incirlik.captured = True
|
||||
self.carrier.captured = True
|
||||
self.lha.captured = True
|
||||
|
||||
self.jirah.captured_invert = True
|
||||
self.incirlik.captured_invert = True
|
||||
self.carrier.captured_invert = True
|
||||
self.lha.captured_invert = True
|
||||
|
||||
|
||||
class SyriaFullMap(SyriaTheater):
|
||||
|
||||
def __init__(self):
|
||||
super(SyriaFullMap, self).__init__()
|
||||
|
||||
self.ramatDavid = ControlPoint.from_airport(syria.Ramat_David, LAND, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.kinghussein = ControlPoint.from_airport(syria.King_Hussein_Air_College, LAND, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.khalkhala = ControlPoint.from_airport(syria.Khalkhalah, LAND, SIZE_REGULAR, IMPORTANCE_MEDIUM)
|
||||
self.palmyra = ControlPoint.from_airport(syria.Palmyra, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.jirah = ControlPoint.from_airport(syria.Jirah, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.tabqa = ControlPoint.from_airport(syria.Tabqa, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.aldumayr = ControlPoint.from_airport(syria.Al_Dumayr, LAND, SIZE_REGULAR, IMPORTANCE_MEDIUM)
|
||||
self.hama = ControlPoint.from_airport(syria.Hama, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.alqusair= ControlPoint.from_airport(syria.Al_Qusayr, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.aleppo = ControlPoint.from_airport(syria.Aleppo, LAND, SIZE_REGULAR, IMPORTANCE_MEDIUM)
|
||||
self.basselAlAssad = ControlPoint.from_airport(syria.Bassel_Al_Assad, LAND, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.renemouawad = ControlPoint.from_airport(syria.Rene_Mouawad, LAND, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.minakh = ControlPoint.from_airport(syria.Minakh, LAND, SIZE_REGULAR, IMPORTANCE_LOW)
|
||||
self.hatay = ControlPoint.from_airport(syria.Hatay, LAND, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
self.incirlik = ControlPoint.from_airport(syria.Incirlik, LAND, SIZE_REGULAR, IMPORTANCE_HIGH)
|
||||
|
||||
|
||||
self.carrier = ControlPoint.carrier("Carrier", Point(-151000, -106000), 1001)
|
||||
self.lha = ControlPoint.lha("LHA", Point(-131000, -161000), 1002)
|
||||
|
||||
self.add_controlpoint(self.ramatDavid, connected_to=[self.kinghussein])
|
||||
self.add_controlpoint(self.kinghussein, connected_to=[self.khalkhala, self.ramatDavid])
|
||||
self.add_controlpoint(self.khalkhala, connected_to=[self.kinghussein, self.aldumayr])
|
||||
self.add_controlpoint(self.aldumayr, connected_to=[self.khalkhala, self.alqusair])
|
||||
self.add_controlpoint(self.alqusair, connected_to=[self.hama, self.aldumayr, self.palmyra, self.renemouawad])
|
||||
self.add_controlpoint(self.renemouawad, connected_to=[self.alqusair, self.basselAlAssad])
|
||||
self.add_controlpoint(self.hama, connected_to=[self.aleppo, self.alqusair, self.basselAlAssad])
|
||||
self.add_controlpoint(self.basselAlAssad, connected_to=[self.hama, self.hatay, self.renemouawad])
|
||||
self.add_controlpoint(self.palmyra, connected_to=[self.tabqa, self.alqusair])
|
||||
self.add_controlpoint(self.tabqa, connected_to=[self.palmyra, self.jirah])
|
||||
self.add_controlpoint(self.jirah, connected_to=[self.tabqa, self.aleppo])
|
||||
self.add_controlpoint(self.aleppo, connected_to=[self.hama, self.jirah, self.minakh])
|
||||
self.add_controlpoint(self.minakh, connected_to=[self.hatay, self.aleppo, self.incirlik])
|
||||
self.add_controlpoint(self.hatay, connected_to=[self.minakh, self.basselAlAssad])
|
||||
self.add_controlpoint(self.incirlik, connected_to=[self.minakh])
|
||||
|
||||
self.add_controlpoint(self.carrier)
|
||||
self.add_controlpoint(self.lha)
|
||||
|
||||
self.ramatDavid.captured = True
|
||||
self.carrier.captured = True
|
||||
self.lha.captured = True
|
||||
|
||||
self.incirlik.captured_invert = True
|
||||
self.carrier.captured_invert = True
|
||||
self.lha.captured_invert = True
|
||||
|
||||
|
||||
@ -1,109 +0,0 @@
|
||||
from dcs.terrain import thechannel
|
||||
|
||||
from .conflicttheater import *
|
||||
from .landmap import *
|
||||
|
||||
|
||||
class Dunkirk(ConflictTheater):
|
||||
terrain = dcs.terrain.TheChannel()
|
||||
overview_image = "thechannel.gif"
|
||||
reference_points = {(thechannel.Abbeville_Drucat.position.x, thechannel.Abbeville_Drucat.position.y): (2400, 4100),
|
||||
(thechannel.Detling.position.x, thechannel.Detling.position.y): (1100, 2000)}
|
||||
landmap = load_landmap("resources\\channellandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 8),
|
||||
"day": (10, 17),
|
||||
"dusk": (17, 18),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
super(Dunkirk, self).__init__()
|
||||
|
||||
self.abeville = ControlPoint.from_airport(thechannel.Abbeville_Drucat, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
#self.detling = ControlPoint.from_airport(thechannel.Detling, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
|
||||
self.stomer = ControlPoint.from_airport(thechannel.Saint_Omer_Longuenesse, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.dunkirk = ControlPoint.from_airport(thechannel.Dunkirk_Mardyck, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.hawkinge = ControlPoint.from_airport(thechannel.Hawkinge, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
#self.highhalden = ControlPoint.from_airport(thechannel.High_Halden, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.lympne = ControlPoint.from_airport(thechannel.Lympne, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.manston = ControlPoint.from_airport(thechannel.Manston, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.merville = ControlPoint.from_airport(thechannel.Merville_Calonne, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
|
||||
|
||||
# England
|
||||
self.add_controlpoint(self.hawkinge, connected_to=[self.lympne, self.manston])
|
||||
self.add_controlpoint(self.lympne, connected_to=[self.hawkinge])
|
||||
self.add_controlpoint(self.manston, connected_to=[self.hawkinge])
|
||||
|
||||
# France
|
||||
self.add_controlpoint(self.dunkirk, connected_to=[self.stomer])
|
||||
self.add_controlpoint(self.stomer, connected_to=[self.dunkirk, self.merville, self.abeville])
|
||||
self.add_controlpoint(self.merville, connected_to=[self.stomer])
|
||||
self.add_controlpoint(self.abeville, connected_to=[self.stomer])
|
||||
|
||||
#self.detling.captured = True
|
||||
self.hawkinge.captured = True
|
||||
self.dunkirk.captured = True
|
||||
#self.highhalden.captured = True
|
||||
self.lympne.captured = True
|
||||
self.manston.captured = True
|
||||
|
||||
self.manston.captured_invert = True
|
||||
self.dunkirk.captured_invert = True
|
||||
self.stomer.captured_invert = True
|
||||
self.merville.captured_invert = True
|
||||
self.abeville.captured_invert = True
|
||||
|
||||
|
||||
class BattleOfBritain(ConflictTheater):
|
||||
terrain = dcs.terrain.TheChannel()
|
||||
overview_image = "thechannel.gif"
|
||||
reference_points = {(thechannel.Abbeville_Drucat.position.x, thechannel.Abbeville_Drucat.position.y): (2400, 4100),
|
||||
(thechannel.Detling.position.x, thechannel.Detling.position.y): (1100, 2000)}
|
||||
landmap = load_landmap("resources\\channellandmap.p")
|
||||
daytime_map = {
|
||||
"dawn": (6, 8),
|
||||
"day": (10, 17),
|
||||
"dusk": (17, 18),
|
||||
"night": (0, 5),
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
super(BattleOfBritain, self).__init__()
|
||||
|
||||
self.abeville = ControlPoint.from_airport(thechannel.Abbeville_Drucat, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
#self.detling = ControlPoint.from_airport(thechannel.Detling, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
|
||||
self.stomer = ControlPoint.from_airport(thechannel.Saint_Omer_Longuenesse, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.dunkirk = ControlPoint.from_airport(thechannel.Dunkirk_Mardyck, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.hawkinge = ControlPoint.from_airport(thechannel.Hawkinge, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.highhalden = ControlPoint.from_airport(thechannel.High_Halden, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.lympne = ControlPoint.from_airport(thechannel.Lympne, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.manston = ControlPoint.from_airport(thechannel.Manston, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
self.merville = ControlPoint.from_airport(thechannel.Merville_Calonne, LAND, SIZE_SMALL, IMPORTANCE_LOW)
|
||||
|
||||
# England
|
||||
self.add_controlpoint(self.hawkinge, connected_to=[self.lympne, self.manston])
|
||||
self.add_controlpoint(self.lympne, connected_to=[self.hawkinge, self.highhalden])
|
||||
self.add_controlpoint(self.manston, connected_to=[self.hawkinge])
|
||||
self.add_controlpoint(self.highhalden, connected_to=[self.lympne])
|
||||
|
||||
# France
|
||||
self.add_controlpoint(self.dunkirk, connected_to=[self.stomer])
|
||||
self.add_controlpoint(self.stomer, connected_to=[self.dunkirk, self.merville, self.abeville])
|
||||
self.add_controlpoint(self.merville, connected_to=[self.stomer])
|
||||
self.add_controlpoint(self.abeville, connected_to=[self.stomer])
|
||||
|
||||
#self.detling.captured = True
|
||||
self.hawkinge.captured = True
|
||||
#self.dunkirk.captured = True
|
||||
self.highhalden.captured = True
|
||||
self.lympne.captured = True
|
||||
self.manston.captured = True
|
||||
|
||||
self.dunkirk.captured_invert = True
|
||||
self.stomer.captured_invert = True
|
||||
self.merville.captured_invert = True
|
||||
self.abeville.captured_invert = True
|
||||
Loading…
x
Reference in New Issue
Block a user