diff --git a/src/logic-scenes/card_picker/card_picker.gd b/src/logic-scenes/card_picker/card_picker.gd index 136ded0..157e16f 100644 --- a/src/logic-scenes/card_picker/card_picker.gd +++ b/src/logic-scenes/card_picker/card_picker.gd @@ -230,6 +230,8 @@ func pick_cards(id: int, repeat: bool): selection_state = CARDS else: Scenes.end_current_sequence() + #FIXME this workaround should be included in the Scene Manager. + get_parent().get_parent().get_parent().dnd = false func play_scene(_id, _repeat): pass diff --git a/src/logic-scenes/collectable/collectable_ui.gd b/src/logic-scenes/collectable/collectable_ui.gd index 9ce6317..f32ed6d 100644 --- a/src/logic-scenes/collectable/collectable_ui.gd +++ b/src/logic-scenes/collectable/collectable_ui.gd @@ -43,6 +43,7 @@ class_name Collectable_Ui has_stage = false get_viewport().gui_release_focus() +# FIXME needs to be outsourced to scene reference state @export var collected: bool = false: set(set_collected): collected = set_collected diff --git a/src/singletons/scene_reference.gd b/src/singletons/scene_reference.gd index 2b32395..b01dacd 100644 --- a/src/singletons/scene_reference.gd +++ b/src/singletons/scene_reference.gd @@ -2,6 +2,7 @@ extends Node var sequence_actors:Array[Array] = [] var started_sequences: int = 0 +var completed_sequences: int = 2 var current_sequence: int = -1 var current_sequence_index: int = 0 @@ -32,7 +33,7 @@ func start_sequence(index: id): if State.pass_stage_to(sequence_actors[index][0].get_object()): sequence_actors[index][0].call(index) current_sequence = index - started_sequences &= 1 << index + started_sequences = started_sequences | (1 << index) scene_starting.emit(current_sequence, is_sequence_repeating(index)) else: push_error("Sequence could not be started.") @@ -57,9 +58,10 @@ func continue_sequence(former_actor: Object): scene_continuing.emit(current_sequence, current_sequence_index, is_sequence_repeating(current_sequence)) func end_current_sequence(): - current_sequence = -1 - current_sequence_index = 0 State.leave_stage(State.stage_list[0]) scene_finished.emit(current_sequence, is_sequence_repeating(current_sequence)) + completed_sequences = completed_sequences | (1 << current_sequence) + current_sequence = -1 + current_sequence_index = 0 -func is_sequence_repeating(index: int) -> bool: return started_sequences && 1 << index > 0 +func is_sequence_repeating(index: int) -> bool: return completed_sequences & (1 << index) > 0