mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Added performance settings.
This commit is contained in:
parent
7ee880cadc
commit
a38f9c2183
@ -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")
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
15
gen/armor.py
15
gen/armor.py
@ -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
|
||||||
|
|||||||
@ -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:
|
||||||
|
|||||||
@ -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):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user