diff --git a/game/characters/player/player.gd b/game/characters/player/player.gd index 561621f..31aed54 100644 --- a/game/characters/player/player.gd +++ b/game/characters/player/player.gd @@ -21,6 +21,7 @@ var is_dead := false var _is_switching_needed := false +@onready var camera : Camera2D = $Camera2D @onready var sprite : AnimatedSprite2D = $PlayerSprite @onready var collision_switcher : CollisionSwitcher = $CollisionSwitcher @onready var pickups : Node2D = $Pickups diff --git a/game/characters/player/player.tscn b/game/characters/player/player.tscn index 4821755..b349f80 100644 --- a/game/characters/player/player.tscn +++ b/game/characters/player/player.tscn @@ -42,6 +42,11 @@ object = NodePath("..") [node name="Camera2D" type="Camera2D" parent="." unique_id=45512317] process_callback = 0 position_smoothing_enabled = true +drag_horizontal_enabled = true +drag_left_margin = 0.1 +drag_top_margin = 0.1 +drag_right_margin = 0.1 +drag_bottom_margin = 0.1 [node name="Pickups" type="Node2D" parent="." unique_id=958829860] position = Vector2(0, -24) diff --git a/game/levels/level_7.gd b/game/levels/level_7.gd index e2ecff9..a1d6e7b 100644 --- a/game/levels/level_7.gd +++ b/game/levels/level_7.gd @@ -1,10 +1,11 @@ extends AbstractLevel -@onready var cutscene_haze : Polygon2D = $%CutsceneHaze -@onready var cutscene_haze_timer : Timer = $Cutscene/HazeTimer +const ANIMATION_NAME = "final_cutscene" + @onready var animation_player : AnimationPlayer = $AnimationPlayer +@onready var fake_player : PlayerSprite = $Cutscene/FakePlayer @onready var cutscene_camera : Camera2D = $Cutscene/Camera2D @onready var cutscene_room_center : Vector2 = $Cutscene/RoomCenter.position @@ -21,20 +22,24 @@ func _on_level_end_entered(body: Node2D) -> void: func _play_cutscene() -> void: + var camera_track_name := "Cutscene/Camera2D:position" + var player_track_name := "Cutscene/FakePlayer:position" + + var animation := animation_player.get_animation(ANIMATION_NAME) + var camera_track := animation.find_track(camera_track_name, Animation.TYPE_VALUE) + var player_track := animation.find_track(player_track_name, Animation.TYPE_VALUE) + + animation.track_set_key_value(camera_track, 0, player.camera.get_screen_center_position()) + animation.track_set_key_value(player_track, 0, player.position) + player.queue_free() cutscene_camera.enabled = true cutscene_camera.make_current() - animation_player.play("final_cutscene") + animation_player.play(ANIMATION_NAME) -func _show_cutscene_haze(time: float) -> void: +func _play_cutscene_boop() -> void: SoundManager.play_sfx_stream(SoundManager.sfx_stream_haze, cutscene_room_center) - cutscene_haze.show() - cutscene_haze_timer.start(time) - - -func _on_haze_timer_timeout() -> void: - cutscene_haze.hide() func _on_animation_player_animation_finished(anim_name: StringName) -> void: diff --git a/game/levels/level_7.tscn b/game/levels/level_7.tscn index 080d1c5..f1f5455 100644 --- a/game/levels/level_7.tscn +++ b/game/levels/level_7.tscn @@ -230,18 +230,6 @@ tracks/8/keys = { "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" @@ -256,7 +244,7 @@ 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)] +"values": [Vector2(1970, 2448), Vector2(2349, 2448), Vector2(2264, 2448), Vector2(2304, 2448)] } tracks/1/type = "value" tracks/1/imported = false @@ -418,20 +406,20 @@ 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": [], +"method": &"_play_cutscene_boop" }, { -"args": [0.1], -"method": &"_show_cutscene_haze" +"args": [], +"method": &"_play_cutscene_boop" }, { -"args": [0.1], -"method": &"_show_cutscene_haze" +"args": [], +"method": &"_play_cutscene_boop" }, { -"args": [0.1], -"method": &"_show_cutscene_haze" +"args": [], +"method": &"_play_cutscene_boop" }, { -"args": [0.1], -"method": &"_show_cutscene_haze" +"args": [], +"method": &"_play_cutscene_boop" }] } @@ -509,18 +497,6 @@ tracks/5/keys = { "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 = { @@ -572,23 +548,19 @@ tile_map_data = PackedByteArray("AAABAP//AAAAAAEAAAABAAAAAAAAAAEAAAABAAEAAAAAAAE [node name="Cutscene" type="Node2D" parent="." index="6" unique_id=1766969073] -[node name="HazeTimer" type="Timer" parent="Cutscene" index="0" unique_id=407248883] -one_shot = true - -[node name="Camera2D" type="Camera2D" parent="Cutscene" index="1" unique_id=1980628744] +[node name="Camera2D" type="Camera2D" parent="Cutscene" index="0" unique_id=1980628744] enabled = false -[node name="FakePlayer" parent="Cutscene" index="2" unique_id=782833865 instance=ExtResource("10_x0kb5")] +[node name="FakePlayer" parent="Cutscene" index="1" unique_id=782833865 instance=ExtResource("10_x0kb5")] position = Vector2(2034, 2448) -animation = &"walk_right" -[node name="FakeCultist" parent="Cutscene" index="3" unique_id=375756058 instance=ExtResource("11_6yudq")] +[node name="FakeCultist" parent="Cutscene" index="2" unique_id=375756058 instance=ExtResource("11_6yudq")] position = Vector2(2304, 2448) -[node name="RoomCenter" type="Node2D" parent="Cutscene" index="4" unique_id=653526662] +[node name="RoomCenter" type="Node2D" parent="Cutscene" index="3" unique_id=653526662] position = Vector2(2304, 2448) -[node name="EnemyWaves" type="Node2D" parent="Cutscene" index="5" unique_id=1349451991] +[node name="EnemyWaves" type="Node2D" parent="Cutscene" index="4" unique_id=1349451991] position = Vector2(2304, 2448) [node name="WaveThree" type="Node2D" parent="Cutscene/EnemyWaves" index="0" unique_id=1872436058] @@ -724,25 +696,22 @@ theme = ExtResource("13_6yudq") text = "Thanks for playing!" horizontal_alignment = 1 -[node name="CutsceneHaze" type="Polygon2D" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="1" unique_id=766558100] -unique_name_in_owner = true -color = Color(0, 0, 0, 1) -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] +[node name="PauseMenu" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="1" unique_id=1609121400] visible = true -[node name="GameOverMenu" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="3" unique_id=859418625] +[node name="GameOverMenu" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="2" unique_id=859418625] visible = true -[node name="CompletionMenu" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="4" unique_id=814534035] +[node name="CompletionMenu" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="3" unique_id=814534035] visible = true [node name="LevelEnd" parent="." index="9" unique_id=1018767708] -position = Vector2(1986, 2440) +position = Vector2(1945, 2442) + +[node name="CollisionShape2D" parent="LevelEnd" index="0" unique_id=937956890] +position = Vector2(0, -1) [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="animation_finished" from="AnimationPlayer" to="." method="_on_animation_player_animation_finished"] diff --git a/images/level/lever.png.import b/images/level/lever.png.import new file mode 100644 index 0000000..74cd5a7 --- /dev/null +++ b/images/level/lever.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c8a451rgx116q" +path="res://.godot/imported/lever.png-d607102a11441cc805205162ec192f8f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://images/level/lever.png" +dest_files=["res://.godot/imported/lever.png-d607102a11441cc805205162ec192f8f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1