platformer-game-test/src/CutScenes/ChallengeCutscene.gd

106 lines
2.8 KiB
GDScript

extends CutScene
var _dialog_bubble = load("res://src/CutScenes/DialogBubble/DialogBubble.tscn")
var _old_man_dialog = [
{
"text": "Hi there young one!",
"callback": null
},
{
"text": "You do look stupid enough\nfor my challenge...",
"callback": null
},
{
"text": "You see that tree over there?",
"callback": null
},
]
var _old_man_dialog2 = [
{
"text": "Oh, yeah - not there...",
"callback": null
},
{
"text": "Forgive me, never thought you would really take a look",
"callback": null
},
{
"text": "Never mind Bro. See the path ahead? There is a tree in that cave.",
"callback": null
},
]
func start_scene(camera:CameraGame = null):
_started = true;
_main_camera_ref = camera
position = camera.get_global_transform().get_origin()
_camera = camera.duplicate()
add_child(_camera)
_main_camera_ref.current = false
_camera.current = true
$AnimationPlayer.play("start")
yield($AnimationPlayer, "animation_finished")
yield(get_tree().create_timer(.5), "timeout")
# Dialog 1
$AnimationPlayer.play("old_dude_slide_in")
yield($AnimationPlayer, "animation_finished")
var dialog_bubble:DialogBubble = _dialog_bubble.instance()
dialog_bubble.dialog = _old_man_dialog
$Overlay.add_child(dialog_bubble)
dialog_bubble.start_dialog()
yield(dialog_bubble, "dialog_finished")
$AnimationPlayer.play("old_dude_slide_out")
yield($AnimationPlayer, "animation_finished")
# pan Camera
$Tween.interpolate_property(_camera, "position", _camera.position, Vector2( _camera.position.x - 400, _camera.position.y), 2)
$Tween.start()
yield($Tween, "tween_completed")
# wait a bit to get a "haha" timing
yield(get_tree().create_timer(2), "timeout")
#pan back
$Tween.interpolate_property(_camera, "position", _camera.position, _camera.get_parent().position, 2, Tween.TRANS_BOUNCE, Tween.EASE_OUT)
$Tween.start()
yield($Tween, "tween_completed")
camera.get_parent()._velocity.y = -100
# Dialog 2
$AnimationPlayer.play("old_dude_slide_in")
yield($AnimationPlayer, "animation_finished")
dialog_bubble = _dialog_bubble.instance()
dialog_bubble.dialog = _old_man_dialog2
$Overlay.add_child(dialog_bubble)
dialog_bubble.start_dialog()
yield(dialog_bubble, "dialog_finished")
$AnimationPlayer.play("old_dude_slide_out")
yield($AnimationPlayer, "animation_finished")
#
_on_scene_exited()
pass
func _input(event: InputEvent) -> void:
if not _started: return
if Input.is_action_just_pressed("jump"):
if allow_skip: _on_scene_exited()
func _on_scene_exited():
$Tween.interpolate_property(_camera, "position", _camera.position, _camera.get_parent().position, 2, Tween.TRANS_BOUNCE, Tween.EASE_OUT)
$Tween.start()
yield($Tween, "tween_completed")
_main_camera_ref.current = true
$AnimationPlayer.play_backwards("start")
yield($AnimationPlayer, "animation_finished")
end_scene()