Added moddable campaigns through json files.

This commit is contained in:
Khopa 2020-10-07 00:09:11 +02:00
parent 9101dae38a
commit 71f77dd8fb
10 changed files with 185 additions and 1031 deletions

View File

@ -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")

View File

@ -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)

View File

@ -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()

View File

@ -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

View File

@ -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),
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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