fix: Fixes from the ETF release day (#468)

Co-authored-by: Dennis Ploeger <develop@dieploegers.de>
This commit is contained in:
Dennis Ploeger
2021-11-28 15:33:38 +01:00
committed by GitHub
parent 5fd0d79606
commit 84fe9b64af
7 changed files with 42 additions and 111 deletions

View File

@@ -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

View File

@@ -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()

View File

@@ -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

View File

@@ -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()

View File

@@ -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"
)

View File

@@ -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

View File

@@ -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"
}