Fixed escoria.current_state when dialog line finishes (#391)

- Fixed connect() errors concerning the player being ready'd 2 times in certain cases, so trying to connect signals twice
This commit is contained in:
Julian Murgia
2021-09-10 10:04:11 +02:00
committed by GitHub
parent 0e6e8aa161
commit bb93dc1ef3
4 changed files with 80 additions and 15 deletions

View File

@@ -54,7 +54,8 @@ onready var task = MovableTask.NONE
# Add the signal "arrived" to the parent node, which is emitted when
# the destination position was reached
func _ready() -> void:
parent.add_user_signal("arrived")
if not parent.has_user_signal("arrived"):
parent.add_user_signal("arrived")
# Main processing loop

View File

@@ -78,4 +78,5 @@ func run(command_params: Array) -> int:
command_params[1]
)
yield(escoria.dialog_player, "dialog_line_finished")
escoria.current_state = escoria.GAME_STATE.DEFAULT
return ESCExecution.RC_OK

View File

@@ -158,9 +158,12 @@ func _ready():
_detect_children()
connect("mouse_entered", self, "_on_mouse_entered")
connect("mouse_exited", self, "_on_mouse_exited")
connect("input_event", self, "manage_input")
if not self.is_connected("mouse_entered", self, "_on_mouse_entered"):
connect("mouse_entered", self, "_on_mouse_entered")
if not self.is_connected("mouse_exited", self, "_on_mouse_exited"):
connect("mouse_exited", self, "_on_mouse_exited")
if not self.is_connected("input_event", self, "manage_input"):
connect("input_event", self, "manage_input")
# Register and connect all elements to Escoria backoffice.
if not Engine.is_editor_hint():
@@ -170,7 +173,16 @@ func _ready():
add_child(_movable)
escoria.event_manager.connect("event_finished", self, "_update_terrain")
if not escoria.event_manager.is_connected(
"event_finished",
self,
"_update_terrain"
):
escoria.event_manager.connect(
"event_finished",
self,
"_update_terrain"
)
escoria.object_manager.register_object(
ESCObject.new(
@@ -183,16 +195,65 @@ func _ready():
terrain = escoria.room_terrain
if !is_trigger:
connect("mouse_entered_item", escoria.inputs_manager, "_on_mouse_entered_item")
connect("mouse_exited_item", escoria.inputs_manager, "_on_mouse_exited_item")
connect("mouse_left_clicked_item", escoria.inputs_manager, "_on_mouse_left_clicked_item")
connect("mouse_double_left_clicked_item", escoria.inputs_manager, "_on_mouse_left_double_clicked_item")
connect("mouse_right_clicked_item", escoria.inputs_manager, "_on_mouse_right_clicked_item")
if not self.is_connected(
"mouse_entered_item",
escoria.inputs_manager,
"_on_mouse_entered_item"
):
connect(
"mouse_entered_item",
escoria.inputs_manager,
"_on_mouse_entered_item"
)
if not self.is_connected(
"mouse_exited_item",
escoria.inputs_manager,
"_on_mouse_exited_item"
):
connect(
"mouse_exited_item",
escoria.inputs_manager,
"_on_mouse_exited_item"
)
if not self.is_connected(
"mouse_left_clicked_item",
escoria.inputs_manager,
"_on_mouse_left_clicked_item"
):
connect(
"mouse_left_clicked_item",
escoria.inputs_manager,
"_on_mouse_left_clicked_item"
)
if not self.is_connected(
"mouse_double_left_clicked_item",
escoria.inputs_manager,
"_on_mouse_left_double_clicked_item"
):
connect(
"mouse_double_left_clicked_item",
escoria.inputs_manager,
"_on_mouse_left_double_clicked_item"
)
if not self.is_connected(
"mouse_right_clicked_item",
escoria.inputs_manager,
"_on_mouse_right_clicked_item"
):
connect(
"mouse_right_clicked_item",
escoria.inputs_manager,
"_on_mouse_right_clicked_item"
)
else:
connect("area_entered", self, "element_entered")
connect("area_exited", self, "element_exited")
connect("body_entered", self, "element_entered")
connect("body_exited", self, "element_exited")
if not self.is_connected("area_entered", self, "element_entered"):
connect("area_entered", self, "element_entered")
if not self.is_connected("area_exited", self, "element_exited"):
connect("area_exited", self, "element_exited")
if not self.is_connected("body_entered", self, "element_entered"):
connect("body_entered", self, "element_entered")
if not self.is_connected("body_exited", self, "element_exited"):
connect("body_exited", self, "element_exited")
# If object can be in the inventory, set default_action_inventory to same as
# default_action, if default_action_inventory is not set