#128: a dialog stops the game until it is acknowledged
While a line is on the banner the whole tree is paused, which freezes the fleet, the enemies and GameState's own production and wave clocks, and stops input reaching any node but the banner. So a press while a dialog is up acknowledges it and does nothing else - it cannot also steer the fleet or open a menu on the way through. The pause is owned by NarrationBanner rather than by its callers: the thing that must not get out of step is "a line is showing" and "the game is stopped", and the banner is the only code that knows the first. It releases on the last line, on clear(), and on leaving the tree - a scene swapped out mid-line must not leave the game stopped with nothing left to start it. Two consequences worth naming. A beat's deadline in the prologue is now game time, so it can no longer run out from under an unread line; it remains the way past a beat the player will not finish. And "the prologue leaves you movement and nothing else" was applied by _process on the first frame, which no longer comes - the prologue opens ON a dialog - so BuildController and WorldMap apply it at _ready too.
This commit is contained in:
parent
902d6922e7
commit
1e89780bd7
7 changed files with 330 additions and 10 deletions
|
|
@ -325,6 +325,13 @@ func _ready() -> void:
|
|||
transfer_button.visible = false
|
||||
hangar_button.visible = false
|
||||
hangar_menu.visible = false
|
||||
# #128: the prologue's "movement and nothing else" used to be applied by
|
||||
# _process on the first frame. A dialog now stops the tree, and the
|
||||
# prologue opens ON one - so that first frame never came and every action
|
||||
# button was left on screen behind the opening line. Applied here as well,
|
||||
# where it does not depend on the game running.
|
||||
if GameState.intro_active:
|
||||
_hide_all_actions()
|
||||
_layout_context_buttons()
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue