mirror of
https://github.com/dcs-liberation/dcs_liberation.git
synced 2025-11-10 14:22:26 +00:00
Improved campaign selection screen in new game wizard.
This commit is contained in:
parent
61253e4d4d
commit
5946fc7404
@ -20,6 +20,7 @@ class Campaign:
|
|||||||
name: str
|
name: str
|
||||||
icon_name: str
|
icon_name: str
|
||||||
authors: str
|
authors: str
|
||||||
|
description: str
|
||||||
theater: ConflictTheater
|
theater: ConflictTheater
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -29,7 +30,7 @@ class Campaign:
|
|||||||
|
|
||||||
sanitized_theater = data["theater"].replace(" ", "")
|
sanitized_theater = data["theater"].replace(" ", "")
|
||||||
return cls(data["name"], f"Terrain_{sanitized_theater}", data.get("authors", "???"),
|
return cls(data["name"], f"Terrain_{sanitized_theater}", data.get("authors", "???"),
|
||||||
ConflictTheater.from_json(data))
|
data.get("description", ""), ConflictTheater.from_json(data))
|
||||||
|
|
||||||
|
|
||||||
def load_campaigns() -> List[Campaign]:
|
def load_campaigns() -> List[Campaign]:
|
||||||
|
|||||||
@ -17,6 +17,16 @@ from qt_ui.windows.newgame.QCampaignList import (
|
|||||||
)
|
)
|
||||||
from theater.start_generator import GameGenerator
|
from theater.start_generator import GameGenerator
|
||||||
|
|
||||||
|
jinja_env = Environment(
|
||||||
|
loader=FileSystemLoader("resources/ui/templates"),
|
||||||
|
autoescape=select_autoescape(
|
||||||
|
disabled_extensions=("",),
|
||||||
|
default_for_string=True,
|
||||||
|
default=True,
|
||||||
|
),
|
||||||
|
trim_blocks=True,
|
||||||
|
lstrip_blocks=True,
|
||||||
|
)
|
||||||
|
|
||||||
class NewGameWizard(QtWidgets.QWizard):
|
class NewGameWizard(QtWidgets.QWizard):
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
@ -177,17 +187,7 @@ class FactionSelection(QtWidgets.QWizardPage):
|
|||||||
red_faction = db.FACTIONS[self.redFactionSelect.currentText()]
|
red_faction = db.FACTIONS[self.redFactionSelect.currentText()]
|
||||||
blue_faction = db.FACTIONS[self.blueFactionSelect.currentText()]
|
blue_faction = db.FACTIONS[self.blueFactionSelect.currentText()]
|
||||||
|
|
||||||
env = Environment(
|
template = jinja_env.get_template("factiontemplate_EN.j2")
|
||||||
loader=FileSystemLoader("resources/ui/templates"),
|
|
||||||
autoescape=select_autoescape(
|
|
||||||
disabled_extensions=("",),
|
|
||||||
default_for_string=True,
|
|
||||||
default=True,
|
|
||||||
),
|
|
||||||
trim_blocks=True,
|
|
||||||
lstrip_blocks=True,
|
|
||||||
)
|
|
||||||
template = env.get_template("factiontemplate_EN.j2")
|
|
||||||
|
|
||||||
blue_faction_txt = template.render({"faction": blue_faction})
|
blue_faction_txt = template.render({"faction": blue_faction})
|
||||||
red_faction_txt = template.render({"faction": red_faction})
|
red_faction_txt = template.render({"faction": red_faction})
|
||||||
@ -235,10 +235,16 @@ class TheaterConfiguration(QtWidgets.QWizardPage):
|
|||||||
campaignList = QCampaignList(campaigns)
|
campaignList = QCampaignList(campaigns)
|
||||||
self.registerField("selectedCampaign", campaignList)
|
self.registerField("selectedCampaign", campaignList)
|
||||||
|
|
||||||
|
# Faction description
|
||||||
|
self.campaignMapDescription = QTextEdit("")
|
||||||
|
self.campaignMapDescription.setReadOnly(True)
|
||||||
|
|
||||||
def on_campaign_selected():
|
def on_campaign_selected():
|
||||||
|
template = jinja_env.get_template("campaigntemplate_EN.j2")
|
||||||
index = campaignList.selectionModel().currentIndex().row()
|
index = campaignList.selectionModel().currentIndex().row()
|
||||||
campaign = campaignList.campaigns[index]
|
campaign = campaignList.campaigns[index]
|
||||||
self.setField("selectedCampaign", campaign)
|
self.setField("selectedCampaign", campaign)
|
||||||
|
self.campaignMapDescription.setText(template.render({"campaign": campaign}))
|
||||||
|
|
||||||
campaignList.selectionModel().setCurrentIndex(campaignList.indexAt(QPoint(1, 1)), QItemSelectionModel.Rows)
|
campaignList.selectionModel().setCurrentIndex(campaignList.indexAt(QPoint(1, 1)), QItemSelectionModel.Rows)
|
||||||
campaignList.selectionModel().selectionChanged.connect(on_campaign_selected)
|
campaignList.selectionModel().selectionChanged.connect(on_campaign_selected)
|
||||||
@ -274,8 +280,9 @@ class TheaterConfiguration(QtWidgets.QWizardPage):
|
|||||||
layout = QtWidgets.QGridLayout()
|
layout = QtWidgets.QGridLayout()
|
||||||
layout.setColumnMinimumWidth(0, 20)
|
layout.setColumnMinimumWidth(0, 20)
|
||||||
layout.addWidget(campaignList, 0, 0, 3, 1)
|
layout.addWidget(campaignList, 0, 0, 3, 1)
|
||||||
layout.addWidget(mapSettingsGroup, 0, 1, 1, 1)
|
layout.addWidget(self.campaignMapDescription, 0, 1, 1, 1)
|
||||||
layout.addWidget(timeGroup, 1, 1, 1, 1)
|
layout.addWidget(mapSettingsGroup, 1, 1, 1, 1)
|
||||||
|
layout.addWidget(timeGroup, 2, 1, 1, 1)
|
||||||
self.setLayout(layout)
|
self.setLayout(layout)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "The Channel - Battle of Britain",
|
"name": "The Channel - Battle of Britain",
|
||||||
"theater": "The Channel",
|
"theater": "The Channel",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "",
|
"description": "<p>Experience the Battle of Britain on the Channel map !<br/></p><p><strong>Note:</strong> It is not possible to cross the channel to capture enemy bases yet, but you can consider you won if you manage to destroy all the ennemy targets</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "Persian Gulf - Desert War",
|
"name": "Persian Gulf - Desert War",
|
||||||
"theater": "Persian Gulf",
|
"theater": "Persian Gulf",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "",
|
"description": "<p>This is a simple scenario in the Desert near Dubai and Abu-Dhabi. Progress from Liwa airbase to Al-Minhad.</p><p>This scenario shouldn't require too much performance.</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "The Channel - Dunkirk",
|
"name": "The Channel - Dunkirk",
|
||||||
"theater": "The Channel",
|
"theater": "The Channel",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "",
|
"description": "<p>In this scenario, your forces starts in Dunkirk and can be supported by the airfields on the other side of the Channel.</p><p>If you select the inverted configuration, you can play a German invasion of England.</p><p><strong>Note:</strong> B-17 should be operated from Manston airfield</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "Persian Gulf - Emirates",
|
"name": "Persian Gulf - Emirates",
|
||||||
"theater": "Persian Gulf",
|
"theater": "Persian Gulf",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "",
|
"description": "<p>In this scenario, you can play an invasion of the Emirates and Oman, where your forces starts in Fujairah.</p><p><strong>Note:</strong> Fujairah airfield has very few slots for aircrafts, so it recommended to operate from carriers at the start of the campaign. Thus, a carrier-capable faction is recommended.</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "Caucasus - Full Map",
|
"name": "Caucasus - Full Map",
|
||||||
"theater": "Caucasus",
|
"theater": "Caucasus",
|
||||||
"authors": "george",
|
"authors": "george",
|
||||||
"description": "Full Caucasus Map",
|
"description": "<p>Full map of the Caucasus</p><p><strong>Note:</strong> This scenario is heavy on performance, enabling \"culling\" in settings is highly recommended.</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "Syria - Golan heights battle",
|
"name": "Syria - Golan heights battle",
|
||||||
"theater": "Syria",
|
"theater": "Syria",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "",
|
"description": "<p>In this scenario, you start in Israel and the conflict is focused around the golan heights, an historically disputed territory.</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "Syria - Inherent Resolve",
|
"name": "Syria - Inherent Resolve",
|
||||||
"theater": "Syria",
|
"theater": "Syria",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "",
|
"description": "<p>In this scenario, you start from Jordan, and have to fight your way through eastern Syria.</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "Syria - Invasion from Turkey",
|
"name": "Syria - Invasion from Turkey",
|
||||||
"theater": "Syria",
|
"theater": "Syria",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "",
|
"description": "<p>In this scenario, you start from Turkey and have to invade territories in northern Syria.</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "Persian Gulf - Invasion of Iran",
|
"name": "Persian Gulf - Invasion of Iran",
|
||||||
"theater": "Persian Gulf",
|
"theater": "Persian Gulf",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "",
|
"description": "<p>In this scenario, you start in Bandar Abbas, and must invade Iran.</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "Persian Gulf - Invasion of Iran [Lite]",
|
"name": "Persian Gulf - Invasion of Iran [Lite]",
|
||||||
"theater": "Persian Gulf",
|
"theater": "Persian Gulf",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "",
|
"description": "<p>This is lighter version of the invasion of Iran scenario.</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "Normandy - Normandy",
|
"name": "Normandy - Normandy",
|
||||||
"theater": "Normandy",
|
"theater": "Normandy",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "",
|
"description": "<p>Normandy 1944 D-Day scenario.</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "Normandy - Normandy Small",
|
"name": "Normandy - Normandy Small",
|
||||||
"theater": "Normandy",
|
"theater": "Normandy",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "",
|
"description": "<p>A lighter version of the Normandy 1944 D-Day scenario.</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "Caucasus - North Caucasus",
|
"name": "Caucasus - North Caucasus",
|
||||||
"theater": "Caucasus",
|
"theater": "Caucasus",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "",
|
"description": "<p>In this scenario you will have to fight in the moutain of Caucasus</p><p><strong>Note:</strong> Running CAS in the moutains can be a bit difficult.</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "Nevada - North Nevada",
|
"name": "Nevada - North Nevada",
|
||||||
"theater": "Nevada",
|
"theater": "Nevada",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "",
|
"description": "<p>A scenario taking place in the NTTR. Here you can simulate a red flag exercise.</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
|
|||||||
@ -1,143 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Persian Gulf - Full",
|
|
||||||
"theater": "Persian Gulf",
|
|
||||||
"authors": "Khopa",
|
|
||||||
"description": "Full persian gulf map. For performance reason, please enable 'culling' in settings when playing this map. Known issues : Islands can only be captured through cheating.",
|
|
||||||
"player_points": [
|
|
||||||
{
|
|
||||||
"type": "carrier",
|
|
||||||
"id": 1001,
|
|
||||||
"x": 59514.324335475,
|
|
||||||
"y": 28165.517980635
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "lha",
|
|
||||||
"id": 1002,
|
|
||||||
"x": -27500.813952358,
|
|
||||||
"y": -147000.65947136
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"enemy_points": [
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Ras Al Khaimah",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Khasab",
|
|
||||||
"size": 600,
|
|
||||||
"importance": 1.2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Qeshm Island",
|
|
||||||
"radials": [
|
|
||||||
270,
|
|
||||||
315,
|
|
||||||
0,
|
|
||||||
45,
|
|
||||||
90,
|
|
||||||
135,
|
|
||||||
180
|
|
||||||
],
|
|
||||||
"size": 600,
|
|
||||||
"importance": 1.1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Havadarya",
|
|
||||||
"radials": [
|
|
||||||
225,
|
|
||||||
270,
|
|
||||||
315,
|
|
||||||
0,
|
|
||||||
45
|
|
||||||
],
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Bandar Abbas Intl",
|
|
||||||
"size": 2000,
|
|
||||||
"importance": 1.4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Bandar Lengeh",
|
|
||||||
"radials": [
|
|
||||||
270,
|
|
||||||
315,
|
|
||||||
0,
|
|
||||||
45
|
|
||||||
],
|
|
||||||
"size": 600,
|
|
||||||
"importance": 1.4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Shiraz International Airport",
|
|
||||||
"size": 2000,
|
|
||||||
"importance": 1.4,
|
|
||||||
"captured_invert": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Jiroft Airport",
|
|
||||||
"size": 2000,
|
|
||||||
"importance": 1.4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Kerman Airport",
|
|
||||||
"size": 2000,
|
|
||||||
"importance": 1.4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "airbase",
|
|
||||||
"id": "Lar Airbase",
|
|
||||||
"size": 1000,
|
|
||||||
"importance": 1.4
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"links": [
|
|
||||||
[
|
|
||||||
"Khasab",
|
|
||||||
"Ras Al Khaimah"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Bandar Lengeh",
|
|
||||||
"Lar Airbase"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Havadarya",
|
|
||||||
"Lar Airbase"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Bandar Abbas Intl",
|
|
||||||
"Havadarya"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Bandar Abbas Intl",
|
|
||||||
"Jiroft Airport"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Lar Airbase",
|
|
||||||
"Shiraz International Airport"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Kerman Airport",
|
|
||||||
"Shiraz International Airport"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Jiroft Airport",
|
|
||||||
"Kerman Airport"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"Kerman Airport",
|
|
||||||
"Lar Airbase"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "Caucasus - Russia Small",
|
"name": "Caucasus - Russia Small",
|
||||||
"theater": "Caucasus",
|
"theater": "Caucasus",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "",
|
"description": "<p>A small theater in Russia, progress from Mozdok to Maykop.</p><p>This scenario is pretty simple, it is ideal if you want to run a short campaign. If your PC is not powerful, this is also the less performance heavy scenario.</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "Syria - Full Map",
|
"name": "Syria - Full Map",
|
||||||
"theater": "Syria",
|
"theater": "Syria",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "",
|
"description": "<p>Full map of Syria</p><p><strong>Note:</strong> This scenario is heavy on performance, enabling \"culling\" in settings is highly recommended.</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "Syria - Syrian Civil War",
|
"name": "Syria - Syrian Civil War",
|
||||||
"theater": "Syria",
|
"theater": "Syria",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "",
|
"description": "<p>This scenario can be used to simulate parts of the Syrian Civil War.</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "Caucasus - Western Georgia",
|
"name": "Caucasus - Western Georgia",
|
||||||
"theater": "Caucasus",
|
"theater": "Caucasus",
|
||||||
"authors": "Khopa",
|
"authors": "Khopa",
|
||||||
"description": "",
|
"description": "<p>A medium sized theater in the south west of the Caucasus map. Shouldn't be too hard on performance.</p>",
|
||||||
"player_points": [
|
"player_points": [
|
||||||
{
|
{
|
||||||
"type": "airbase",
|
"type": "airbase",
|
||||||
|
|||||||
@ -62,6 +62,7 @@
|
|||||||
"Ticonderoga_class"
|
"Ticonderoga_class"
|
||||||
],
|
],
|
||||||
"requirements": {
|
"requirements": {
|
||||||
|
"MB-339A/PAN by Frecce Tricolori Virtuali": "http://www.freccetricolorivirtuali.net/",
|
||||||
"Community A-4E": "https://heclak.github.io/community-a4e-c/"
|
"Community A-4E": "https://heclak.github.io/community-a4e-c/"
|
||||||
},
|
},
|
||||||
"carrier_names": [
|
"carrier_names": [
|
||||||
|
|||||||
@ -53,6 +53,7 @@
|
|||||||
"Ticonderoga_class"
|
"Ticonderoga_class"
|
||||||
],
|
],
|
||||||
"requirements": {
|
"requirements": {
|
||||||
|
"MB-339A/PAN by Frecce Tricolori Virtuali": "http://www.freccetricolorivirtuali.net/"
|
||||||
},
|
},
|
||||||
"carrier_names": [
|
"carrier_names": [
|
||||||
],
|
],
|
||||||
|
|||||||
@ -30,7 +30,7 @@
|
|||||||
"AvengerGenerator"
|
"AvengerGenerator"
|
||||||
],
|
],
|
||||||
"requirements": {
|
"requirements": {
|
||||||
"MB-339A": "http://www.freccetricolorivirtuali.net/"
|
"MB-339A/PAN by Frecce Tricolori Virtuali": "http://www.freccetricolorivirtuali.net/"
|
||||||
},
|
},
|
||||||
"has_jtac": true,
|
"has_jtac": true,
|
||||||
"jtac_unit": "MQ_9_Reaper"
|
"jtac_unit": "MQ_9_Reaper"
|
||||||
|
|||||||
@ -71,7 +71,9 @@
|
|||||||
"cruisers": [
|
"cruisers": [
|
||||||
"FSG_1241_1MP_Molniya"
|
"FSG_1241_1MP_Molniya"
|
||||||
],
|
],
|
||||||
"requirements": {},
|
"requirements": {
|
||||||
|
"SU-57 Felon By CubanAce Simulations": "https://www.digitalcombatsimulator.com/fr/files/2539621/"
|
||||||
|
},
|
||||||
"carrier_names": [
|
"carrier_names": [
|
||||||
"Admiral Kuznetov"
|
"Admiral Kuznetov"
|
||||||
],
|
],
|
||||||
|
|||||||
7
resources/ui/templates/campaigntemplate_EN.j2
Normal file
7
resources/ui/templates/campaigntemplate_EN.j2
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<strong>Author(s): {{ campaign.authors }}</strong>
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
<strong>Number of control points:</strong> {{ campaign.theater.controlpoints|length }}
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
{{ campaign.description|safe }}
|
||||||
@ -5,7 +5,7 @@
|
|||||||
<br/><br/>
|
<br/><br/>
|
||||||
|
|
||||||
|
|
||||||
<strong>Available airplanes:</strong>
|
<strong>Available aircrafts:</strong>
|
||||||
<ul>
|
<ul>
|
||||||
{% for aircraft in faction.aircrafts %}
|
{% for aircraft in faction.aircrafts %}
|
||||||
<li>{{aircraft.id}}</li>
|
<li>{{aircraft.id}}</li>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user