Added performance settings.

This commit is contained in:
Khopa 2020-05-31 23:07:54 +02:00
parent 7ee880cadc
commit a38f9c2183
5 changed files with 88 additions and 28 deletions

View File

@ -172,7 +172,8 @@ class Operation:
self.forcedoptionsgen.generate() self.forcedoptionsgen.generate()
# Generate Visuals Smoke Effects # Generate Visuals Smoke Effects
self.visualgen.generate() if self.game.settings.perf_smoke_gen:
self.visualgen.generate()
# Inject Lua Scripts # Inject Lua Scripts
load_mist = TriggerStart(comment="Load Mist Lua Framework") load_mist = TriggerStart(comment="Load Mist Lua Framework")

View File

@ -1,14 +1,25 @@
class Settings: class Settings:
# Difficulty settings
player_skill = "Good" player_skill = "Good"
enemy_skill = "Average" enemy_skill = "Average"
enemy_vehicle_skill = "Average" enemy_vehicle_skill = "Average"
map_coalition_visibility = "All Units" map_coalition_visibility = "All Units"
labels = "Full" labels = "Full"
only_player_takeoff = True only_player_takeoff = True # Legacy parameter do not use
night_disabled = False night_disabled = False
supercarrier = False supercarrier = False
multiplier = 1 multiplier = 1
sams = True sams = True # Legacy parameter do not use
cold_start = False cold_start = False # Legacy parameter do not use
version = None version = None
# Performance oriented
perf_red_alert_state = True
perf_smoke_gen = True
perf_artillery = True
perf_moving_units = True
perf_infantry = True

View File

@ -96,6 +96,11 @@ class GroundConflictGenerator:
def gen_infantry_group_for_group(self, group, is_player, side:Country, forward_heading): def gen_infantry_group_for_group(self, group, is_player, side:Country, forward_heading):
# Disable infantry unit gen if disabled
if not self.game.settings.perf_infantry:
return
infantry_position = group.points[0].position.random_point_within(250, 50) infantry_position = group.points[0].position.random_point_within(250, 50)
if side == self.conflict.attackers_country: if side == self.conflict.attackers_country:
@ -135,12 +140,16 @@ class GroundConflictGenerator:
def plan_action_for_groups(self, stance, ally_groups, enemy_groups, forward_heading, from_cp, to_cp): def plan_action_for_groups(self, stance, ally_groups, enemy_groups, forward_heading, from_cp, to_cp):
if not self.game.settings.perf_moving_units:
return
for dcs_group, group in ally_groups: for dcs_group, group in ally_groups:
if group.role == CombatGroupRole.ARTILLERY: if group.role == CombatGroupRole.ARTILLERY:
# Fire on any ennemy in range # Fire on any ennemy in range
target = self.get_artillery_target_in_range(dcs_group, group, enemy_groups) if self.game.settings.perf_artillery:
if target is not None: target = self.get_artillery_target_in_range(dcs_group, group, enemy_groups)
dcs_group.points[0].tasks.append(FireAtPoint(target, len(group.units) * 10, 100)) if target is not None:
dcs_group.points[0].tasks.append(FireAtPoint(target, len(group.units) * 10, 100))
elif group.role in [CombatGroupRole.TANK, CombatGroupRole.IFV]: elif group.role in [CombatGroupRole.TANK, CombatGroupRole.IFV]:
if stance == CombatStance.AGGRESIVE: if stance == CombatStance.AGGRESIVE:
# Attack nearest enemy if any # Attack nearest enemy if any

View File

@ -77,6 +77,12 @@ class GroundObjectsGenerator:
vehicle.position.y = u.position.y vehicle.position.y = u.position.y
vehicle.heading = u.heading vehicle.heading = u.heading
vg.add_unit(vehicle) vg.add_unit(vehicle)
if self.game.settings.perf_red_alert_state:
vg.points[0].tasks.append(OptAlarmState(2))
else:
vg.points[0].tasks.append(OptAlarmState(1))
elif ground_object.dcs_identifier in ["CARRIER", "LHA"]: elif ground_object.dcs_identifier in ["CARRIER", "LHA"]:
for g in ground_object.groups: for g in ground_object.groups:
if len(g.units) > 0: if len(g.units) > 0:

View File

@ -1,7 +1,7 @@
from PySide2.QtCore import QSize, Qt, QItemSelectionModel, QPoint from PySide2.QtCore import QSize, Qt, QItemSelectionModel, QPoint
from PySide2.QtGui import QStandardItemModel, QStandardItem from PySide2.QtGui import QStandardItemModel, QStandardItem
from PySide2.QtWidgets import QLabel, QDialog, QGridLayout, QListView, QStackedLayout, QComboBox, QWidget, \ from PySide2.QtWidgets import QLabel, QDialog, QGridLayout, QListView, QStackedLayout, QComboBox, QWidget, \
QAbstractItemView, QPushButton, QGroupBox, QCheckBox QAbstractItemView, QPushButton, QGroupBox, QCheckBox, QVBoxLayout
import qt_ui.uiconstants as CONST import qt_ui.uiconstants as CONST
from game.game import Game from game.game import Game
@ -121,32 +121,61 @@ class QSettingsWindow(QDialog):
def initGeneratorLayout(self): def initGeneratorLayout(self):
self.generatorPage = QWidget() self.generatorPage = QWidget()
self.generatorLayout = QGridLayout() self.generatorLayout = QVBoxLayout()
self.generatorLayout.setAlignment(Qt.AlignTop) self.generatorLayout.setAlignment(Qt.AlignTop)
self.generatorPage.setLayout(self.generatorLayout) self.generatorPage.setLayout(self.generatorLayout)
self.coldStart = QCheckBox() self.gameplay = QGroupBox("Gameplay")
self.coldStart.setChecked(self.game.settings.cold_start) self.gameplayLayout = QGridLayout();
self.coldStart.toggled.connect(self.applySettings) self.gameplayLayout.setAlignment(Qt.AlignTop)
self.takeOffOnlyForPlayerGroup = QCheckBox() self.gameplay.setLayout(self.gameplayLayout)
self.takeOffOnlyForPlayerGroup.setChecked(self.game.settings.only_player_takeoff)
self.takeOffOnlyForPlayerGroup.toggled.connect(self.applySettings)
self.coldStart = QCheckBox()
self.coldStart.setChecked(self.game.settings.cold_start)
self.coldStart.toggled.connect(self.applySettings)
self.supercarrier = QCheckBox() self.supercarrier = QCheckBox()
self.supercarrier.setChecked(self.game.settings.supercarrier) self.supercarrier.setChecked(self.game.settings.supercarrier)
self.supercarrier.toggled.connect(self.applySettings) self.supercarrier.toggled.connect(self.applySettings)
# Settings not used anymore self.gameplayLayout.addWidget(QLabel("Use Supercarrier Module"), 0, 0)
# self.generatorLayout.addWidget(QLabel("Aircraft cold start"), 0, 0) self.gameplayLayout.addWidget(self.supercarrier, 0, 1)
# self.generatorLayout.addWidget(self.coldStart, 0, 1)
# self.generatorLayout.addWidget(QLabel("Takeoff only for player group"), 1, 0) self.performance = QGroupBox("Performance")
# self.generatorLayout.addWidget(self.takeOffOnlyForPlayerGroup, 1, 1) self.performanceLayout = QGridLayout();
self.generatorLayout.addWidget(QLabel("Use Supercarrier Module"), 0, 0) self.performanceLayout.setAlignment(Qt.AlignTop)
self.generatorLayout.addWidget(self.supercarrier, 0, 1) self.performance.setLayout(self.performanceLayout)
self.smoke = QCheckBox()
self.smoke.setChecked(self.game.settings.perf_smoke_gen)
self.smoke.toggled.connect(self.applySettings)
self.red_alert = QCheckBox()
self.red_alert.setChecked(self.game.settings.perf_red_alert_state)
self.red_alert.toggled.connect(self.applySettings)
self.arti = QCheckBox()
self.arti.setChecked(self.game.settings.perf_artillery)
self.arti.toggled.connect(self.applySettings)
self.moving_units = QCheckBox()
self.moving_units.setChecked(self.game.settings.perf_moving_units)
self.moving_units.toggled.connect(self.applySettings)
self.infantry = QCheckBox()
self.infantry.setChecked(self.game.settings.perf_infantry)
self.infantry.toggled.connect(self.applySettings)
self.performanceLayout.addWidget(QLabel("Smoke visual effect on frontline"), 0, 0)
self.performanceLayout.addWidget(self.smoke, 0, 1)
self.performanceLayout.addWidget(QLabel("SAM starts in RED alert mode"), 1, 0)
self.performanceLayout.addWidget(self.red_alert, 1, 1)
self.performanceLayout.addWidget(QLabel("Artillery strikes"), 2, 0)
self.performanceLayout.addWidget(self.arti, 2, 1)
self.performanceLayout.addWidget(QLabel("Moving ground units"), 3, 0)
self.performanceLayout.addWidget(self.moving_units, 3, 1)
self.performanceLayout.addWidget(QLabel("Generate infantry squads along vehicles"), 4, 0)
self.performanceLayout.addWidget(self.infantry, 4, 1)
self.generatorLayout.addWidget(self.gameplay)
self.generatorLayout.addWidget(QLabel("Disabling settings below may improve performance, but will impact the overall quality of the experience."))
self.generatorLayout.addWidget(self.performance)
def initCheatLayout(self): def initCheatLayout(self):
@ -194,10 +223,14 @@ class QSettingsWindow(QDialog):
self.game.settings.enemy_vehicle_skill = CONST.SKILL_OPTIONS[self.enemyAASkill.currentIndex()] self.game.settings.enemy_vehicle_skill = CONST.SKILL_OPTIONS[self.enemyAASkill.currentIndex()]
self.game.settings.labels = CONST.LABELS_OPTIONS[self.difficultyLabel.currentIndex()] self.game.settings.labels = CONST.LABELS_OPTIONS[self.difficultyLabel.currentIndex()]
self.game.settings.night_disabled = self.noNightMission.isChecked() self.game.settings.night_disabled = self.noNightMission.isChecked()
self.game.settings.only_player_takeoff = self.takeOffOnlyForPlayerGroup.isChecked()
self.game.settings.cold_start = self.coldStart.isChecked()
self.game.settings.supercarrier = self.supercarrier.isChecked() self.game.settings.supercarrier = self.supercarrier.isChecked()
self.game.settings.perf_red_alert_state = self.red_alert.isChecked()
self.game.settings.perf_smoke_gen = self.smoke.isChecked()
self.game.settings.perf_artillery = self.arti.isChecked()
self.game.settings.perf_moving_units = self.moving_units.isChecked()
self.game.settings.perf_infantry = self.infantry.isChecked()
GameUpdateSignal.get_instance().updateGame(self.game) GameUpdateSignal.get_instance().updateGame(self.game)
def onSelectionChanged(self): def onSelectionChanged(self):