implement #144 scrolling support for mouse input
This commit is contained in:
parent
ecc1d4af9c
commit
6115eb6438
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue