Merge branch 'dev' into f16i-mod-support-v2.2

This commit is contained in:
MetalStormGhost
2022-10-29 12:50:03 +03:00
committed by GitHub
169 changed files with 2599 additions and 394 deletions

View File

@@ -306,8 +306,10 @@ def create_game(
),
ModSettings(
a4_skyhawk=False,
a6a_intruder=False,
f4b_phantom=False,
f22_raptor=False,
f84g_thunderjet=False,
f100_supersabre=False,
f104_starfighter=False,
f105_thunderchief=False,

View File

@@ -63,10 +63,18 @@ def load_icons():
ICONS["Hangar"] = QPixmap("./resources/ui/misc/hangar.png")
ICONS["Dawn"] = QPixmap("./resources/ui/conditions/timeofday/dawn.png")
ICONS["Day"] = QPixmap("./resources/ui/conditions/timeofday/day.png")
ICONS["Dusk"] = QPixmap("./resources/ui/conditions/timeofday/dusk.png")
ICONS["Night"] = QPixmap("./resources/ui/conditions/timeofday/night.png")
ICONS["Dawn"] = QPixmap(
"./resources/ui/conditions/" + get_theme_icons() + "/timeofday/dawn.png"
)
ICONS["Day"] = QPixmap(
"./resources/ui/conditions/" + get_theme_icons() + "/timeofday/day.png"
)
ICONS["Dusk"] = QPixmap(
"./resources/ui/conditions/" + get_theme_icons() + "/timeofday/dusk.png"
)
ICONS["Night"] = QPixmap(
"./resources/ui/conditions/" + get_theme_icons() + "/timeofday/night.png"
)
ICONS["Money"] = QPixmap(
"./resources/ui/misc/" + get_theme_icons() + "/money_icon.png"
@@ -116,46 +124,64 @@ def load_icons():
"""
Weather Icons
"""
ICONS["Weather_winds"] = QPixmap("./resources/ui/conditions/weather/winds.png")
ICONS["Weather_winds"] = QPixmap(
"./resources/ui/conditions/" + get_theme_icons() + "/weather/winds.png"
)
ICONS["Weather_day-clear"] = QPixmap(
"./resources/ui/conditions/weather/day-clear.png"
"./resources/ui/conditions/" + get_theme_icons() + "/weather/day-clear.png"
)
ICONS["Weather_day-cloudy-fog"] = QPixmap(
"./resources/ui/conditions/weather/day-cloudy-fog.png"
"./resources/ui/conditions/" + get_theme_icons() + "/weather/day-cloudy-fog.png"
)
ICONS["Weather_day-fog"] = QPixmap(
"./resources/ui/conditions/" + get_theme_icons() + "/weather/day-fog.png"
)
ICONS["Weather_day-fog"] = QPixmap("./resources/ui/conditions/weather/day-fog.png")
ICONS["Weather_day-partly-cloudy"] = QPixmap(
"./resources/ui/conditions/weather/day-partly-cloudy.png"
"./resources/ui/conditions/"
+ get_theme_icons()
+ "/weather/day-partly-cloudy.png"
)
ICONS["Weather_day-rain"] = QPixmap(
"./resources/ui/conditions/weather/day-rain.png"
"./resources/ui/conditions/" + get_theme_icons() + "/weather/day-rain.png"
)
ICONS["Weather_day-thunderstorm"] = QPixmap(
"./resources/ui/conditions/weather/day-thunderstorm.png"
"./resources/ui/conditions/"
+ get_theme_icons()
+ "/weather/day-thunderstorm.png"
)
ICONS["Weather_day-totally-cloud"] = QPixmap(
"./resources/ui/conditions/weather/day-totally-cloud.png"
"./resources/ui/conditions/"
+ get_theme_icons()
+ "/weather/day-totally-cloud.png"
)
ICONS["Weather_night-clear"] = QPixmap(
"./resources/ui/conditions/weather/night-clear.png"
"./resources/ui/conditions/" + get_theme_icons() + "/weather/night-clear.png"
)
ICONS["Weather_night-cloudy-fog"] = QPixmap(
"./resources/ui/conditions/weather/night-cloudy-fog.png"
"./resources/ui/conditions/"
+ get_theme_icons()
+ "/weather/night-cloudy-fog.png"
)
ICONS["Weather_night-fog"] = QPixmap(
"./resources/ui/conditions/weather/night-fog.png"
"./resources/ui/conditions/" + get_theme_icons() + "/weather/night-fog.png"
)
ICONS["Weather_night-partly-cloudy"] = QPixmap(
"./resources/ui/conditions/weather/night-partly-cloudy.png"
"./resources/ui/conditions/"
+ get_theme_icons()
+ "/weather/night-partly-cloudy.png"
)
ICONS["Weather_night-rain"] = QPixmap(
"./resources/ui/conditions/weather/night-rain.png"
"./resources/ui/conditions/" + get_theme_icons() + "/weather/night-rain.png"
)
ICONS["Weather_night-thunderstorm"] = QPixmap(
"./resources/ui/conditions/weather/night-thunderstorm.png"
"./resources/ui/conditions/"
+ get_theme_icons()
+ "/weather/night-thunderstorm.png"
)
ICONS["Weather_night-totally-cloud"] = QPixmap(
"./resources/ui/conditions/weather/night-totally-cloud.png"
"./resources/ui/conditions/"
+ get_theme_icons()
+ "/weather/night-totally-cloud.png"
)
ICONS["heading"] = QPixmap("./resources/ui/misc/heading.png")

View File

@@ -1,4 +1,4 @@
from PySide2.QtWidgets import QLabel, QHBoxLayout, QGroupBox, QPushButton
from PySide2.QtWidgets import QHBoxLayout, QGroupBox, QPushButton
import qt_ui.uiconstants as CONST
from game import Game

View File

@@ -1,4 +1,5 @@
from PySide2.QtWidgets import QLabel, QGroupBox, QGridLayout
from game import Game

View File

@@ -41,15 +41,6 @@ class QIntelBox(QGroupBox):
self.economic_strength = QLabel()
summary.addWidget(self.economic_strength, 2, 1)
# some dirty styling to make the labels show up well on the button
button_text_style = "background-color: rgba(0,0,0,0%); color: white;"
air_superiority.setStyleSheet(button_text_style)
front_line.setStyleSheet(button_text_style)
economy.setStyleSheet(button_text_style)
self.air_strength.setStyleSheet(button_text_style)
self.ground_strength.setStyleSheet(button_text_style)
self.economic_strength.setStyleSheet(button_text_style)
self.details = QPushButton()
self.details.setMinimumHeight(50)
self.details.setMinimumWidth(210)

View File

@@ -11,7 +11,6 @@ from PySide2.QtWidgets import (
import qt_ui.uiconstants as CONST
from game import Game, persistency
from game.game import TurnState
from game.ato.package import Package
from game.ato.traveltime import TotEstimator
from game.profiling import logged_duration

View File

@@ -1,5 +1,6 @@
"""Combo box for selecting aircraft types."""
from PySide2.QtWidgets import QComboBox
from game.dcs.aircrafttype import AircraftType

View File

@@ -1,9 +1,9 @@
"""Combo box for selecting a flight's task type."""
from PySide2.QtWidgets import QComboBox
from game.ato.flighttype import FlightType
from game.settings.settings import Settings
from game.theater import ConflictTheater, MissionTarget

View File

@@ -1,10 +1,6 @@
import random
from PySide2.QtGui import QStandardItemModel, QStandardItem
from PySide2.QtWidgets import (
QGroupBox,
QLabel,
QWidget,
QVBoxLayout,
QListView,
QAbstractItemView,

View File

@@ -29,6 +29,7 @@ from PySide2.QtWidgets import (
QToolButton,
QMessageBox,
)
from game import Game
from game.ato.flighttype import FlightType
from game.coalition import Coalition

View File

@@ -17,9 +17,9 @@ from PySide2.QtWidgets import (
QHBoxLayout,
)
from game.ato.flight import Flight
from game.squadrons import Squadron
from game.theater import ConflictTheater
from game.ato.flight import Flight
from qt_ui.delegates import TwoColumnRowDelegate
from qt_ui.models import GameModel, AirWingModel, SquadronModel, AtoModel
from qt_ui.windows.SquadronDialog import SquadronDialog

View File

@@ -5,8 +5,8 @@ from typing import Optional
from PySide2.QtCore import QObject, Signal
from game import Game
from game.game import TurnState
from game.debriefing import Debriefing
from game.game import TurnState
class GameUpdateSignal(QObject):

View File

@@ -12,10 +12,8 @@ from PySide2.QtWidgets import (
)
from game.debriefing import Debriefing
from game.game import TurnState
from qt_ui.windows.GameUpdateSignal import GameUpdateSignal
T = TypeVar("T")

View File

@@ -11,11 +11,11 @@ from PySide2.QtWidgets import (
)
import game.ato.ai_flight_planner_db
from game.ato.flighttype import FlightType
from game.dcs.aircrafttype import AircraftType
from game.dcs.groundunittype import GroundUnitType
from game.dcs.unittype import UnitType
from game.game import Game
from game.ato.flighttype import FlightType
from qt_ui.uiconstants import AIRCRAFT_BANNERS, VEHICLE_BANNERS

View File

@@ -9,12 +9,10 @@ from PySide2.QtWidgets import (
QVBoxLayout,
QWidget,
)
from dcs.ships import Stennis, KUZNECOW
from game import Game
from game.ato.flighttype import FlightType
from game.config import RUNWAY_REPAIR_COST
from game.game import TurnState
from game.server import EventStream
from game.sim import GameUpdateEvents
from game.theater import (

View File

@@ -11,12 +11,12 @@ from PySide2.QtWidgets import (
)
from game.dcs.aircrafttype import AircraftType
from game.purchaseadapter import AircraftPurchaseAdapter
from game.squadrons import Squadron
from game.theater import ControlPoint
from qt_ui.models import GameModel
from qt_ui.uiconstants import ICONS
from qt_ui.windows.basemenu.UnitTransactionFrame import UnitTransactionFrame
from game.purchaseadapter import AircraftPurchaseAdapter
class QAircraftRecruitmentMenu(UnitTransactionFrame[Squadron]):

View File

@@ -2,10 +2,10 @@ from PySide2.QtCore import Qt
from PySide2.QtWidgets import QGridLayout, QScrollArea, QVBoxLayout, QWidget
from game.dcs.groundunittype import GroundUnitType
from game.purchaseadapter import GroundUnitPurchaseAdapter
from game.theater import ControlPoint
from qt_ui.models import GameModel
from qt_ui.windows.basemenu.UnitTransactionFrame import UnitTransactionFrame
from game.purchaseadapter import GroundUnitPurchaseAdapter
class QArmorRecruitmentMenu(UnitTransactionFrame[GroundUnitType]):

View File

@@ -2,9 +2,9 @@ import os
from PySide2.QtGui import QPixmap
from PySide2.QtWidgets import QGroupBox, QHBoxLayout, QLabel, QVBoxLayout
from game.theater import TheaterUnit
from game.config import REWARDS
from game.theater import TheaterUnit
class QBuildingInfo(QGroupBox):

View File

@@ -2,7 +2,7 @@ from PySide2.QtCore import QItemSelectionModel, QPoint
from PySide2.QtGui import QStandardItemModel
from PySide2.QtWidgets import QListView
from game import Game, game
from game import Game
from qt_ui.windows.infos.QInfoItem import QInfoItem

View File

@@ -1,4 +1,4 @@
from PySide2.QtWidgets import QFrame, QVBoxLayout, QLabel, QGroupBox
from PySide2.QtWidgets import QVBoxLayout, QGroupBox
from game import Game
from qt_ui.windows.infos.QInfoList import QInfoList

View File

@@ -2,13 +2,13 @@ import logging
import typing
from PySide2.QtCore import Signal
from PySide2.QtGui import QTextCursor, QIcon
from PySide2.QtWidgets import (
QDialog,
QPlainTextEdit,
QVBoxLayout,
QPushButton,
)
from PySide2.QtGui import QTextCursor, QIcon
from qt_ui.logging_handler import HookableInMemoryHandler

View File

@@ -14,12 +14,12 @@ from PySide2.QtWidgets import (
from dcs.unittype import FlyingType
from game import Game
from game.ato.flight import Flight
from game.ato.flightroster import FlightRoster
from game.ato.package import Package
from game.ato.starttype import StartType
from game.squadrons.squadron import Squadron
from game.theater import ControlPoint, OffMapSpawn
from game.ato.package import Package
from game.ato.flightroster import FlightRoster
from game.ato.flight import Flight
from qt_ui.uiconstants import EVENT_ICONS
from qt_ui.widgets.QFlightSizeSpinner import QFlightSizeSpinner
from qt_ui.widgets.QLabeledWidget import QLabeledWidget

View File

@@ -3,9 +3,9 @@ from typing import Optional
from PySide2.QtWidgets import QComboBox
from game.ato.flighttype import FlightType
from game.dcs.aircrafttype import AircraftType
from game.squadrons.airwing import AirWing
from game.ato.flighttype import FlightType
class SquadronSelector(QComboBox):

View File

@@ -7,8 +7,8 @@ from PySide2.QtWidgets import (
)
from game import Game
from game.data.weapons import Pylon
from game.ato.flight import Flight
from game.data.weapons import Pylon
from qt_ui.windows.mission.flight.payload.QPylonEditor import QPylonEditor

View File

@@ -5,9 +5,9 @@ from typing import Optional
from PySide2.QtWidgets import QComboBox
from game import Game
from game.data.weapons import Pylon, Weapon
from game.ato.flight import Flight
from game.ato.loadouts import Loadout
from game.data.weapons import Pylon, Weapon
class QPylonEditor(QComboBox):

View File

@@ -14,9 +14,9 @@ from PySide2.QtWidgets import (
)
from game import Game
from game.squadrons.pilot import Pilot
from game.ato.flightroster import FlightRoster
from game.ato.flight import Flight
from game.ato.flightroster import FlightRoster
from game.squadrons.pilot import Pilot
from qt_ui.models import PackageModel

View File

@@ -7,12 +7,12 @@ from qt_ui.models import PackageModel
from qt_ui.windows.mission.flight.settings.FlightAirfieldDisplay import (
FlightAirfieldDisplay,
)
from qt_ui.windows.mission.flight.settings.QCustomName import QFlightCustomName
from qt_ui.windows.mission.flight.settings.QFlightSlotEditor import QFlightSlotEditor
from qt_ui.windows.mission.flight.settings.QFlightStartType import QFlightStartType
from qt_ui.windows.mission.flight.settings.QFlightTypeTaskInfo import (
QFlightTypeTaskInfo,
)
from qt_ui.windows.mission.flight.settings.QCustomName import QFlightCustomName
class QGeneralFlightSettingsTab(QFrame):

View File

@@ -1,5 +1,3 @@
from typing import List
from PySide2.QtGui import QStandardItem
from game.ato.flightwaypoint import FlightWaypoint

View File

@@ -4,10 +4,10 @@ from PySide2.QtCore import QItemSelectionModel, QPoint
from PySide2.QtGui import QStandardItem, QStandardItemModel
from PySide2.QtWidgets import QHeaderView, QTableView
from game.ato.package import Package
from game.ato.flightwaypointtype import FlightWaypointType
from game.ato.flightwaypoint import FlightWaypoint
from game.ato.flight import Flight
from game.ato.flightwaypoint import FlightWaypoint
from game.ato.flightwaypointtype import FlightWaypointType
from game.ato.package import Package
from qt_ui.windows.mission.flight.waypoints.QFlightWaypointItem import QWaypointItem

View File

@@ -159,10 +159,12 @@ class NewGameWizard(QtWidgets.QWizard):
)
mod_settings = ModSettings(
a4_skyhawk=self.field("a4_skyhawk"),
a6a_intruder=self.field("a6a_intruder"),
f4b_phantom=self.field("f4b_phantom"),
f15d_baz=self.field("f15d_baz"),
f_16_idf=self.field("f_16_idf"),
f22_raptor=self.field("f22_raptor"),
f84g_thunderjet=self.field("f84g_thunderjet"),
f100_supersabre=self.field("f100_supersabre"),
f104_starfighter=self.field("f104_starfighter"),
f105_thunderchief=self.field("f105_thunderchief"),
@@ -657,6 +659,8 @@ class GeneratorOptions(QtWidgets.QWizardPage):
modSettingsGroup = QtWidgets.QGroupBox("Mod Settings")
a4_skyhawk = QtWidgets.QCheckBox()
self.registerField("a4_skyhawk", a4_skyhawk)
a6a_intruder = QtWidgets.QCheckBox()
self.registerField("a6a_intruder", a6a_intruder)
hercules = QtWidgets.QCheckBox()
self.registerField("hercules", hercules)
uh_60l = QtWidgets.QCheckBox()
@@ -669,6 +673,8 @@ class GeneratorOptions(QtWidgets.QWizardPage):
self.registerField("f_16_idf", f_16_idf)
f22_raptor = QtWidgets.QCheckBox()
self.registerField("f22_raptor", f22_raptor)
f84g_thunderjet = QtWidgets.QCheckBox()
self.registerField("f84g_thunderjet", f84g_thunderjet)
f100_supersabre = QtWidgets.QCheckBox()
self.registerField("f100_supersabre", f100_supersabre)
f104_starfighter = QtWidgets.QCheckBox()
@@ -698,6 +704,11 @@ class GeneratorOptions(QtWidgets.QWizardPage):
)
modLayout.addWidget(a4_skyhawk, modLayout_row, 1)
modLayout_row += 1
modLayout.addWidget(
QtWidgets.QLabel("A-6A Intruder (v2.7.5.01)"), modLayout_row, 0
)
modLayout.addWidget(a6a_intruder, modLayout_row, 1)
modLayout_row += 1
modLayout.addWidget(
QtWidgets.QLabel("F-4B Phantom II (v2.7.10.02 EFM + Patch 2022.10.02)"),
modLayout_row,
@@ -715,11 +726,18 @@ class GeneratorOptions(QtWidgets.QWizardPage):
)
modLayout.addWidget(f_16_idf, modLayout_row, 1)
modLayout_row += 1
# Section break here for readability
modLayout.addWidget(QtWidgets.QWidget(), modLayout_row, 0)
modLayout_row += 1
modLayout.addWidget(QtWidgets.QLabel("F-22A Raptor"), modLayout_row, 0)
modLayout.addWidget(f22_raptor, modLayout_row, 1)
modLayout_row += 1
# Section break here for readability
modLayout.addWidget(QtWidgets.QWidget(), modLayout_row, 0)
modLayout.addWidget(
QtWidgets.QLabel("F-84G Thunderjet (version 2.5.7.01)"),
modLayout_row,
0,
)
modLayout.addWidget(f84g_thunderjet, modLayout_row, 1)
modLayout_row += 1
modLayout.addWidget(
QtWidgets.QLabel("F-100 Super Sabre (version 2.7.18.30765 patch 09.10.22)"),
@@ -742,6 +760,9 @@ class GeneratorOptions(QtWidgets.QWizardPage):
)
modLayout.addWidget(f105_thunderchief, modLayout_row, 1)
modLayout_row += 1
# Section break here for readability
modLayout.addWidget(QtWidgets.QWidget(), modLayout_row, 0)
modLayout_row += 1
modLayout.addWidget(
QtWidgets.QLabel("C-130J-30 Super Hercules"), modLayout_row, 0
)
@@ -752,9 +773,6 @@ class GeneratorOptions(QtWidgets.QWizardPage):
)
modLayout.addWidget(uh_60l, modLayout_row, 1)
modLayout_row += 1
# Section break here for readability
modLayout.addWidget(QtWidgets.QWidget(), modLayout_row, 0)
modLayout_row += 1
modLayout.addWidget(
QtWidgets.QLabel("JAS 39 Gripen (version v1.8.0-beta)"), modLayout_row, 0
)
@@ -768,11 +786,16 @@ class GeneratorOptions(QtWidgets.QWizardPage):
modLayout.addWidget(QtWidgets.QLabel("Su-57 Felon"), modLayout_row, 0)
modLayout.addWidget(su57_felon, modLayout_row, 1)
modLayout_row += 1
# Section break here for readability
modLayout.addWidget(QtWidgets.QWidget(), modLayout_row, 0)
modLayout_row += 14
modLayout.addWidget(QtWidgets.QLabel("Frenchpack"), modLayout_row, 0)
modLayout.addWidget(frenchpack, modLayout_row, 1)
modLayout_row += 1
modLayout.addWidget(QtWidgets.QLabel("High Digit SAMs"), modLayout_row, 0)
modLayout.addWidget(high_digit_sams, modLayout_row, 1)
# new column starts here
modLayout_row = 1
modLayout.addWidget(QtWidgets.QLabel("High Digit SAMs"), modLayout_row, 2)
modLayout.addWidget(high_digit_sams, modLayout_row, 3)
modSettingsGroup.setLayout(modLayout)
mlayout = QVBoxLayout()

View File

@@ -1,3 +1,5 @@
from PySide2.QtCore import QTimer
from PySide2.QtGui import QTextCursor
from PySide2.QtWidgets import (
QDialog,
QPlainTextEdit,
@@ -6,14 +8,10 @@ from PySide2.QtWidgets import (
QPushButton,
QLabel,
)
from PySide2.QtGui import QTextCursor
from PySide2.QtCore import QTimer
import qt_ui.uiconstants as CONST
from game.game import Game
from time import sleep
class QNotesWindow(QDialog):
def __init__(self, game: Game):

View File

@@ -1,4 +1,4 @@
from PySide2.QtGui import QIcon, Qt
from PySide2.QtGui import QIcon
from PySide2.QtWidgets import QDialog, QVBoxLayout, QPushButton, QHBoxLayout
from qt_ui.windows.preferences.QLiberationPreferences import QLiberationPreferences

View File

@@ -2,6 +2,7 @@ from PySide2.QtCharts import QtCharts
from PySide2.QtCore import QPoint, Qt
from PySide2.QtGui import QPainter
from PySide2.QtWidgets import QFrame, QGridLayout
from game import Game

View File

@@ -2,6 +2,7 @@ from PySide2.QtCharts import QtCharts
from PySide2.QtCore import QPoint, Qt
from PySide2.QtGui import QPainter
from PySide2.QtWidgets import QFrame, QGridLayout
from game import Game