diff --git a/src/base-environments/youth_room/scnees/scene_player.gd b/src/base-environments/youth_room/scnees/scene_player.gd index f6c22cc..3fe79a2 100644 --- a/src/base-environments/youth_room/scnees/scene_player.gd +++ b/src/base-environments/youth_room/scnees/scene_player.gd @@ -22,6 +22,7 @@ var max_lines: float = 0 substring_sizes.append(TranslationServer.translate(str_array[i]).strip_edges().length() + 1) if not paragraph_lengths[-1] == story_array.size()-1: paragraph_lengths.append(story_array.size()-1) + push_warning("Paragraph lenghts of scene %s are misconfigured!" % name) if paragraph_lengths[p] == i: p += 1 label.text += "[/p][p][font_size=8] [/font_size][/p][p]" @@ -29,12 +30,12 @@ var max_lines: float = 0 label.text += "[/p]" max_lines = float(label.get_line_count()) -@export var paragraph_lengths: PackedInt32Array = [] +@export var paragraph_lengths: PackedInt32Array = [1] @export var progress: float = 0: set(value): progress = value - if is_node_ready(): + if is_node_ready() and not all_text_revealed: var start_index = 0 if progress >= substring_sizes.size() or progress < 0: label.visible_ratio = 1 @@ -46,6 +47,19 @@ var max_lines: float = 0 else: label.visible_ratio = 0 +var all_text_revealed: bool = false: + set(revealed): + var reset_progress := false + if revealed and not all_text_revealed: + var tween: Tween = get_tree().create_tween() + tween.set_ease(Tween.EASE_OUT) + tween.tween_property(label, "visible_ratio", 1, 1.5) + elif not revealed and all_text_revealed: + reset_progress = true + all_text_revealed = revealed + if all_text_revealed: progress = -1 + if reset_progress: progress = 0 + @export var test_scroll: bool: set(scroll): try_scroll() @@ -114,6 +128,7 @@ func play_scene(): trigger_intro() animation_complete = true + all_text_revealed = true skip_control.start_proceed_countdown() @@ -125,6 +140,29 @@ func play_scene(): finished.emit() +func _unhandled_input(event: InputEvent) -> void: + var just_revealed_text = false + if event is InputEventMouseButton: + if event.button_index == MOUSE_BUTTON_WHEEL_DOWN: + scroll_target += 40 + if not all_text_revealed: just_revealed_text + all_text_revealed = true + if event.button_index == MOUSE_BUTTON_WHEEL_UP: + scroll_target -= 40 + if not all_text_revealed: just_revealed_text + all_text_revealed = true + if just_revealed_text: + if animation_complete: all_text_revealed = true + +var scroll_target: float = 0: + set(value): + scroll_target = clampf(value, 0, label.size.y - scroll_container.size.y) +func _process(delta: float) -> void: + # FIXME: maybe change this to has stage? + if visible and not Engine.is_editor_hint(): + if scroll_container.scroll_vertical != scroll_target: + scroll_container.scroll_vertical += (scroll_target-scroll_container.scroll_vertical)*delta*6 + var intro_triggered:= false func trigger_intro(): if not intro_triggered: diff --git a/src/logic-scenes/misc/skip_control.gd b/src/logic-scenes/misc/skip_control.gd index 329b315..e75a75e 100644 --- a/src/logic-scenes/misc/skip_control.gd +++ b/src/logic-scenes/misc/skip_control.gd @@ -31,6 +31,17 @@ var proceeding: bool = false: # while this is true, a counter counts up to automatically proceed. var is_auto_proceeding: bool = true: set(value): + if is_auto_proceeding and not value: + var tween = get_tree().create_tween() + tween.set_ease(Tween.EASE_IN) + tween.set_trans(Tween.TRANS_QUAD) + tween.tween_property(progress, "value", 0.0, 0.3) + time_pressed = 0 + $AnimationPlayer.play("replace_text") + # use this to disable the updates during progress. + is_auto_proceeding = false + await _transition_text + button.text = "continue (press)" is_auto_proceeding = value #resets progress bar on button @@ -55,7 +66,7 @@ func _process(delta): reset() -func _unhandled_input(event: InputEvent) -> void: +func _input(event: InputEvent) -> void: if is_visible_in_tree(): if not event is InputEventMouseMotion and unrevealed: $AnimationPlayer.play("reveal_skip") @@ -98,6 +109,7 @@ func transition_text(): func reset(): $AnimationPlayer.play("RESET") + await(get_tree().create_timer(1).timeout) unrevealed = true pressed = false proceeding = false