From b3cd9abe21f8db8f644f935b60e5b65f8e3d148c Mon Sep 17 00:00:00 2001 From: Julian Murgia Date: Fri, 22 Oct 2021 09:17:03 +0200 Subject: [PATCH] Fix a wrong validation check in camera_set_limits (#418) Events interruption should now work at all time (added interruption in room_selector scene) Fixed missing test in game.gd for when the player is not set Fixed some ESC scripts (worker filled sheet event is now blocking, room13 left door waits simple click, not use verb) --- .../esc/commands/camera_set_limits.gd | 2 +- .../core-scripts/esc/esc_event_manager.gd | 3 ++ .../game/core-scripts/esc_room.gd | 2 +- addons/escoria-ui-9verbs/game.gd | 45 ++++++++++--------- addons/escoria-ui-simplemouse/game.gd | 15 ++++--- game/rooms/room06/esc/worker.esc | 8 ++++ game/rooms/room13/esc/left_exit.esc | 2 +- game/ui/commons/room_select.gd | 2 +- 8 files changed, 47 insertions(+), 32 deletions(-) diff --git a/addons/escoria-core/game/core-scripts/esc/commands/camera_set_limits.gd b/addons/escoria-core/game/core-scripts/esc/commands/camera_set_limits.gd index 3a5a6969..50f9a48b 100644 --- a/addons/escoria-core/game/core-scripts/esc/commands/camera_set_limits.gd +++ b/addons/escoria-core/game/core-scripts/esc/commands/camera_set_limits.gd @@ -21,7 +21,7 @@ func configure() -> ESCCommandArgumentDescriptor: # Validate wether the given arguments match the command descriptor func validate(arguments: Array): - if not escoria.main.current_scene.camera_limits.size() < arguments[0]: + if escoria.main.current_scene.camera_limits.size() < arguments[0]: escoria.logger.report_errors( "camera_set_limits: invalid limits id", [ diff --git a/addons/escoria-core/game/core-scripts/esc/esc_event_manager.gd b/addons/escoria-core/game/core-scripts/esc/esc_event_manager.gd index b3ab2f7c..2898d338 100644 --- a/addons/escoria-core/game/core-scripts/esc/esc_event_manager.gd +++ b/addons/escoria-core/game/core-scripts/esc/esc_event_manager.gd @@ -85,4 +85,7 @@ func _on_event_finished(return_code: int, event: ESCEvent) -> void: func interrupt_running_event(): if _running_event == null: return + for event in events_queue: + event.interrupt() + events_queue.clear() _running_event.interrupt() diff --git a/addons/escoria-core/game/core-scripts/esc_room.gd b/addons/escoria-core/game/core-scripts/esc_room.gd index 3acc3b63..63574e00 100644 --- a/addons/escoria-core/game/core-scripts/esc_room.gd +++ b/addons/escoria-core/game/core-scripts/esc_room.gd @@ -26,7 +26,7 @@ export(PackedScene) var player_scene export(Array, Rect2) var camera_limits: Array = [Rect2()] setget set_camera_limits # The editor debug display mode -export(int) var editor_debug_mode = EditorRoomDebugDisplay.NONE setget set_editor_debug_mode +export(EditorRoomDebugDisplay) var editor_debug_mode = EditorRoomDebugDisplay.NONE setget set_editor_debug_mode # The player scene instance diff --git a/addons/escoria-ui-9verbs/game.gd b/addons/escoria-ui-9verbs/game.gd index 260c68ff..e9be4aee 100644 --- a/addons/escoria-ui-9verbs/game.gd +++ b/addons/escoria-ui-9verbs/game.gd @@ -58,33 +58,36 @@ func _exit_tree(): ## BACKGROUND ## func left_click_on_bg(position: Vector2) -> void: - escoria.do( - "walk", - [escoria.main.current_scene.player.global_id, position], - true - ) - escoria.action_manager.clear_current_action() - verbs_menu.unselect_actions() + if escoria.main.current_scene.player: + escoria.do( + "walk", + [escoria.main.current_scene.player.global_id, position], + true + ) + escoria.action_manager.clear_current_action() + verbs_menu.unselect_actions() func right_click_on_bg(position: Vector2) -> void: - escoria.do( - "walk", - [escoria.main.current_scene.player.global_id, position], - true - ) - escoria.action_manager.clear_current_action() - verbs_menu.unselect_actions() + if escoria.main.current_scene.player: + escoria.do( + "walk", + [escoria.main.current_scene.player.global_id, position], + true + ) + escoria.action_manager.clear_current_action() + verbs_menu.unselect_actions() func left_double_click_on_bg(position: Vector2) -> void: - escoria.do( - "walk", - [escoria.main.current_scene.player.global_id, position, true], - true - ) - escoria.action_manager.clear_current_action() - verbs_menu.unselect_actions() + if escoria.main.current_scene.player: + escoria.do( + "walk", + [escoria.main.current_scene.player.global_id, position, true], + true + ) + escoria.action_manager.clear_current_action() + verbs_menu.unselect_actions() ## ITEM FOCUS ## diff --git a/addons/escoria-ui-simplemouse/game.gd b/addons/escoria-ui-simplemouse/game.gd index ba402f22..fd14b345 100644 --- a/addons/escoria-ui-simplemouse/game.gd +++ b/addons/escoria-ui-simplemouse/game.gd @@ -61,13 +61,14 @@ func right_click_on_bg(position: Vector2) -> void: mousewheel_action(1) func left_double_click_on_bg(position: Vector2) -> void: - escoria.do( - "walk", - [escoria.main.current_scene.player.global_id, position, true], - true - ) - $CanvasLayer/ui/HBoxContainer/verbs_menu.set_by_name("walk") - $CanvasLayer/ui/HBoxContainer/verbs_menu.clear_tool_texture() + if escoria.main.current_scene.player: + escoria.do( + "walk", + [escoria.main.current_scene.player.global_id, position, true], + true + ) + $CanvasLayer/ui/HBoxContainer/verbs_menu.set_by_name("walk") + $CanvasLayer/ui/HBoxContainer/verbs_menu.clear_tool_texture() ## ITEM/HOTSPOT FOCUS ## diff --git a/game/rooms/room06/esc/worker.esc b/game/rooms/room06/esc/worker.esc index ddd0ccfb..808b7566 100644 --- a/game/rooms/room06/esc/worker.esc +++ b/game/rooms/room06/esc/worker.esc @@ -39,6 +39,9 @@ say player "I don't think he'd like that." #################################################################################################### :give r5_filled_sheet +set_hud_visible false +accept_input SKIP + inventory_remove r5_filled_sheet say worker "Hey! That's perfect!" say worker "I can finally get away from here!" @@ -53,3 +56,8 @@ set_global r6_door_open true # Disappear! wait 1 set_active worker false + +set_hud_visible true +accept_input ALL + + diff --git a/game/rooms/room13/esc/left_exit.esc b/game/rooms/room13/esc/left_exit.esc index 280d8810..765f972e 100644 --- a/game/rooms/room13/esc/left_exit.esc +++ b/game/rooms/room13/esc/left_exit.esc @@ -1,4 +1,4 @@ -:use +:exit_scene set_sound_state _sound res://game/sfx/sounds/doorOpen_2.ogg false change_scene "res://game/rooms/room12/room12.tscn" diff --git a/game/ui/commons/room_select.gd b/game/ui/commons/room_select.gd index 163b1a6e..2318aaab 100644 --- a/game/ui/commons/room_select.gd +++ b/game/ui/commons/room_select.gd @@ -36,7 +36,7 @@ func _on_button_pressed(): ":debug", "change_scene %s" % options_paths[selected_id] ]) - + escoria.event_manager.interrupt_running_event() escoria.event_manager.queue_event(script.events['debug']) func _on_option_item_selected(index):