fix: Fixes from the ETF release day (#468)
Co-authored-by: Dennis Ploeger <develop@dieploegers.de>
This commit is contained in:
@@ -93,6 +93,17 @@ func _process(delta: float) -> void:
|
||||
channel_name,
|
||||
_running_events[channel_name].name
|
||||
)
|
||||
|
||||
var event_flags = _running_events[channel_name].flags
|
||||
if event_flags & ESCEvent.FLAG_NO_TT:
|
||||
escoria.main.current_scene.game.tooltip_node.hide()
|
||||
|
||||
if event_flags & ESCEvent.FLAG_NO_UI:
|
||||
escoria.main.current_scene.game.hide_ui()
|
||||
|
||||
if event_flags & ESCEvent.FLAG_NO_SAVE:
|
||||
escoria.save_manager.save_enabled = false
|
||||
|
||||
_running_events[channel_name].run()
|
||||
for event in self.scheduled_events:
|
||||
(event as ESCScheduledEvent).timeout -= delta
|
||||
@@ -136,6 +147,7 @@ func interrupt_running_event():
|
||||
for channel_name in _running_events.keys():
|
||||
if _running_events[channel_name] != null:
|
||||
_running_events[channel_name].interrupt()
|
||||
_channels_state[channel_name] = true
|
||||
|
||||
|
||||
# Clears the event queues.
|
||||
@@ -173,6 +185,16 @@ func _on_event_finished(return_code: int, channel_name: String) -> void:
|
||||
"Event %s ended with return code %d" % [event.name, return_code]
|
||||
)
|
||||
|
||||
var event_flags = event.flags
|
||||
if event_flags & ESCEvent.FLAG_NO_TT:
|
||||
escoria.main.current_scene.game.tooltip_node.show()
|
||||
|
||||
if event_flags & ESCEvent.FLAG_NO_UI:
|
||||
escoria.main.current_scene.game.show_ui()
|
||||
|
||||
if event_flags & ESCEvent.FLAG_NO_SAVE:
|
||||
escoria.save_manager.save_enabled = true
|
||||
|
||||
if return_code == ESCExecution.RC_CANCEL:
|
||||
return_code = ESCExecution.RC_OK
|
||||
|
||||
|
||||
@@ -77,5 +77,6 @@ func _init(event_string: String):
|
||||
|
||||
# Execute this statement and return its return code
|
||||
func run() -> int:
|
||||
reset_interrupt()
|
||||
escoria.logger.debug("Event %s started" % name)
|
||||
return .run()
|
||||
|
||||
@@ -64,7 +64,7 @@ func _set_active(value: bool):
|
||||
#
|
||||
# **Returns** Whether the node is interactive or not
|
||||
func _get_interactive() -> bool:
|
||||
if "is_interactive" in self.node:
|
||||
if is_instance_valid(self.node) and "is_interactive" in self.node:
|
||||
return self.node.is_interactive
|
||||
else:
|
||||
return true
|
||||
|
||||
@@ -64,10 +64,18 @@ func interrupt():
|
||||
_is_interrupted = true
|
||||
for statement in statements:
|
||||
if statement.is_finished:
|
||||
var name = statement.name if "name" in statement else "group"
|
||||
escoria.logger.debug(
|
||||
"event manager",
|
||||
["Event %s (%s) is already finished. Won't interrupt."
|
||||
% [statement.name, str(statement)]]
|
||||
% [name, str(statement)]]
|
||||
)
|
||||
else:
|
||||
statement.interrupt()
|
||||
|
||||
|
||||
# Resets an interrupted event
|
||||
func reset_interrupt():
|
||||
_is_interrupted = false
|
||||
for statement in statements:
|
||||
statement.reset_interrupt()
|
||||
|
||||
@@ -135,48 +135,6 @@ func perform_inputevent_on_object(
|
||||
if dont_interact:
|
||||
return
|
||||
|
||||
# If NO_TT flag is active, hide tooltip and connect for
|
||||
# event finished to show it back
|
||||
if event_flags & ESCEvent.FLAG_NO_TT \
|
||||
and not escoria.event_manager.is_connected(
|
||||
"event_finished",
|
||||
self,
|
||||
"_on_no_tooltip_event_finished"
|
||||
):
|
||||
escoria.main.current_scene.game.tooltip_node.hide()
|
||||
escoria.event_manager.connect(
|
||||
"event_finished",
|
||||
self,
|
||||
"_on_no_tooltip_event_finished"
|
||||
)
|
||||
|
||||
if event_flags & ESCEvent.FLAG_NO_UI and \
|
||||
not escoria.event_manager.is_connected(
|
||||
"event_finished",
|
||||
self,
|
||||
"_on_no_ui_event_finished"
|
||||
):
|
||||
escoria.main.current_scene.game.hide_ui()
|
||||
escoria.event_manager.connect(
|
||||
"event_finished",
|
||||
self,
|
||||
"_on_no_ui_event_finished"
|
||||
)
|
||||
|
||||
if event_flags & ESCEvent.FLAG_NO_SAVE and \
|
||||
not escoria.event_manager.is_connected(
|
||||
"event_finished",
|
||||
self,
|
||||
"_on_no_save_event_finished"
|
||||
):
|
||||
escoria.save_manager.save_enabled = false
|
||||
escoria.event_manager.connect(
|
||||
"event_finished",
|
||||
self,
|
||||
"_on_no_save_event_finished"
|
||||
)
|
||||
pass
|
||||
|
||||
# Manage exits
|
||||
if obj.node.is_exit and escoria.action_manager.current_action \
|
||||
in ["", "walk"]:
|
||||
@@ -292,63 +250,3 @@ func _walk_towards_object(
|
||||
walk_context.dont_interact_on_arrival = true
|
||||
|
||||
return context
|
||||
|
||||
|
||||
# Called when an event having "NO_TT" flag is finished.
|
||||
#
|
||||
# ## Parameters
|
||||
#
|
||||
# - _return_code: The ESCExecution return code sent by the events manager.
|
||||
# - _event_name: the name of the event
|
||||
func _on_no_tooltip_event_finished(_return_code: int, _event_name: String):
|
||||
escoria.main.current_scene.game.tooltip_node.show()
|
||||
if escoria.event_manager.is_connected(
|
||||
"event_finished",
|
||||
self,
|
||||
"_on_no_tooltip_event_finished"
|
||||
):
|
||||
escoria.event_manager.disconnect(
|
||||
"event_finished",
|
||||
self,
|
||||
"_on_no_tooltip_event_finished"
|
||||
)
|
||||
|
||||
|
||||
# Called when an event having "NO_UI" flag is finished.
|
||||
#
|
||||
# ## Parameters
|
||||
#
|
||||
# - _return_code: The ESCExecution return code sent by the events manager.
|
||||
# - _event_name: the name of the event
|
||||
func _on_no_ui_event_finished(_return_code: int, _event_name: String):
|
||||
escoria.main.current_scene.game.show_ui()
|
||||
if escoria.event_manager.is_connected(
|
||||
"event_finished",
|
||||
self,
|
||||
"_on_no_ui_event_finished"
|
||||
):
|
||||
escoria.event_manager.disconnect(
|
||||
"event_finished",
|
||||
self,
|
||||
"_on_no_ui_event_finished"
|
||||
)
|
||||
|
||||
|
||||
# Called when an event having "NO_SAVE" flag is finished.
|
||||
#
|
||||
# ## Parameters
|
||||
#
|
||||
# - _return_code: The ESCExecution return code sent by the events manager.
|
||||
# - _event_name: the name of the event
|
||||
func _on_no_save_event_finished(_return_code: int, _event_name: String):
|
||||
escoria.save_manager.save_enabled = true
|
||||
if escoria.event_manager.is_connected(
|
||||
"event_finished",
|
||||
self,
|
||||
"_on_no_save_event_finished"
|
||||
):
|
||||
escoria.event_manager.disconnect(
|
||||
"event_finished",
|
||||
self,
|
||||
"_on_no_save_event_finished"
|
||||
)
|
||||
|
||||
@@ -92,9 +92,11 @@ func set_camera_limits(camera_limit_id: int = 0) -> void:
|
||||
# to stick centered on the background
|
||||
if area.size.x == 0 or area.size.y == 0 \
|
||||
or area.size < get_viewport().size:
|
||||
escoria.logger.report_warning(
|
||||
"main.gd:set_camera_limits()",
|
||||
"No limit area! Using viewport."
|
||||
escoria.logger.report_warnings(
|
||||
"main.gd:set_camera_limits()",
|
||||
[
|
||||
"No limit area! Using viewport."
|
||||
]
|
||||
)
|
||||
area.size = get_viewport().size
|
||||
|
||||
|
||||
@@ -258,7 +258,7 @@ func set_escoria_sound_settings():
|
||||
"escoria/sound/master_volume",
|
||||
1,
|
||||
{
|
||||
"type": TYPE_INT,
|
||||
"type": TYPE_REAL,
|
||||
"hint": PROPERTY_HINT_RANGE,
|
||||
"hint_string": "0,1"
|
||||
}
|
||||
@@ -268,7 +268,7 @@ func set_escoria_sound_settings():
|
||||
"escoria/sound/music_volume",
|
||||
1,
|
||||
{
|
||||
"type": TYPE_INT,
|
||||
"type": TYPE_REAL,
|
||||
"hint": PROPERTY_HINT_RANGE,
|
||||
"hint_string": "0,1"
|
||||
}
|
||||
@@ -278,7 +278,7 @@ func set_escoria_sound_settings():
|
||||
"escoria/sound/sfx_volume",
|
||||
1,
|
||||
{
|
||||
"type": TYPE_INT,
|
||||
"type": TYPE_REAL,
|
||||
"hint": PROPERTY_HINT_RANGE,
|
||||
"hint_string": "0,1"
|
||||
}
|
||||
@@ -288,7 +288,7 @@ func set_escoria_sound_settings():
|
||||
"escoria/sound/speech_volume",
|
||||
1,
|
||||
{
|
||||
"type": TYPE_INT,
|
||||
"type": TYPE_REAL,
|
||||
"hint": PROPERTY_HINT_RANGE,
|
||||
"hint_string": "0,1"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user