Updated escoria-demo-game
This commit is contained in:
44
addons/escoria-dialog-simple/states/dialog_choices.gd
Normal file
44
addons/escoria-dialog-simple/states/dialog_choices.gd
Normal file
@@ -0,0 +1,44 @@
|
||||
extends "res://addons/escoria-dialog-simple/patterns/state_machine/state.gd"
|
||||
|
||||
|
||||
# The owning dialog player.
|
||||
var _dialog_player
|
||||
|
||||
# The dialog to start.
|
||||
var _dialog: ESCDialog
|
||||
var _type: String = "simple"
|
||||
|
||||
var _dialog_chooser_ui: ESCDialogManager = null
|
||||
|
||||
var _ready_to_choose: bool
|
||||
|
||||
|
||||
func initialize(dialog_player, dialog_chooser_ui: ESCDialogManager, dialog: ESCDialog, type: String) -> void:
|
||||
_dialog_player = dialog_player
|
||||
_dialog_chooser_ui = dialog_chooser_ui
|
||||
_dialog = dialog
|
||||
_type = type
|
||||
|
||||
|
||||
func enter():
|
||||
escoria.logger.trace(self, "Dialog State Machine: Entered 'choices'.")
|
||||
|
||||
if _dialog.options.empty():
|
||||
escoria.logger.error(
|
||||
self,
|
||||
"Received dialog options array was empty."
|
||||
)
|
||||
|
||||
_ready_to_choose = true
|
||||
|
||||
|
||||
func update(_delta):
|
||||
if _ready_to_choose:
|
||||
_ready_to_choose = false
|
||||
_dialog_chooser_ui.do_choose(_dialog_player, _dialog, _type)
|
||||
var option = yield(_dialog_chooser_ui, "option_chosen")
|
||||
|
||||
escoria.logger.trace(self, "Dialog State Machine: 'choices' -> 'idle'")
|
||||
|
||||
emit_signal("finished", "idle")
|
||||
_dialog_player.emit_signal("option_chosen", option)
|
||||
Reference in New Issue
Block a user