Allow NGW to be called from anywhere.

Any real end game dialog needs a "new game" button. If only the main
window can usefully call the NGW we'd have to plumb that object through
and call into it from that dialog, which is gross. Just make it easier
to call the wizard.

https://github.com/dcs-liberation/dcs_liberation/issues/978
This commit is contained in:
Dan Albert 2023-06-12 22:29:42 -07:00
parent 1162e0aa29
commit 0534f66b30
3 changed files with 7 additions and 8 deletions

View File

@ -16,6 +16,7 @@ class GameUpdateSignal(QObject):
debriefingReceived = Signal(Debriefing) debriefingReceived = Signal(Debriefing)
game_loaded = Signal(Game) game_loaded = Signal(Game)
game_generated = Signal(Game)
def __init__(self): def __init__(self):
super(GameUpdateSignal, self).__init__() super(GameUpdateSignal, self).__init__()

View File

@ -152,6 +152,7 @@ class QLiberationWindow(QMainWindow):
def connectSignals(self): def connectSignals(self):
GameUpdateSignal.get_instance().gameupdated.connect(self.setGame) GameUpdateSignal.get_instance().gameupdated.connect(self.setGame)
GameUpdateSignal.get_instance().debriefingReceived.connect(self.onDebriefing) GameUpdateSignal.get_instance().debriefingReceived.connect(self.onDebriefing)
GameUpdateSignal.get_instance().game_generated.connect(self.onGameGenerated)
def initActions(self): def initActions(self):
self.newGameAction = QAction("&New Game", self) self.newGameAction = QAction("&New Game", self)
@ -332,7 +333,6 @@ class QLiberationWindow(QMainWindow):
def newGame(self): def newGame(self):
wizard = NewGameWizard(self) wizard = NewGameWizard(self)
wizard.show() wizard.show()
wizard.accepted.connect(lambda: self.onGameGenerated(wizard.generatedGame))
def openFile(self): def openFile(self):
if ( if (

View File

@ -28,6 +28,7 @@ from game.theater.start_generator import GameGenerator, GeneratorSettings, ModSe
from qt_ui.widgets.QLiberationCalendar import QLiberationCalendar from qt_ui.widgets.QLiberationCalendar import QLiberationCalendar
from qt_ui.widgets.spinsliders import CurrencySpinner, FloatSpinSlider, TimeInputs from qt_ui.widgets.spinsliders import CurrencySpinner, FloatSpinSlider, TimeInputs
from qt_ui.windows.AirWingConfigurationDialog import AirWingConfigurationDialog from qt_ui.windows.AirWingConfigurationDialog import AirWingConfigurationDialog
from qt_ui.windows.GameUpdateSignal import GameUpdateSignal
from qt_ui.windows.newgame.QCampaignList import QCampaignList from qt_ui.windows.newgame.QCampaignList import QCampaignList
jinja_env = Environment( jinja_env = Environment(
@ -139,7 +140,6 @@ class NewGameWizard(QtWidgets.QWizard):
self.setWizardStyle(QtWidgets.QWizard.ModernStyle) self.setWizardStyle(QtWidgets.QWizard.ModernStyle)
self.setWindowTitle("New Game") self.setWindowTitle("New Game")
self.generatedGame = None
def accept(self): def accept(self):
logging.info("New Game Wizard accept") logging.info("New Game Wizard accept")
@ -228,16 +228,14 @@ class NewGameWizard(QtWidgets.QWizard):
mod_settings, mod_settings,
self.lua_plugin_manager, self.lua_plugin_manager,
) )
self.generatedGame = generator.generate() game = generator.generate()
if ( if AirWingConfigurationDialog(game, self).exec() == QDialog.DialogCode.Rejected:
AirWingConfigurationDialog(self.generatedGame, self).exec()
== QDialog.DialogCode.Rejected
):
logging.info("Aborted air wing configuration") logging.info("Aborted air wing configuration")
return return
self.generatedGame.begin_turn_0(squadrons_start_full=use_new_squadron_rules) game.begin_turn_0(squadrons_start_full=use_new_squadron_rules)
GameUpdateSignal.get_instance().game_generated.emit(game)
super(NewGameWizard, self).accept() super(NewGameWizard, self).accept()