from __future__ import unicode_literals from datetime import timedelta from PySide6 import QtWidgets, QtGui from PySide6.QtCore import Qt from PySide6.QtWidgets import QLabel, QVBoxLayout from game.campaignloader import Campaign from game.campaignloader.campaign import DEFAULT_BUDGET from qt_ui.widgets.spinsliders import CurrencySpinner DEFAULT_MISSION_LENGTH: timedelta = timedelta(minutes=60) class BudgetInputs(QtWidgets.QGridLayout): def __init__(self, label: str, value: int) -> None: super().__init__() self.addWidget(QtWidgets.QLabel(label), 0, 0) minimum = 0 maximum = 5000 slider = QtWidgets.QSlider(Qt.Orientation.Horizontal) slider.setMinimum(minimum) slider.setMaximum(maximum) slider.setValue(value) self.starting_money = CurrencySpinner(minimum, maximum, value) slider.valueChanged.connect(lambda x: self.starting_money.setValue(x)) self.starting_money.valueChanged.connect(lambda x: slider.setValue(x)) self.addWidget(slider, 1, 0) self.addWidget(self.starting_money, 1, 1) class GeneratorOptions(QtWidgets.QWizardPage): def __init__(self, campaign: Campaign, parent=None): super().__init__(parent) self.setTitle("Generator settings") self.setSubTitle("\nOptions affecting the generation of the game.") self.setPixmap( QtWidgets.QWizard.WizardPixmap.LogoPixmap, QtGui.QPixmap("./resources/ui/wizard/logo1.png"), ) # Campaign settings generatorSettingsGroup = QtWidgets.QGroupBox("Generator Settings") self.no_carrier = QtWidgets.QCheckBox() self.registerField("no_carrier", self.no_carrier) self.no_lha = QtWidgets.QCheckBox() self.registerField("no_lha", self.no_lha) self.no_player_navy = QtWidgets.QCheckBox() self.registerField("no_player_navy", self.no_player_navy) self.no_enemy_navy = QtWidgets.QCheckBox() self.registerField("no_enemy_navy", self.no_enemy_navy) self.squadrons_start_full = QtWidgets.QCheckBox() self.registerField("squadrons_start_full", self.squadrons_start_full) generatorLayout = QtWidgets.QGridLayout() generatorLayout.addWidget(QtWidgets.QLabel("No Aircraft Carriers"), 1, 0) generatorLayout.addWidget(self.no_carrier, 1, 1) generatorLayout.addWidget(QtWidgets.QLabel("No LHA"), 2, 0) generatorLayout.addWidget(self.no_lha, 2, 1) generatorLayout.addWidget(QtWidgets.QLabel("No Player Navy"), 3, 0) generatorLayout.addWidget(self.no_player_navy, 3, 1) generatorLayout.addWidget(QtWidgets.QLabel("No Enemy Navy"), 4, 0) generatorLayout.addWidget(self.no_enemy_navy, 4, 1) label = QtWidgets.QLabel("Squadrons start at full capacity") label.setToolTip( "Campaign will start with all squadrons at full strength " "given enough room at the airfield in question.\n" "Each squadron's capacity can be defined during Air Wing Configuration." ) generatorLayout.addWidget(label, 5, 0) generatorLayout.addWidget(self.squadrons_start_full, 5, 1) generatorLayout.addWidget(QtWidgets.QWidget(), 6, 0) self.player_budget = BudgetInputs("Player starting budget", DEFAULT_BUDGET) self.registerField("starting_money", self.player_budget.starting_money) generatorLayout.addLayout(self.player_budget, 7, 0) self.enemy_budget = BudgetInputs("Enemy starting budget", DEFAULT_BUDGET) self.registerField("enemy_starting_money", self.enemy_budget.starting_money) generatorLayout.addLayout(self.enemy_budget, 8, 0) generatorSettingsGroup.setLayout(generatorLayout) modSettingsGroup = QtWidgets.QGroupBox("Mod Settings") self.a4_skyhawk = QtWidgets.QCheckBox() self.registerField("a4_skyhawk", self.a4_skyhawk) self.a6a_intruder = QtWidgets.QCheckBox() self.registerField("a6a_intruder", self.a6a_intruder) self.a7e_corsair2 = QtWidgets.QCheckBox() self.registerField("a7e_corsair2", self.a7e_corsair2) self.ea6b_prowler = QtWidgets.QCheckBox() self.registerField("ea6b_prowler", self.ea6b_prowler) self.hercules = QtWidgets.QCheckBox() self.registerField("hercules", self.hercules) self.oh_6 = QtWidgets.QCheckBox() self.registerField("oh_6", self.oh_6) self.oh_6_vietnamassetpack = QtWidgets.QCheckBox() self.registerField("oh_6_vietnamassetpack", self.oh_6_vietnamassetpack) self.uh_60l = QtWidgets.QCheckBox() self.registerField("uh_60l", self.uh_60l) self.f4bc_phantom = QtWidgets.QCheckBox() self.registerField("f4bc_phantom", self.f4bc_phantom) self.f9f_panther = QtWidgets.QCheckBox() self.registerField("f9f_panther", self.f9f_panther) self.f15d_baz = QtWidgets.QCheckBox() self.registerField("f15d_baz", self.f15d_baz) self.f_15_idf = QtWidgets.QCheckBox() self.registerField("f_15_idf", self.f_15_idf) self.f_16_idf = QtWidgets.QCheckBox() self.registerField("f_16_idf", self.f_16_idf) self.fa_18efg = QtWidgets.QCheckBox() self.registerField("fa_18efg", self.fa_18efg) self.fa18ef_tanker = QtWidgets.QCheckBox() self.registerField("fa18ef_tanker", self.fa18ef_tanker) self.f22_raptor = QtWidgets.QCheckBox() self.registerField("f22_raptor", self.f22_raptor) self.f84g_thunderjet = QtWidgets.QCheckBox() self.registerField("f84g_thunderjet", self.f84g_thunderjet) self.f100_supersabre = QtWidgets.QCheckBox() self.registerField("f100_supersabre", self.f100_supersabre) self.f104_starfighter = QtWidgets.QCheckBox() self.registerField("f104_starfighter", self.f104_starfighter) self.f105_thunderchief = QtWidgets.QCheckBox() self.registerField("f105_thunderchief", self.f105_thunderchief) self.f106_deltadart = QtWidgets.QCheckBox() self.registerField("f106_deltadart", self.f106_deltadart) self.jas39_gripen = QtWidgets.QCheckBox() self.registerField("jas39_gripen", self.jas39_gripen) self.mirage_3 = QtWidgets.QCheckBox() self.registerField("mirage_3", self.mirage_3) self.super_etendard = QtWidgets.QCheckBox() self.registerField("super_etendard", self.super_etendard) self.sk_60 = QtWidgets.QCheckBox() self.registerField("sk_60", self.sk_60) self.su15_flagon = QtWidgets.QCheckBox() self.registerField("su15_flagon", self.su15_flagon) self.su30_flanker_h = QtWidgets.QCheckBox() self.registerField("su30_flanker_h", self.su30_flanker_h) self.su57_felon = QtWidgets.QCheckBox() self.registerField("su57_felon", self.su57_felon) self.ov10a_bronco = QtWidgets.QCheckBox() self.registerField("ov10a_bronco", self.ov10a_bronco) self.frenchpack = QtWidgets.QCheckBox() self.registerField("frenchpack", self.frenchpack) self.high_digit_sams = QtWidgets.QCheckBox() self.registerField("high_digit_sams", self.high_digit_sams) self.swedishmilitaryassetspack = QtWidgets.QCheckBox() self.registerField("swedishmilitaryassetspack", self.swedishmilitaryassetspack) self.coldwarassets = QtWidgets.QCheckBox() self.registerField("coldwarassets", self.coldwarassets) self.SWPack = QtWidgets.QCheckBox() self.registerField("SWPack", self.SWPack) self.spanishnavypack = QtWidgets.QCheckBox() self.registerField("spanishnavypack", self.spanishnavypack) self.irondome = QtWidgets.QCheckBox() self.registerField("irondome", self.irondome) self.vietnamwarvessels = QtWidgets.QCheckBox() self.registerField("vietnamwarvessels", self.vietnamwarvessels) self.chinesemilitaryassetspack = QtWidgets.QCheckBox() self.registerField("chinesemilitaryassetspack", self.chinesemilitaryassetspack) self.russianmilitaryassetspack = QtWidgets.QCheckBox() self.registerField("russianmilitaryassetspack", self.russianmilitaryassetspack) self.usamilitaryassetspack = QtWidgets.QCheckBox() self.registerField("usamilitaryassetspack", self.usamilitaryassetspack) self.ukrainemilitaryassetspack = QtWidgets.QCheckBox() self.registerField("ukrainemilitaryassetspack", self.ukrainemilitaryassetspack) modHelpText = QtWidgets.QLabel( "
Select the mods you have installed. If your chosen factions support them, you'll be able to use these mods in your campaign.
" ) modHelpText.setAlignment(Qt.AlignmentFlag.AlignCenter) modLayout = QtWidgets.QGridLayout() modLayout_row = 1 mod_pairs = [ ("A-4E Skyhawk (v2.2.0)", self.a4_skyhawk), ("A-6A Intruder (v2.7.5.01)", self.a6a_intruder), ("A-7E Corsair II", self.a7e_corsair2), ("C-130J-30 Super Hercules (v6.8.2)", self.hercules), ("Cold War Assets mod (v1.0)", self.coldwarassets), ( "CurrentHill Chinese Military Assets pack (1.1.4)", self.chinesemilitaryassetspack, ), ( "CurrentHill Russian Military Assets pack (1.2.1)", self.russianmilitaryassetspack, ), ( "CurrentHill Swedish Military Assets pack (1.10)", self.swedishmilitaryassetspack, ), ( "CurrentHill USA Military Assets pack (1.1.5)", self.usamilitaryassetspack, ), ( "CurrentHill Ukraine Military Assets pack (1.1.1)", self.ukrainemilitaryassetspack, ), ("EA-6B Prowler (v2.9.4.102)", self.ea6b_prowler), ("F-100 Super Sabre (v2.7.18.30765 patch 20.10.22)", self.f100_supersabre), ("F-104 Starfighter (v2.7.11.222.01)", self.f104_starfighter), ("F-105 Thunderchief (v2.7.12.23x)", self.f105_thunderchief), ("F-106 Delta Dart (v2.9.4.101)", self.f106_deltadart), ("F-15D Baz (v1.0)", self.f15d_baz), ("F-15I Ra'am (v1.0 by IDF Mods Project)", self.f_15_idf), ("F-16I Sufa & F-16D (v3.6 by IDF Mods Project)", self.f_16_idf), ("F-22A Raptor (v3.0)", self.f22_raptor), ("F-4B/C Phantom II (2.8.7.204)", self.f4bc_phantom), ("F-84G Thunderjet (v2.5.7.01)", self.f84g_thunderjet), ("F9F Panther (v2.8.7.101)", self.f9f_panther), ("F/A-18E/F/G Super Hornet (version 2.4.2)", self.fa_18efg), ("F/A-18E/F Super Hornet AI Tanker (version 2.4.2)", self.fa18ef_tanker), ("Frenchpack (v4.9.1)", self.frenchpack), ("High Digit SAMs", self.high_digit_sams), ("IDF Assets Pack (v1.1 by IDF Mods Project)", self.irondome), ("JAS 39 Gripen (v1.8.5-beta)", self.jas39_gripen), ("Mirage III (v2.5.7.01)", self.mirage_3), ("OH-6 Cayuse (v1.2)", self.oh_6), ("OH-6 Vietnam Asset Pack (v1.0)", self.oh_6_vietnamassetpack), ("OV-10A Bronco", self.ov10a_bronco), ("Saab 105/SK-60B (v1.2.1)", self.sk_60), ("Spanish Naval Assets pack (desdemicabina 3.2.0)", self.spanishnavypack), ("Star Wars Modpack 2.54+", self.SWPack), ("Su-15 Flagon (v1.0)", self.su15_flagon), ("Su-30 Flanker-H (V2.7.73b)", self.su30_flanker_h), ("Su-57 Felon (build-04)", self.su57_felon), ("Super Étendard (v2.5.5)", self.super_etendard), ("UH-60L Black Hawk (v1.3.1)", self.uh_60l), ("Vietnam War Vessels (v0.9.0 by TeTeT)", self.vietnamwarvessels), ] for i in range(len(mod_pairs)): if i % 15 == 0: modLayout_row = 1 col = 2 * (i // 15) if i % 5 == 0: # Section break here for readability modLayout.addWidget(QtWidgets.QWidget(), modLayout_row, col) modLayout_row += 1 label, cb = mod_pairs[i] modLayout.addWidget(QLabel(label), modLayout_row, col) modLayout.addWidget(cb, modLayout_row, col + 1) modLayout_row += 1 modSettingsGroup.setLayout(modLayout) mlayout = QVBoxLayout() mlayout.addWidget(generatorSettingsGroup) mlayout.addWidget(modSettingsGroup) mlayout.addWidget(modHelpText) self.setLayout(mlayout) self.update_settings(campaign) def update_settings(self, campaign: Campaign) -> None: s = campaign.settings self.player_budget.starting_money.setValue(campaign.recommended_player_money) self.enemy_budget.starting_money.setValue(campaign.recommended_enemy_money) self.no_carrier.setChecked(s.get("no_carrier", False)) self.no_lha.setChecked(s.get("no_lha", False)) self.no_player_navy.setChecked(s.get("no_player_navy", False)) self.no_enemy_navy.setChecked(s.get("no_enemy_navy", False)) self.squadrons_start_full.setChecked(s.get("squadron_start_full", False)) self.f9f_panther.setChecked(s.get("f9f_panther", False)) self.a4_skyhawk.setChecked(s.get("a4_skyhawk", False)) self.a6a_intruder.setChecked(s.get("a6a_intruder", False)) self.a7e_corsair2.setChecked(s.get("a7e_corsair2", False)) self.ea6b_prowler.setChecked(s.get("ea6b_prowler", False)) self.hercules.setChecked(s.get("hercules", False)) self.uh_60l.setChecked(s.get("uh_60l", False)) self.f4bc_phantom.setChecked(s.get("f4bc_phantom", False)) self.f15d_baz.setChecked(s.get("f15d_baz", False)) self.f_15_idf.setChecked(s.get("f_15_idf", False)) self.f_16_idf.setChecked(s.get("f_16_idf", False)) self.fa_18efg.setChecked(s.get("fa_18efg", False)) self.f22_raptor.setChecked(s.get("f22_raptor", False)) self.f84g_thunderjet.setChecked(s.get("f84g_thunderjet", False)) self.f100_supersabre.setChecked(s.get("f100_supersabre", False)) self.f104_starfighter.setChecked(s.get("f104_starfighter", False)) self.f105_thunderchief.setChecked(s.get("f105_thunderchief", False)) self.f106_deltadart.setChecked(s.get("f106_deltadart", False)) self.jas39_gripen.setChecked(s.get("jas39_gripen", False)) self.sk_60.setChecked(s.get("sk_60", False)) self.mirage_3.setChecked(s.get("mirage_3", False)) self.super_etendard.setChecked(s.get("super_etendard", False)) self.su30_flanker_h.setChecked(s.get("su30_flanker_h", False)) self.su57_felon.setChecked(s.get("su57_felon", False)) self.ov10a_bronco.setChecked(s.get("ov10a_bronco", False)) self.frenchpack.setChecked(s.get("frenchpack", False)) self.high_digit_sams.setChecked(s.get("high_digit_sams", False)) self.spanishnavypack.setChecked(s.get("spanishnavypack", False)) self.irondome.setChecked(s.get("irondome", False)) self.swedishmilitaryassetspack.setChecked( s.get("swedishmilitaryassetspack", False) ) self.vietnamwarvessels.setChecked(s.get("vietnamwarvessels", False)) self.chinesemilitaryassetspack.setChecked( s.get("chinesemilitaryassetspack", False) ) self.russianmilitaryassetspack.setChecked( s.get("russianmilitaryassetspack", False) ) self.usamilitaryassetspack.setChecked(s.get("usamilitaryassetspack", False)) self.ukrainemilitaryassetspack.setChecked( s.get("ukrainemilitaryassetspack", False) )