Reworked final cutscene to AnimationPlayer
This commit is contained in:
@@ -14,6 +14,7 @@ extends Node2D
|
|||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
pause_menu.hide()
|
pause_menu.hide()
|
||||||
game_over_menu.hide()
|
game_over_menu.hide()
|
||||||
|
completion_menu.hide()
|
||||||
|
|
||||||
Input.mouse_mode = Input.MOUSE_MODE_HIDDEN
|
Input.mouse_mode = Input.MOUSE_MODE_HIDDEN
|
||||||
|
|
||||||
|
|||||||
+18
-124
@@ -1,67 +1,30 @@
|
|||||||
extends AbstractLevel
|
extends AbstractLevel
|
||||||
|
|
||||||
|
|
||||||
const CUTSCENE_CAMERA_TIME = 5
|
|
||||||
const CUTSCENE_HAZE_TIME = 0.1
|
|
||||||
|
|
||||||
const CUTSCENE_HAZE_TIME_BY_PHASE : Dictionary[int, float] = {
|
|
||||||
1: CUTSCENE_HAZE_TIME,
|
|
||||||
3: CUTSCENE_HAZE_TIME,
|
|
||||||
5: CUTSCENE_HAZE_TIME,
|
|
||||||
7: CUTSCENE_HAZE_TIME,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
var _cutscene_phase := 0
|
|
||||||
var _player_walk_speed : int
|
|
||||||
var _cutscene_player_speed_factor := 0.5
|
|
||||||
|
|
||||||
var _function_by_phase : Dictionary[int, Callable] = {
|
|
||||||
1: _do_cutscene_phase_one,
|
|
||||||
4: _do_cutscene_phase_four,
|
|
||||||
6: _do_cutscene_phase_six,
|
|
||||||
7: _do_cutscene_phase_seven,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@onready var cutscene_camera : Camera2D = $Cutscene/Camera2D
|
|
||||||
@onready var cutscene_haze : Polygon2D = $%CutsceneHaze
|
@onready var cutscene_haze : Polygon2D = $%CutsceneHaze
|
||||||
@onready var cutscene_thanks : Label = $CanvasLayer/MarginContainer/ThanksLabel
|
|
||||||
|
|
||||||
@onready var cutscene_haze_timer : Timer = $Cutscene/HazeTimer
|
@onready var cutscene_haze_timer : Timer = $Cutscene/HazeTimer
|
||||||
@onready var cutscene_player_timer : Timer = $Cutscene/PlayerTimer
|
|
||||||
@onready var cutscene_cultist_timer : Timer = $Cutscene/CultistTimer
|
|
||||||
@onready var cutscene_end_timer : Timer = $Cutscene/EndTimer
|
|
||||||
|
|
||||||
@onready var cutscene_fake_player : AnimatedSprite2D = $Cutscene/FakePlayer
|
@onready var animation_player : AnimationPlayer = $AnimationPlayer
|
||||||
@onready var cutscene_fake_cultist : AnimatedSprite2D = $Cutscene/FakeCultist
|
@onready var cutscene_camera : Camera2D = $Cutscene/Camera2D
|
||||||
|
|
||||||
@onready var enemy_waves_by_phase : Dictionary[int, Node2D] = {
|
|
||||||
3: $Cutscene/EnemyWaves/WaveOne,
|
|
||||||
5: $Cutscene/EnemyWaves/WaveTwo,
|
|
||||||
7: $Cutscene/EnemyWaves/WaveThree,
|
|
||||||
}
|
|
||||||
|
|
||||||
@onready var cutscene_room_center : Vector2 = $Cutscene/RoomCenter.position
|
@onready var cutscene_room_center : Vector2 = $Cutscene/RoomCenter.position
|
||||||
@onready var PLAYER_TARGET_POSITION_BY_PHASE : Dictionary[int, Vector2] = {
|
|
||||||
1: $Cutscene/PlayerTargetPositions/PhaseOne.global_position,
|
|
||||||
2: $Cutscene/PlayerTargetPositions/PhaseTwo.global_position,
|
|
||||||
3: $Cutscene/PlayerTargetPositions/PhaseThree.global_position,
|
|
||||||
4: $Cutscene/PlayerTargetPositions/PhaseFour.global_position,
|
|
||||||
5: $Cutscene/PlayerTargetPositions/PhaseFive.global_position,
|
|
||||||
6: $Cutscene/FakeCultist.global_position,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
super._ready()
|
super._ready()
|
||||||
_player_walk_speed = player.max_speed
|
animation_player.play("hide_cutscene_elements")
|
||||||
cutscene_haze.hide()
|
|
||||||
cutscene_fake_player.hide()
|
|
||||||
cutscene_fake_cultist.hide()
|
func _on_level_end_entered(body: Node2D) -> void:
|
||||||
cutscene_thanks.hide()
|
if body is Player:
|
||||||
for phase in enemy_waves_by_phase:
|
_play_cutscene()
|
||||||
enemy_waves_by_phase[phase].hide()
|
|
||||||
|
|
||||||
|
func _play_cutscene() -> void:
|
||||||
|
player.queue_free()
|
||||||
|
cutscene_camera.enabled = true
|
||||||
|
cutscene_camera.make_current()
|
||||||
|
animation_player.play("final_cutscene")
|
||||||
|
|
||||||
|
|
||||||
func _show_cutscene_haze(time: float) -> void:
|
func _show_cutscene_haze(time: float) -> void:
|
||||||
@@ -70,79 +33,10 @@ func _show_cutscene_haze(time: float) -> void:
|
|||||||
cutscene_haze_timer.start(time)
|
cutscene_haze_timer.start(time)
|
||||||
|
|
||||||
|
|
||||||
func _next_cutscene_phase() -> void:
|
|
||||||
_cutscene_phase += 1
|
|
||||||
|
|
||||||
if _function_by_phase.has(_cutscene_phase):
|
|
||||||
_function_by_phase[_cutscene_phase].call()
|
|
||||||
|
|
||||||
if CUTSCENE_HAZE_TIME_BY_PHASE.has(_cutscene_phase):
|
|
||||||
_show_cutscene_haze(CUTSCENE_HAZE_TIME_BY_PHASE[_cutscene_phase])
|
|
||||||
|
|
||||||
if enemy_waves_by_phase.has(_cutscene_phase):
|
|
||||||
enemy_waves_by_phase[_cutscene_phase].show()
|
|
||||||
|
|
||||||
if PLAYER_TARGET_POSITION_BY_PHASE.has(_cutscene_phase):
|
|
||||||
var target_pos := PLAYER_TARGET_POSITION_BY_PHASE[_cutscene_phase]
|
|
||||||
var time := _get_player_move_time(cutscene_fake_player.position, target_pos)
|
|
||||||
var tween : Tween = create_tween()
|
|
||||||
tween.tween_property(cutscene_fake_player, "position", target_pos, time)
|
|
||||||
tween.finished.connect(_next_cutscene_phase)
|
|
||||||
|
|
||||||
|
|
||||||
func _do_cutscene_phase_one() -> void:
|
|
||||||
player.queue_free()
|
|
||||||
cutscene_camera.position = player.position
|
|
||||||
cutscene_camera.enabled = true
|
|
||||||
cutscene_camera.make_current()
|
|
||||||
cutscene_fake_player.show()
|
|
||||||
cutscene_fake_player.play(PlayerSprite.ANIMATION_WALK_RIGHT, _cutscene_player_speed_factor)
|
|
||||||
var tween : Tween = create_tween()
|
|
||||||
tween.set_ease(Tween.EASE_IN_OUT)
|
|
||||||
tween.set_trans(Tween.TRANS_QUAD)
|
|
||||||
tween.tween_property(cutscene_camera, "position", cutscene_room_center, CUTSCENE_CAMERA_TIME)
|
|
||||||
|
|
||||||
|
|
||||||
func _do_cutscene_phase_four() -> void:
|
|
||||||
cutscene_fake_player.play(PlayerSprite.ANIMATION_WALK_LEFT,_cutscene_player_speed_factor)
|
|
||||||
|
|
||||||
|
|
||||||
func _do_cutscene_phase_six() -> void:
|
|
||||||
_cutscene_player_speed_factor = 0.25
|
|
||||||
cutscene_fake_player.play(PlayerSprite.ANIMATION_WALK_RIGHT, _cutscene_player_speed_factor)
|
|
||||||
|
|
||||||
|
|
||||||
func _do_cutscene_phase_seven() -> void:
|
|
||||||
cutscene_fake_player.play(PlayerSprite.ANIMATION_LOOK_AROUND, 0.5)
|
|
||||||
cutscene_player_timer.start()
|
|
||||||
|
|
||||||
|
|
||||||
func _get_player_move_time(initial_pos: Vector2, target_pos: Vector2) -> float:
|
|
||||||
var distance := initial_pos.distance_to(target_pos)
|
|
||||||
return distance / (_player_walk_speed * _cutscene_player_speed_factor)
|
|
||||||
|
|
||||||
|
|
||||||
func _on_level_end_entered(body: Node2D) -> void:
|
|
||||||
if body is Player:
|
|
||||||
_next_cutscene_phase()
|
|
||||||
|
|
||||||
|
|
||||||
func _on_haze_timer_timeout() -> void:
|
func _on_haze_timer_timeout() -> void:
|
||||||
cutscene_haze.hide()
|
cutscene_haze.hide()
|
||||||
|
|
||||||
|
|
||||||
func _on_player_timer_timeout() -> void:
|
func _on_animation_player_animation_finished(anim_name: StringName) -> void:
|
||||||
_show_cutscene_haze(CUTSCENE_HAZE_TIME)
|
if anim_name == "final_cutscene":
|
||||||
cutscene_fake_player.queue_free()
|
_complete_level(cutscene_room_center)
|
||||||
cutscene_fake_cultist.show()
|
|
||||||
cutscene_fake_cultist.play(CultistSprite.ANIMATION_LOOK_AROUND, 0.5)
|
|
||||||
cutscene_cultist_timer.start()
|
|
||||||
|
|
||||||
|
|
||||||
func _on_enemy_timer_timeout() -> void:
|
|
||||||
cutscene_thanks.show()
|
|
||||||
cutscene_end_timer.start()
|
|
||||||
|
|
||||||
|
|
||||||
func _on_end_timer_timeout() -> void:
|
|
||||||
_complete_level(cutscene_room_center)
|
|
||||||
|
|||||||
+429
-39
@@ -120,6 +120,415 @@ shader_parameter/speed = 5.0
|
|||||||
shader_parameter/intensity = 1.0
|
shader_parameter/intensity = 1.0
|
||||||
shader_parameter/scale = 20.0
|
shader_parameter/scale = 20.0
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_fta07"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Cutscene/FakePlayer:position")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(2034, 2448)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("CanvasLayer/MarginContainer/ThanksLabel:visible")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
tracks/2/type = "value"
|
||||||
|
tracks/2/imported = false
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("Cutscene/FakePlayer:speed_scale")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [1.0]
|
||||||
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("Cutscene/FakePlayer:visible")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("Cutscene/Camera2D:position")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(0, 0)]
|
||||||
|
}
|
||||||
|
tracks/5/type = "value"
|
||||||
|
tracks/5/imported = false
|
||||||
|
tracks/5/enabled = true
|
||||||
|
tracks/5/path = NodePath("Cutscene/EnemyWaves/WaveOne:visible")
|
||||||
|
tracks/5/interp = 1
|
||||||
|
tracks/5/loop_wrap = true
|
||||||
|
tracks/5/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
tracks/6/type = "value"
|
||||||
|
tracks/6/imported = false
|
||||||
|
tracks/6/enabled = true
|
||||||
|
tracks/6/path = NodePath("Cutscene/EnemyWaves/WaveTwo:visible")
|
||||||
|
tracks/6/interp = 1
|
||||||
|
tracks/6/loop_wrap = true
|
||||||
|
tracks/6/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
tracks/7/type = "value"
|
||||||
|
tracks/7/imported = false
|
||||||
|
tracks/7/enabled = true
|
||||||
|
tracks/7/path = NodePath("Cutscene/EnemyWaves/WaveThree:visible")
|
||||||
|
tracks/7/interp = 1
|
||||||
|
tracks/7/loop_wrap = true
|
||||||
|
tracks/7/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
tracks/8/type = "value"
|
||||||
|
tracks/8/imported = false
|
||||||
|
tracks/8/enabled = true
|
||||||
|
tracks/8/path = NodePath("Cutscene/FakeCultist:visible")
|
||||||
|
tracks/8/interp = 1
|
||||||
|
tracks/8/loop_wrap = true
|
||||||
|
tracks/8/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
tracks/9/type = "value"
|
||||||
|
tracks/9/imported = false
|
||||||
|
tracks/9/enabled = true
|
||||||
|
tracks/9/path = NodePath("CanvasLayer/CutsceneHaze:visible")
|
||||||
|
tracks/9/interp = 1
|
||||||
|
tracks/9/loop_wrap = true
|
||||||
|
tracks/9/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_wrq4k"]
|
||||||
|
resource_name = "final_cutscene"
|
||||||
|
length = 30.0
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Cutscene/FakePlayer:position")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 10, 12, 14),
|
||||||
|
"transitions": PackedFloat32Array(0.5, -1, -1, -1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(1986, 2448), Vector2(2349, 2448), Vector2(2264, 2448), Vector2(2304, 2448)]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("CanvasLayer/MarginContainer/ThanksLabel:visible")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(24),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
tracks/2/type = "value"
|
||||||
|
tracks/2/imported = false
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("Cutscene/FakePlayer:speed_scale")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 10, 12, 14),
|
||||||
|
"transitions": PackedFloat32Array(0.5, -2, -2, -2),
|
||||||
|
"update": 0,
|
||||||
|
"values": [0.5, 0.5, 0.5, 0.5]
|
||||||
|
}
|
||||||
|
tracks/3/type = "method"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("Cutscene/FakePlayer")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 10, 12, 14),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||||
|
"values": [{
|
||||||
|
"args": [&"walk_right", 0.5, false],
|
||||||
|
"method": &"play"
|
||||||
|
}, {
|
||||||
|
"args": [&"walk_left", 0.5, false],
|
||||||
|
"method": &"play"
|
||||||
|
}, {
|
||||||
|
"args": [&"walk_right", 0.5, false],
|
||||||
|
"method": &"play"
|
||||||
|
}, {
|
||||||
|
"args": [&"look_around", 1.0, false],
|
||||||
|
"method": &"play"
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("Cutscene/FakePlayer:visible")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 19.5),
|
||||||
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true, false]
|
||||||
|
}
|
||||||
|
tracks/5/type = "value"
|
||||||
|
tracks/5/imported = false
|
||||||
|
tracks/5/enabled = true
|
||||||
|
tracks/5/path = NodePath("Cutscene/Camera2D:position")
|
||||||
|
tracks/5/interp = 1
|
||||||
|
tracks/5/loop_wrap = true
|
||||||
|
tracks/5/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 9.2),
|
||||||
|
"transitions": PackedFloat32Array(0.5, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Vector2(1986, 2448), Vector2(2304, 2448)]
|
||||||
|
}
|
||||||
|
tracks/6/type = "value"
|
||||||
|
tracks/6/imported = false
|
||||||
|
tracks/6/enabled = true
|
||||||
|
tracks/6/path = NodePath("Cutscene/EnemyWaves/WaveOne:visible")
|
||||||
|
tracks/6/interp = 1
|
||||||
|
tracks/6/loop_wrap = true
|
||||||
|
tracks/6/keys = {
|
||||||
|
"times": PackedFloat32Array(7.8333335),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
tracks/7/type = "value"
|
||||||
|
tracks/7/imported = false
|
||||||
|
tracks/7/enabled = true
|
||||||
|
tracks/7/path = NodePath("Cutscene/EnemyWaves/WaveTwo:visible")
|
||||||
|
tracks/7/interp = 1
|
||||||
|
tracks/7/loop_wrap = true
|
||||||
|
tracks/7/keys = {
|
||||||
|
"times": PackedFloat32Array(11.1),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
tracks/8/type = "value"
|
||||||
|
tracks/8/imported = false
|
||||||
|
tracks/8/enabled = true
|
||||||
|
tracks/8/path = NodePath("Cutscene/EnemyWaves/WaveThree:visible")
|
||||||
|
tracks/8/interp = 1
|
||||||
|
tracks/8/loop_wrap = true
|
||||||
|
tracks/8/keys = {
|
||||||
|
"times": PackedFloat32Array(15.766666),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
tracks/9/type = "value"
|
||||||
|
tracks/9/imported = false
|
||||||
|
tracks/9/enabled = true
|
||||||
|
tracks/9/path = NodePath("Cutscene/FakeCultist:visible")
|
||||||
|
tracks/9/interp = 1
|
||||||
|
tracks/9/loop_wrap = true
|
||||||
|
tracks/9/keys = {
|
||||||
|
"times": PackedFloat32Array(19.5),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
tracks/10/type = "method"
|
||||||
|
tracks/10/imported = false
|
||||||
|
tracks/10/enabled = true
|
||||||
|
tracks/10/path = NodePath("Cutscene/FakeCultist")
|
||||||
|
tracks/10/interp = 1
|
||||||
|
tracks/10/loop_wrap = true
|
||||||
|
tracks/10/keys = {
|
||||||
|
"times": PackedFloat32Array(17.6),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"values": [{
|
||||||
|
"args": [&"look_around", 0.5, false],
|
||||||
|
"method": &"play"
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
tracks/11/type = "method"
|
||||||
|
tracks/11/imported = false
|
||||||
|
tracks/11/enabled = true
|
||||||
|
tracks/11/path = NodePath("Doors/Door2")
|
||||||
|
tracks/11/interp = 1
|
||||||
|
tracks/11/loop_wrap = true
|
||||||
|
tracks/11/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.8666667),
|
||||||
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
|
"values": [{
|
||||||
|
"args": [],
|
||||||
|
"method": &"_open"
|
||||||
|
}, {
|
||||||
|
"args": [],
|
||||||
|
"method": &"_close"
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
tracks/12/type = "method"
|
||||||
|
tracks/12/imported = false
|
||||||
|
tracks/12/enabled = true
|
||||||
|
tracks/12/path = NodePath(".")
|
||||||
|
tracks/12/interp = 1
|
||||||
|
tracks/12/loop_wrap = true
|
||||||
|
tracks/12/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 7.8333, 11.1, 15.7667, 19.5),
|
||||||
|
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||||
|
"values": [{
|
||||||
|
"args": [0.1],
|
||||||
|
"method": &"_show_cutscene_haze"
|
||||||
|
}, {
|
||||||
|
"args": [0.1],
|
||||||
|
"method": &"_show_cutscene_haze"
|
||||||
|
}, {
|
||||||
|
"args": [0.1],
|
||||||
|
"method": &"_show_cutscene_haze"
|
||||||
|
}, {
|
||||||
|
"args": [0.1],
|
||||||
|
"method": &"_show_cutscene_haze"
|
||||||
|
}, {
|
||||||
|
"args": [0.1],
|
||||||
|
"method": &"_show_cutscene_haze"
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_6yudq"]
|
||||||
|
resource_name = "hide_cutscene_elements"
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath("Cutscene/FakePlayer:visible")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath("Cutscene/FakeCultist:visible")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
tracks/2/type = "value"
|
||||||
|
tracks/2/imported = false
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("Cutscene/EnemyWaves/WaveOne:visible")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
tracks/3/type = "value"
|
||||||
|
tracks/3/imported = false
|
||||||
|
tracks/3/enabled = true
|
||||||
|
tracks/3/path = NodePath("Cutscene/EnemyWaves/WaveTwo:visible")
|
||||||
|
tracks/3/interp = 1
|
||||||
|
tracks/3/loop_wrap = true
|
||||||
|
tracks/3/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/path = NodePath("Cutscene/EnemyWaves/WaveThree:visible")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
tracks/5/type = "value"
|
||||||
|
tracks/5/imported = false
|
||||||
|
tracks/5/enabled = true
|
||||||
|
tracks/5/path = NodePath("CanvasLayer/MarginContainer/ThanksLabel:visible")
|
||||||
|
tracks/5/interp = 1
|
||||||
|
tracks/5/loop_wrap = true
|
||||||
|
tracks/5/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
tracks/6/type = "value"
|
||||||
|
tracks/6/imported = false
|
||||||
|
tracks/6/enabled = true
|
||||||
|
tracks/6/path = NodePath("CanvasLayer/CutsceneHaze:visible")
|
||||||
|
tracks/6/interp = 1
|
||||||
|
tracks/6/loop_wrap = true
|
||||||
|
tracks/6/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [false]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_fta07"]
|
||||||
|
_data = {
|
||||||
|
&"RESET": SubResource("Animation_fta07"),
|
||||||
|
&"final_cutscene": SubResource("Animation_wrq4k"),
|
||||||
|
&"hide_cutscene_elements": SubResource("Animation_6yudq")
|
||||||
|
}
|
||||||
|
|
||||||
[node name="Level7" unique_id=1209872473 instance=ExtResource("1_bhhdo")]
|
[node name="Level7" unique_id=1209872473 instance=ExtResource("1_bhhdo")]
|
||||||
script = ExtResource("2_sh0fj")
|
script = ExtResource("2_sh0fj")
|
||||||
|
|
||||||
@@ -166,48 +575,20 @@ tile_map_data = PackedByteArray("AAABAP//AAAAAAEAAAABAAAAAAAAAAEAAAABAAEAAAAAAAE
|
|||||||
[node name="HazeTimer" type="Timer" parent="Cutscene" index="0" unique_id=407248883]
|
[node name="HazeTimer" type="Timer" parent="Cutscene" index="0" unique_id=407248883]
|
||||||
one_shot = true
|
one_shot = true
|
||||||
|
|
||||||
[node name="PlayerTimer" type="Timer" parent="Cutscene" index="1" unique_id=320210641]
|
[node name="Camera2D" type="Camera2D" parent="Cutscene" index="1" unique_id=1980628744]
|
||||||
wait_time = 3.8
|
|
||||||
one_shot = true
|
|
||||||
|
|
||||||
[node name="CultistTimer" type="Timer" parent="Cutscene" index="2" unique_id=1282865117]
|
|
||||||
wait_time = 10.0
|
|
||||||
one_shot = true
|
|
||||||
|
|
||||||
[node name="EndTimer" type="Timer" parent="Cutscene" index="3" unique_id=446132469]
|
|
||||||
wait_time = 10.0
|
|
||||||
one_shot = true
|
|
||||||
|
|
||||||
[node name="Camera2D" type="Camera2D" parent="Cutscene" index="4" unique_id=1980628744]
|
|
||||||
enabled = false
|
enabled = false
|
||||||
|
|
||||||
[node name="FakePlayer" parent="Cutscene" index="5" unique_id=782833865 instance=ExtResource("10_x0kb5")]
|
[node name="FakePlayer" parent="Cutscene" index="2" unique_id=782833865 instance=ExtResource("10_x0kb5")]
|
||||||
position = Vector2(2034, 2448)
|
position = Vector2(2034, 2448)
|
||||||
|
animation = &"walk_right"
|
||||||
|
|
||||||
[node name="FakeCultist" parent="Cutscene" index="6" unique_id=375756058 instance=ExtResource("11_6yudq")]
|
[node name="FakeCultist" parent="Cutscene" index="3" unique_id=375756058 instance=ExtResource("11_6yudq")]
|
||||||
position = Vector2(2304, 2448)
|
position = Vector2(2304, 2448)
|
||||||
|
|
||||||
[node name="RoomCenter" type="Node2D" parent="Cutscene" index="7" unique_id=653526662]
|
[node name="RoomCenter" type="Node2D" parent="Cutscene" index="4" unique_id=653526662]
|
||||||
position = Vector2(2304, 2448)
|
position = Vector2(2304, 2448)
|
||||||
|
|
||||||
[node name="PlayerTargetPositions" type="Node2D" parent="Cutscene" index="8" unique_id=679487035]
|
[node name="EnemyWaves" type="Node2D" parent="Cutscene" index="5" unique_id=1349451991]
|
||||||
position = Vector2(2304, 2448)
|
|
||||||
|
|
||||||
[node name="PhaseOne" type="Node2D" parent="Cutscene/PlayerTargetPositions" index="0" unique_id=2087621101]
|
|
||||||
position = Vector2(-87, 0)
|
|
||||||
|
|
||||||
[node name="PhaseTwo" type="Node2D" parent="Cutscene/PlayerTargetPositions" index="1" unique_id=510465848]
|
|
||||||
|
|
||||||
[node name="PhaseThree" type="Node2D" parent="Cutscene/PlayerTargetPositions" index="2" unique_id=1175692467]
|
|
||||||
position = Vector2(45, 0)
|
|
||||||
|
|
||||||
[node name="PhaseFour" type="Node2D" parent="Cutscene/PlayerTargetPositions" index="3" unique_id=642832738]
|
|
||||||
position = Vector2(-40, 0)
|
|
||||||
|
|
||||||
[node name="PhaseFive" type="Node2D" parent="Cutscene/PlayerTargetPositions" index="4" unique_id=834113393]
|
|
||||||
position = Vector2(-62, 0)
|
|
||||||
|
|
||||||
[node name="EnemyWaves" type="Node2D" parent="Cutscene" index="9" unique_id=1349451991]
|
|
||||||
position = Vector2(2304, 2448)
|
position = Vector2(2304, 2448)
|
||||||
|
|
||||||
[node name="WaveThree" type="Node2D" parent="Cutscene/EnemyWaves" index="0" unique_id=1872436058]
|
[node name="WaveThree" type="Node2D" parent="Cutscene/EnemyWaves" index="0" unique_id=1872436058]
|
||||||
@@ -345,14 +726,23 @@ horizontal_alignment = 1
|
|||||||
|
|
||||||
[node name="CutsceneHaze" type="Polygon2D" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="1" unique_id=766558100]
|
[node name="CutsceneHaze" type="Polygon2D" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="1" unique_id=766558100]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
visible = false
|
|
||||||
color = Color(0, 0, 0, 1)
|
color = Color(0, 0, 0, 1)
|
||||||
polygon = PackedVector2Array(0, 0, 640, 0, 640, 360, 0, 360)
|
polygon = PackedVector2Array(0, 0, 640, 0, 640, 360, 0, 360)
|
||||||
|
|
||||||
|
[node name="PauseMenu" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="2" unique_id=1609121400]
|
||||||
|
visible = true
|
||||||
|
|
||||||
|
[node name="GameOverMenu" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="3" unique_id=859418625]
|
||||||
|
visible = true
|
||||||
|
|
||||||
|
[node name="CompletionMenu" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="4" unique_id=814534035]
|
||||||
|
visible = true
|
||||||
|
|
||||||
[node name="LevelEnd" parent="." index="9" unique_id=1018767708]
|
[node name="LevelEnd" parent="." index="9" unique_id=1018767708]
|
||||||
position = Vector2(2031, 2440)
|
position = Vector2(1986, 2440)
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="." index="10" unique_id=648159573]
|
||||||
|
libraries/ = SubResource("AnimationLibrary_fta07")
|
||||||
|
|
||||||
[connection signal="timeout" from="Cutscene/HazeTimer" to="." method="_on_haze_timer_timeout"]
|
[connection signal="timeout" from="Cutscene/HazeTimer" to="." method="_on_haze_timer_timeout"]
|
||||||
[connection signal="timeout" from="Cutscene/PlayerTimer" to="." method="_on_player_timer_timeout"]
|
[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_animation_player_animation_finished"]
|
||||||
[connection signal="timeout" from="Cutscene/CultistTimer" to="." method="_on_enemy_timer_timeout"]
|
|
||||||
[connection signal="timeout" from="Cutscene/EndTimer" to="." method="_on_end_timer_timeout"]
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ func _on_visibility_changed() -> void:
|
|||||||
next_level_button.visible = not _is_last_level()
|
next_level_button.visible = not _is_last_level()
|
||||||
focus_timer.start()
|
focus_timer.start()
|
||||||
get_viewport().gui_focus_changed.connect(_on_gui_focus_changed)
|
get_viewport().gui_focus_changed.connect(_on_gui_focus_changed)
|
||||||
else:
|
elif get_viewport().gui_focus_changed.is_connected(_on_gui_focus_changed):
|
||||||
get_viewport().gui_focus_changed.disconnect(_on_gui_focus_changed)
|
get_viewport().gui_focus_changed.disconnect(_on_gui_focus_changed)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ func _on_visibility_changed() -> void:
|
|||||||
if visible:
|
if visible:
|
||||||
focus_timer.start()
|
focus_timer.start()
|
||||||
get_viewport().gui_focus_changed.connect(_on_gui_focus_changed)
|
get_viewport().gui_focus_changed.connect(_on_gui_focus_changed)
|
||||||
else:
|
elif get_viewport().gui_focus_changed.is_connected(_on_gui_focus_changed):
|
||||||
get_viewport().gui_focus_changed.disconnect(_on_gui_focus_changed)
|
get_viewport().gui_focus_changed.disconnect(_on_gui_focus_changed)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -49,5 +49,5 @@ func _on_visibility_changed() -> void:
|
|||||||
if visible:
|
if visible:
|
||||||
continue_button.grab_focus()
|
continue_button.grab_focus()
|
||||||
get_viewport().gui_focus_changed.connect(_on_gui_focus_changed)
|
get_viewport().gui_focus_changed.connect(_on_gui_focus_changed)
|
||||||
else:
|
elif get_viewport().gui_focus_changed.is_connected(_on_gui_focus_changed):
|
||||||
get_viewport().gui_focus_changed.disconnect(_on_gui_focus_changed)
|
get_viewport().gui_focus_changed.disconnect(_on_gui_focus_changed)
|
||||||
|
|||||||
Reference in New Issue
Block a user