From e1de327991973435863b025f1e6894045a43cc68 Mon Sep 17 00:00:00 2001 From: RedisTKey Date: Tue, 6 Jan 2026 11:58:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _game/Game.tscn | 90 ++++++++++-- _game/LevelDemonstration.tscn2147330171.tmp | 47 +++++++ _game/LevelDemonstration.tscn2149039156.tmp | 47 +++++++ _game/LevelDemonstration.tscn2152479914.tmp | 47 +++++++ _game/LevelDemonstration.tscn2205046278.tmp | 47 +++++++ _game/LevelDemonstration.tscn2228195157.tmp | 47 +++++++ _game/game.gd | 4 + _game/game.gd.uid | 1 + _player/Avatar.tscn | 13 +- _player/avatar.gd | 4 +- _player/states/grapping.gd | 2 + _shared/CameraAnchor.gd | 19 +++ _shared/CameraAnchor.gd.uid | 1 + _shared/CameraAnchor.tscn | 6 + _shared/CameraSystem.tscn | 15 -- _shared/camera/CameraManager.gd | 19 +++ _shared/camera/CameraManager.gd.uid | 1 + _shared/camera/GlobalCamera.gd | 4 + _shared/camera/GlobalCamera.gd.uid | 1 + _shared/camera/PlayerStaticCamera.tscn | 21 +++ _shared/camera/camera_shake/CameraSystem.tscn | 133 ++++++++++++++++++ _shared/camera/camera_shake/base_noise.tres | 12 ++ _shared/camera_room.gd | 35 ----- _shared/camera_room.gd.uid | 1 - _shared/camera_system.gd | 11 -- _shared/camera_system.gd.uid | 1 - _shared/room.tscn | 21 --- _shared/room_entrance.gd | 9 -- _shared/room_entrance.gd.uid | 1 - _shared/room_entrance.tscn | 6 - _shared/room_system.gd | 35 ----- _shared/room_system.gd.uid | 1 - project.godot | 3 +- 33 files changed, 553 insertions(+), 152 deletions(-) create mode 100644 _game/LevelDemonstration.tscn2147330171.tmp create mode 100644 _game/LevelDemonstration.tscn2149039156.tmp create mode 100644 _game/LevelDemonstration.tscn2152479914.tmp create mode 100644 _game/LevelDemonstration.tscn2205046278.tmp create mode 100644 _game/LevelDemonstration.tscn2228195157.tmp create mode 100644 _game/game.gd create mode 100644 _game/game.gd.uid create mode 100644 _shared/CameraAnchor.gd create mode 100644 _shared/CameraAnchor.gd.uid create mode 100644 _shared/CameraAnchor.tscn delete mode 100644 _shared/CameraSystem.tscn create mode 100644 _shared/camera/CameraManager.gd create mode 100644 _shared/camera/CameraManager.gd.uid create mode 100644 _shared/camera/GlobalCamera.gd create mode 100644 _shared/camera/GlobalCamera.gd.uid create mode 100644 _shared/camera/PlayerStaticCamera.tscn create mode 100644 _shared/camera/camera_shake/CameraSystem.tscn create mode 100644 _shared/camera/camera_shake/base_noise.tres delete mode 100644 _shared/camera_room.gd delete mode 100644 _shared/camera_room.gd.uid delete mode 100644 _shared/camera_system.gd delete mode 100644 _shared/camera_system.gd.uid delete mode 100644 _shared/room.tscn delete mode 100644 _shared/room_entrance.gd delete mode 100644 _shared/room_entrance.gd.uid delete mode 100644 _shared/room_entrance.tscn delete mode 100644 _shared/room_system.gd delete mode 100644 _shared/room_system.gd.uid diff --git a/_game/Game.tscn b/_game/Game.tscn index 6c678a4..1322145 100644 --- a/_game/Game.tscn +++ b/_game/Game.tscn @@ -1,14 +1,37 @@ -[gd_scene load_steps=5 format=4 uid="uid://3vc8ojbiyy5w"] +[gd_scene load_steps=18 format=3 uid="uid://3vc8ojbiyy5w"] [ext_resource type="PackedScene" uid="uid://gwhff4qaouxy" path="res://_player/Avatar.tscn" id="1_fdx6o"] -[ext_resource type="PackedScene" uid="uid://1l06de041i40" path="res://_levels/l_level_1.tscn" id="1_pvnxo"] +[ext_resource type="Script" uid="uid://crgac4manhoud" path="res://_game/game.gd" id="1_j2xwq"] [ext_resource type="PackedScene" uid="uid://cvqehvdjpoar4" path="res://_player/player_controller.tscn" id="2_j2xwq"] -[ext_resource type="PackedScene" uid="uid://c3mievyfhx6ni" path="res://_props/coin/coin.tscn" id="4_j2xwq"] +[ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="5_skiqd"] +[ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="6_1l6xv"] +[ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="7_iaift"] +[ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="8_nuiql"] +[ext_resource type="Script" uid="uid://pxjf5vst08eo" path="res://addons/reedscene/prop/PropManager.gd" id="9_6aweh"] +[ext_resource type="PackedScene" uid="uid://bflwr7cryd2l0" path="res://_shared/CameraAnchor.tscn" id="10_6aweh"] +[ext_resource type="Script" uid="uid://b4menkyub4ce7" path="res://addons/reedscene/prop/PropComponent.gd" id="11_knjgm"] +[ext_resource type="Script" uid="uid://di41kt2tj34c2" path="res://addons/reedscene/prop/StateManager.gd" id="12_7onhb"] +[ext_resource type="PackedScene" uid="uid://bonrls3iuhdqb" path="res://_props/_prefabs/player/player_trigger_volumn.tscn" id="13_6aweh"] +[ext_resource type="Script" uid="uid://7lml6d1t5xtq" path="res://addons/reedscene/prop/PropState.gd" id="13_28rt5"] +[ext_resource type="Script" uid="uid://cdvgq0xqdbagk" path="res://addons/reedscene/prop/ReedPropEffect.gd" id="13_knjgm"] + +[sub_resource type="Resource" id="Resource_7onhb"] +script = ExtResource("13_knjgm") +property_name = &"priority" +value = 0 +metadata/_custom_type_script = "uid://cdvgq0xqdbagk" + +[sub_resource type="Resource" id="Resource_knjgm"] +script = ExtResource("13_knjgm") +property_name = &"priority" +value = 1000 +metadata/_custom_type_script = "uid://cdvgq0xqdbagk" + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_knjgm"] +size = Vector2(661, 379) [node name="Game" type="Node2D"] - -[node name="level_1" parent="." groups=["GRAPABLE"] instance=ExtResource("1_pvnxo")] -tile_map_data = PackedByteArray("AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA8AAAAAAAAAAAAAABAAAAAAAAAAAAAAABEAAAAAAAAAAAAAABIAAAAAAAAAAAAAABMAAAAAAAAAAAAAABQAAAAAAAAAAAAAABUAAAAAAAAAAAAAABYAAAAAAAAAAAABAAAAAAAAAAAAAAABAAEAAAAAAAAAAAABAAIAAAAAAAAAAAABAAMAAAAAAAAAAAABAAQAAAAAAAAAAAABAAUAAAAAAAAAAAABAAYAAAAAAAAAAAABAAcAAAAAAAAAAAABAAgAAAAAAAAAAAABAAkAAAAAAAAAAAABAAoAAAAAAAAAAAABAAsAAAAAAAAAAAABAAwAAAAAAAAAAAABAA0AAAAAAAAAAAABAA4AAAAAAAAAAAABAA8AAAAAAAAAAAABABAAAAAAAAAAAAABABEAAAAAAAAAAAABABIAAAAAAAAAAAABABMAAAAAAAAAAAABABQAAAAAAAAAAAABABUAAAAAAAAAAAABABYAAAAAAAAAAAACAAAAAAAAAAAAAAACAAEAAAAAAAAAAAACAAIAAAAAAAAAAAACAAMAAAAAAAAAAAACAAQAAAAAAAAAAAACAAUAAAAAAAAAAAACAAYAAAAAAAAAAAACAAcAAAAAAAAAAAACAAgAAAAAAAAAAAACAAkAAAAAAAAAAAACAAoAAAAAAAAAAAACAAsAAAAAAAAAAAACAAwAAAAAAAAAAAACAA0AAAAAAAAAAAACAA4AAAAAAAAAAAACAA8AAAAAAAAAAAACABAAAAAAAAAAAAACABEAAAAAAAAAAAACABIAAAAAAAAAAAACABMAAAAAAAAAAAACABQAAAAAAAAAAAACABUAAAAAAAAAAAACABYAAAAAAAAAAAADAAAAAAAAAAAAAAADAAEAAAAAAAAAAAADAAIAAAAAAAAAAAADAAMAAAAAAAAAAAADAAQAAAAAAAAAAAADAAUAAAAAAAAAAAADAAYAAAAAAAAAAAADAAcAAAAAAAAAAAADAAgAAAAAAAAAAAADAAkAAAAAAAAAAAADAAoAAAAAAAAAAAADAAsAAAAAAAAAAAADAAwAAAAAAAAAAAADAA0AAAAAAAAAAAADAA4AAAAAAAAAAAADAA8AAAAAAAAAAAADABAAAAAAAAAAAAADABEAAAAAAAAAAAADABIAAAAAAAAAAAADABMAAAAAAAAAAAADABQAAAAAAAAAAAADABUAAAAAAAAAAAADABYAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAEAAAAAAAAAAAAEAAIAAAAAAAAAAAAEAAMAAAAAAAAAAAAEAAQAAAAAAAAAAAAEAAUAAAAAAAAAAAAEAAYAAAAAAAAAAAAEAAcAAAAAAAAAAAAEAAgAAAAAAAAAAAAEAAkAAAAAAAAAAAAEAAoAAAAAAAAAAAAEAAsAAAAAAAAAAAAEAAwAAAAAAAAAAAAEAA0AAAAAAAAAAAAEAA4AAAAAAAAAAAAEAA8AAAAAAAAAAAAEABAAAAAAAAAAAAAEABEAAAAAAAAAAAAEABIAAAAAAAAAAAAEABMAAAAAAAAAAAAEABQAAAAAAAAAAAAEABUAAAAAAAAAAAAEABYAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAEAAAAAAAAAAAAFAAIAAAAAAAAAAAAFAAMAAAAAAAAAAAAFAAQAAAAAAAAAAAAFAAUAAAAAAAAAAAAFAAYAAAAAAAAAAAAFAAcAAAAAAAAAAAAFAAgAAAAAAAAAAAAFAAkAAAAAAAAAAAAFAAoAAAAAAAAAAAAFAAsAAAAAAAAAAAAFAAwAAAAAAAAAAAAFAA0AAAAAAAAAAAAFAA4AAAAAAAAAAAAFAA8AAAAAAAAAAAAFABAAAAAAAAAAAAAFABEAAAAAAAAAAAAFABIAAAAAAAAAAAAFABMAAAAAAAAAAAAFABQAAAAAAAAAAAAFABUAAAAAAAAAAAAFABYAAAAAAAAAAAAGABIAAAAAAAAAAAAGABMAAAAAAAAAAAAGABQAAAAAAAAAAAAGABUAAAAAAAAAAAAGABYAAAAAAAAAAAAHABIAAAAAAAAAAAAHABMAAAAAAAAAAAAHABQAAAAAAAAAAAAHABUAAAAAAAAAAAAHABYAAAAAAAAAAAAIABIAAAAAAAAAAAAIABMAAAAAAAAAAAAIABQAAAAAAAAAAAAIABUAAAAAAAAAAAAIABYAAAAAAAAAAAAJABIAAAAAAAAAAAAJABMAAAAAAAAAAAAJABQAAAAAAAAAAAAJABUAAAAAAAAAAAAJABYAAAAAAAAAAAAKABIAAAAAAAAAAAAKABMAAAAAAAAAAAAKABQAAAAAAAAAAAAKABUAAAAAAAAAAAAKABYAAAAAAAAAAAALABIAAAAAAAAAAAALABMAAAAAAAAAAAALABQAAAAAAAAAAAALABUAAAAAAAAAAAALABYAAAAAAAAAAAAMABIAAAAAAAAAAAAMABMAAAAAAAAAAAAMABQAAAAAAAAAAAAMABUAAAAAAAAAAAAMABYAAAAAAAAAAAANABIAAAAAAAAAAAANABMAAAAAAAAAAAANABQAAAAAAAAAAAANABUAAAAAAAAAAAANABYAAAAAAAAAAAAOABIAAAAAAAAAAAAOABMAAAAAAAAAAAAOABQAAAAAAAAAAAAOABUAAAAAAAAAAAAOABYAAAAAAAAAAAAPABIAAAAAAAAAAAAPABMAAAAAAAAAAAAPABQAAAAAAAAAAAAPABUAAAAAAAAAAAAPABYAAAAAAAAAAAAQABIAAAAAAAAAAAAQABMAAAAAAAAAAAAQABQAAAAAAAAAAAAQABUAAAAAAAAAAAAQABYAAAAAAAAAAAARABIAAAAAAAAAAAARABMAAAAAAAAAAAARABQAAAAAAAAAAAARABUAAAAAAAAAAAARABYAAAAAAAAAAAASABIAAAAAAAAAAAASABMAAAAAAAAAAAASABQAAAAAAAAAAAASABUAAAAAAAAAAAASABYAAAAAAAAAAAATABIAAAAAAAAAAAATABMAAAAAAAAAAAATABQAAAAAAAAAAAATABUAAAAAAAAAAAATABYAAAAAAAAAAAAUABIAAAAAAAAAAAAUABMAAAAAAAAAAAAUABQAAAAAAAAAAAAUABUAAAAAAAAAAAAUABYAAAAAAAAAAAAVABIAAAAAAAAAAAAVABMAAAAAAAAAAAAVABQAAAAAAAAAAAAVABUAAAAAAAAAAAAVABYAAAAAAAAAAAARAA8AAAAAAAAAAAARABAAAAAAAAAAAAARABEAAAAAAAAAAAASAA8AAAAAAAAAAAASABAAAAAAAAAAAAASABEAAAAAAAAAAAATAA8AAAAAAAAAAAATABAAAAAAAAAAAAATABEAAAAAAAAAAAAUAA8AAAAAAAAAAAAUABAAAAAAAAAAAAAUABEAAAAAAAAAAAAVAA8AAAAAAAAAAAAVABAAAAAAAAAAAAAVABEAAAAAAAAAAAAGAAAAAAAAAAAAAAAGAAEAAAAAAAAAAAAGAAIAAAAAAAAAAAAGAAMAAAAAAAAAAAAGAAQAAAAAAAAAAAAGAAUAAAAAAAAAAAAGAAYAAAAAAAAAAAAGAAcAAAAAAAAAAAAGAAgAAAAAAAAAAAAHAAAAAAAAAAAAAAAHAAEAAAAAAAAAAAAHAAIAAAAAAAAAAAAHAAMAAAAAAAAAAAAHAAQAAAAAAAAAAAAHAAUAAAAAAAAAAAAHAAYAAAAAAAAAAAAHAAcAAAAAAAAAAAAHAAgAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAEAAAAAAAAAAAAIAAIAAAAAAAAAAAAIAAMAAAAAAAAAAAAIAAQAAAAAAAAAAAAIAAUAAAAAAAAAAAAIAAYAAAAAAAAAAAAIAAcAAAAAAAAAAAAIAAgAAAAAAAAAAAAJAAAAAAAAAAAAAAAJAAEAAAAAAAAAAAAJAAIAAAAAAAAAAAAJAAMAAAAAAAAAAAAJAAQAAAAAAAAAAAAJAAUAAAAAAAAAAAAJAAYAAAAAAAAAAAAJAAcAAAAAAAAAAAAJAAgAAAAAAAAAAAAKAAAAAAAAAAAAAAAKAAEAAAAAAAAAAAAKAAIAAAAAAAAAAAAKAAMAAAAAAAAAAAAKAAQAAAAAAAAAAAAKAAUAAAAAAAAAAAAKAAYAAAAAAAAAAAAKAAcAAAAAAAAAAAAKAAgAAAAAAAAAAAALAAAAAAAAAAAAAAALAAEAAAAAAAAAAAALAAIAAAAAAAAAAAALAAMAAAAAAAAAAAALAAQAAAAAAAAAAAALAAUAAAAAAAAAAAALAAYAAAAAAAAAAAALAAcAAAAAAAAAAAALAAgAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAEAAAAAAAAAAAAMAAIAAAAAAAAAAAAMAAMAAAAAAAAAAAAMAAQAAAAAAAAAAAAMAAUAAAAAAAAAAAAMAAYAAAAAAAAAAAAMAAcAAAAAAAAAAAAMAAgAAAAAAAAAAAANAAAAAAAAAAAAAAANAAEAAAAAAAAAAAANAAIAAAAAAAAAAAANAAMAAAAAAAAAAAANAAQAAAAAAAAAAAANAAUAAAAAAAAAAAANAAYAAAAAAAAAAAANAAcAAAAAAAAAAAANAAgAAAAAAAAAAAAOAAAAAAAAAAAAAAAOAAEAAAAAAAAAAAAOAAIAAAAAAAAAAAAOAAMAAAAAAAAAAAAOAAQAAAAAAAAAAAAOAAUAAAAAAAAAAAAOAAYAAAAAAAAAAAAOAAcAAAAAAAAAAAAOAAgAAAAAAAAAAAAcAAkAAAAAAAAAAAAcAAoAAAAAAAAAAAAcAAsAAAAAAAAAAAAcAAwAAAAAAAAAAAAcAA0AAAAAAAAAAAAcAA4AAAAAAAAAAAAcAA8AAAAAAAAAAAAcABAAAAAAAAAAAAAcABEAAAAAAAAAAAAcABIAAAAAAAAAAAAcABMAAAAAAAAAAAAcABQAAAAAAAAAAAAcABUAAAAAAAAAAAAcABYAAAAAAAAAAAAdAAkAAAAAAAAAAAAdAAoAAAAAAAAAAAAdAAsAAAAAAAAAAAAdAAwAAAAAAAAAAAAdAA0AAAAAAAAAAAAdAA4AAAAAAAAAAAAdAA8AAAAAAAAAAAAdABAAAAAAAAAAAAAdABEAAAAAAAAAAAAdABIAAAAAAAAAAAAdABMAAAAAAAAAAAAdABQAAAAAAAAAAAAdABUAAAAAAAAAAAAdABYAAAAAAAAAAAAeAAkAAAAAAAAAAAAeAAoAAAAAAAAAAAAeAAsAAAAAAAAAAAAeAAwAAAAAAAAAAAAeAA0AAAAAAAAAAAAeAA4AAAAAAAAAAAAeAA8AAAAAAAAAAAAeABAAAAAAAAAAAAAeABEAAAAAAAAAAAAeABIAAAAAAAAAAAAeABMAAAAAAAAAAAAeABQAAAAAAAAAAAAeABUAAAAAAAAAAAAeABYAAAAAAAAAAAAfAAkAAAAAAAAAAAAfAAoAAAAAAAAAAAAfAAsAAAAAAAAAAAAfAAwAAAAAAAAAAAAfAA0AAAAAAAAAAAAfAA4AAAAAAAAAAAAfAA8AAAAAAAAAAAAfABAAAAAAAAAAAAAfABEAAAAAAAAAAAAfABIAAAAAAAAAAAAfABMAAAAAAAAAAAAfABQAAAAAAAAAAAAfABUAAAAAAAAAAAAfABYAAAAAAAAAAAAgAAkAAAAAAAAAAAAgAAoAAAAAAAAAAAAgAAsAAAAAAAAAAAAgAAwAAAAAAAAAAAAgAA0AAAAAAAAAAAAgAA4AAAAAAAAAAAAgAA8AAAAAAAAAAAAgABAAAAAAAAAAAAAgABEAAAAAAAAAAAAgABIAAAAAAAAAAAAgABMAAAAAAAAAAAAgABQAAAAAAAAAAAAgABUAAAAAAAAAAAAgABYAAAAAAAAAAAAhAAkAAAAAAAAAAAAhAAoAAAAAAAAAAAAhAAsAAAAAAAAAAAAhAAwAAAAAAAAAAAAhAA0AAAAAAAAAAAAhAA4AAAAAAAAAAAAhAA8AAAAAAAAAAAAhABAAAAAAAAAAAAAhABEAAAAAAAAAAAAhABIAAAAAAAAAAAAhABMAAAAAAAAAAAAhABQAAAAAAAAAAAAhABUAAAAAAAAAAAAhABYAAAAAAAAAAAAiAAkAAAAAAAAAAAAiAAoAAAAAAAAAAAAiAAsAAAAAAAAAAAAiAAwAAAAAAAAAAAAiAA0AAAAAAAAAAAAiAA4AAAAAAAAAAAAiAA8AAAAAAAAAAAAiABAAAAAAAAAAAAAiABEAAAAAAAAAAAAiABIAAAAAAAAAAAAiABMAAAAAAAAAAAAiABQAAAAAAAAAAAAiABUAAAAAAAAAAAAiABYAAAAAAAAAAAAjAAkAAAAAAAAAAAAjAAoAAAAAAAAAAAAjAAsAAAAAAAAAAAAjAAwAAAAAAAAAAAAjAA0AAAAAAAAAAAAjAA4AAAAAAAAAAAAjAA8AAAAAAAAAAAAjABAAAAAAAAAAAAAjABEAAAAAAAAAAAAjABIAAAAAAAAAAAAjABMAAAAAAAAAAAAjABQAAAAAAAAAAAAjABUAAAAAAAAAAAAjABYAAAAAAAAAAAAkAAkAAAAAAAAAAAAkAAoAAAAAAAAAAAAkAAsAAAAAAAAAAAAkAAwAAAAAAAAAAAAkAA0AAAAAAAAAAAAkAA4AAAAAAAAAAAAkAA8AAAAAAAAAAAAkABAAAAAAAAAAAAAkABEAAAAAAAAAAAAkABIAAAAAAAAAAAAkABMAAAAAAAAAAAAkABQAAAAAAAAAAAAkABUAAAAAAAAAAAAkABYAAAAAAAAAAAAlAAwAAAAAAAAAAAAlAA0AAAAAAAAAAAAlAA4AAAAAAAAAAAAlAA8AAAAAAAAAAAAlABAAAAAAAAAAAAAlABEAAAAAAAAAAAAlABIAAAAAAAAAAAAlABMAAAAAAAAAAAAlABQAAAAAAAAAAAAlABUAAAAAAAAAAAAlABYAAAAAAAAAAAAmAAwAAAAAAAAAAAAmAA0AAAAAAAAAAAAmAA4AAAAAAAAAAAAmAA8AAAAAAAAAAAAmABAAAAAAAAAAAAAmABEAAAAAAAAAAAAmABIAAAAAAAAAAAAmABMAAAAAAAAAAAAmABQAAAAAAAAAAAAmABUAAAAAAAAAAAAmABYAAAAAAAAAAAAnAA0AAAAAAAAAAAAnAA4AAAAAAAAAAAAnAA8AAAAAAAAAAAAnABAAAAAAAAAAAAAnABEAAAAAAAAAAAAnABIAAAAAAAAAAAAnABMAAAAAAAAAAAAnABQAAAAAAAAAAAAnABUAAAAAAAAAAAAnABYAAAAAAAAAAAAoAA0AAAAAAAAAAAAoAA4AAAAAAAAAAAAoAA8AAAAAAAAAAAAoABAAAAAAAAAAAAAoABEAAAAAAAAAAAAoABIAAAAAAAAAAAAoABMAAAAAAAAAAAAoABQAAAAAAAAAAAAoABUAAAAAAAAAAAAoABYAAAAAAAAAAAApAA0AAAAAAAAAAAApAA4AAAAAAAAAAAApAA8AAAAAAAAAAAApABAAAAAAAAAAAAApABEAAAAAAAAAAAApABIAAAAAAAAAAAApABMAAAAAAAAAAAApABQAAAAAAAAAAAApABUAAAAAAAAAAAApABYAAAAAAAAAAAAqAA0AAAAAAAAAAAAqAA4AAAAAAAAAAAAqAA8AAAAAAAAAAAAqABAAAAAAAAAAAAAqABEAAAAAAAAAAAAqABIAAAAAAAAAAAAqABMAAAAAAAAAAAAqABQAAAAAAAAAAAAqABUAAAAAAAAAAAAqABYAAAAAAAAAAAArAAwAAAAAAAAAAAArAA0AAAAAAAAAAAArAA4AAAAAAAAAAAArAA8AAAAAAAAAAAArABAAAAAAAAAAAAArABEAAAAAAAAAAAArABIAAAAAAAAAAAArABMAAAAAAAAAAAArABQAAAAAAAAAAAArABUAAAAAAAAAAAArABYAAAAAAAAAAAAsAAkAAAAAAAAAAAAsAAoAAAAAAAAAAAAsAAsAAAAAAAAAAAAsAAwAAAAAAAAAAAAsAA0AAAAAAAAAAAAsAA4AAAAAAAAAAAAsAA8AAAAAAAAAAAAsABAAAAAAAAAAAAAsABEAAAAAAAAAAAAsABIAAAAAAAAAAAAsABMAAAAAAAAAAAAsABQAAAAAAAAAAAAsABUAAAAAAAAAAAAsABYAAAAAAAAAAAAtAAkAAAAAAAAAAAAtAAoAAAAAAAAAAAAtAAsAAAAAAAAAAAAtAAwAAAAAAAAAAAAtAA0AAAAAAAAAAAAtAA4AAAAAAAAAAAAtAA8AAAAAAAAAAAAtABAAAAAAAAAAAAAtABEAAAAAAAAAAAAtABIAAAAAAAAAAAAtABMAAAAAAAAAAAAtABQAAAAAAAAAAAAtABUAAAAAAAAAAAAtABYAAAAAAAAAAAAuAAkAAAAAAAAAAAAuAAoAAAAAAAAAAAAuAAsAAAAAAAAAAAAuAAwAAAAAAAAAAAAuAA0AAAAAAAAAAAAuAA4AAAAAAAAAAAAuAA8AAAAAAAAAAAAuABAAAAAAAAAAAAAuABEAAAAAAAAAAAAuABIAAAAAAAAAAAAuABMAAAAAAAAAAAAuABQAAAAAAAAAAAAuABUAAAAAAAAAAAAuABYAAAAAAAAAAAAvAAkAAAAAAAAAAAAvAAoAAAAAAAAAAAAvAAsAAAAAAAAAAAAvAAwAAAAAAAAAAAAvAA0AAAAAAAAAAAAvAA4AAAAAAAAAAAAvAA8AAAAAAAAAAAAvABAAAAAAAAAAAAAvABEAAAAAAAAAAAAvABIAAAAAAAAAAAAvABMAAAAAAAAAAAAvABQAAAAAAAAAAAAvABUAAAAAAAAAAAAvABYAAAAAAAAAAAAwAAkAAAAAAAAAAAAwAAoAAAAAAAAAAAAwAAsAAAAAAAAAAAAwAAwAAAAAAAAAAAAwAA0AAAAAAAAAAAAwAA4AAAAAAAAAAAAwAA8AAAAAAAAAAAAwABAAAAAAAAAAAAAwABEAAAAAAAAAAAAwABIAAAAAAAAAAAAwABMAAAAAAAAAAAAwABQAAAAAAAAAAAAwABUAAAAAAAAAAAAwABYAAAAAAAAAAAAxAAkAAAAAAAAAAAAxAAoAAAAAAAAAAAAxAAsAAAAAAAAAAAAxAAwAAAAAAAAAAAAxAA0AAAAAAAAAAAAxAA4AAAAAAAAAAAAxAA8AAAAAAAAAAAAxABAAAAAAAAAAAAAxABEAAAAAAAAAAAAxABIAAAAAAAAAAAAxABMAAAAAAAAAAAAxABQAAAAAAAAAAAAxABUAAAAAAAAAAAAxABYAAAAAAAAAAAAyAAkAAAAAAAAAAAAyAAoAAAAAAAAAAAAyAAsAAAAAAAAAAAAyAAwAAAAAAAAAAAAyAA0AAAAAAAAAAAAyAA4AAAAAAAAAAAAyAA8AAAAAAAAAAAAyABAAAAAAAAAAAAAyABEAAAAAAAAAAAAyABIAAAAAAAAAAAAyABMAAAAAAAAAAAAyABQAAAAAAAAAAAAyABUAAAAAAAAAAAAyABYAAAAAAAAAAAAzAAkAAAAAAAAAAAAzAAoAAAAAAAAAAAAzAAsAAAAAAAAAAAAzAAwAAAAAAAAAAAAzAA0AAAAAAAAAAAAzAA4AAAAAAAAAAAAzAA8AAAAAAAAAAAAzABAAAAAAAAAAAAAzABEAAAAAAAAAAAAzABIAAAAAAAAAAAAzABMAAAAAAAAAAAAzABQAAAAAAAAAAAAzABUAAAAAAAAAAAAzABYAAAAAAAAAAAAlAAsAAAAAAAAAAAArAAsAAAAAAAAAAAAqAAwAAAAAAAAAAAAAAPv/AAAAAAAAAAAAAPz/AAAAAAAAAAAAAP3/AAAAAAAAAAAAAP7/AAAAAAAAAAAAAP//AAAAAAAAAAABAPv/AAAAAAAAAAABAPz/AAAAAAAAAAABAP3/AAAAAAAAAAABAP7/AAAAAAAAAAABAP//AAAAAAAAAAACAPv/AAAAAAAAAAACAPz/AAAAAAAAAAACAP3/AAAAAAAAAAACAP7/AAAAAAAAAAACAP//AAAAAAAAAAADAPv/AAAAAAAAAAADAPz/AAAAAAAAAAADAP3/AAAAAAAAAAADAP7/AAAAAAAAAAADAP//AAAAAAAAAAAEAPv/AAAAAAAAAAAEAPz/AAAAAAAAAAAEAP3/AAAAAAAAAAAEAP7/AAAAAAAAAAAEAP//AAAAAAAAAAAFAPv/AAAAAAAAAAAFAPz/AAAAAAAAAAAFAP3/AAAAAAAAAAAFAP7/AAAAAAAAAAAFAP//AAAAAAAAAAAGAPv/AAAAAAAAAAAGAPz/AAAAAAAAAAAGAP3/AAAAAAAAAAAGAP7/AAAAAAAAAAAGAP//AAAAAAAAAAAHAPv/AAAAAAAAAAAHAPz/AAAAAAAAAAAHAP3/AAAAAAAAAAAHAP7/AAAAAAAAAAAHAP//AAAAAAAAAAAIAPv/AAAAAAAAAAAIAPz/AAAAAAAAAAAIAP3/AAAAAAAAAAAIAP7/AAAAAAAAAAAIAP//AAAAAAAAAAAJAPv/AAAAAAAAAAAJAPz/AAAAAAAAAAAJAP3/AAAAAAAAAAAJAP7/AAAAAAAAAAAJAP//AAAAAAAAAAAKAPv/AAAAAAAAAAAKAPz/AAAAAAAAAAAKAP3/AAAAAAAAAAAKAP7/AAAAAAAAAAAKAP//AAAAAAAAAAALAPv/AAAAAAAAAAALAPz/AAAAAAAAAAALAP3/AAAAAAAAAAALAP7/AAAAAAAAAAALAP//AAAAAAAAAAAMAPv/AAAAAAAAAAAMAPz/AAAAAAAAAAAMAP3/AAAAAAAAAAAMAP7/AAAAAAAAAAAMAP//AAAAAAAAAAANAPv/AAAAAAAAAAANAPz/AAAAAAAAAAANAP3/AAAAAAAAAAANAP7/AAAAAAAAAAANAP//AAAAAAAAAAAOAPv/AAAAAAAAAAAOAPz/AAAAAAAAAAAOAP3/AAAAAAAAAAAOAP7/AAAAAAAAAAAOAP//AAAAAAAAAAAAAPb/AAAAAAAAAAAAAPf/AAAAAAAAAAAAAPj/AAAAAAAAAAAAAPn/AAAAAAAAAAAAAPr/AAAAAAAAAAABAPb/AAAAAAAAAAABAPf/AAAAAAAAAAABAPj/AAAAAAAAAAABAPn/AAAAAAAAAAABAPr/AAAAAAAAAAACAPb/AAAAAAAAAAACAPf/AAAAAAAAAAACAPj/AAAAAAAAAAACAPn/AAAAAAAAAAACAPr/AAAAAAAAAAADAPb/AAAAAAAAAAADAPf/AAAAAAAAAAADAPj/AAAAAAAAAAADAPn/AAAAAAAAAAADAPr/AAAAAAAAAAAEAPb/AAAAAAAAAAAEAPf/AAAAAAAAAAAEAPj/AAAAAAAAAAAEAPn/AAAAAAAAAAAEAPr/AAAAAAAAAAAFAPb/AAAAAAAAAAAFAPf/AAAAAAAAAAAFAPj/AAAAAAAAAAAFAPn/AAAAAAAAAAAFAPr/AAAAAAAAAAAGAPb/AAAAAAAAAAAGAPf/AAAAAAAAAAAGAPj/AAAAAAAAAAAGAPn/AAAAAAAAAAAGAPr/AAAAAAAAAAAHAPb/AAAAAAAAAAAHAPf/AAAAAAAAAAAHAPj/AAAAAAAAAAAHAPn/AAAAAAAAAAAHAPr/AAAAAAAAAAAIAPb/AAAAAAAAAAAIAPf/AAAAAAAAAAAIAPj/AAAAAAAAAAAIAPn/AAAAAAAAAAAIAPr/AAAAAAAAAAAJAPb/AAAAAAAAAAAJAPf/AAAAAAAAAAAJAPj/AAAAAAAAAAAJAPn/AAAAAAAAAAAJAPr/AAAAAAAAAAAKAPb/AAAAAAAAAAAKAPf/AAAAAAAAAAAKAPj/AAAAAAAAAAAKAPn/AAAAAAAAAAAKAPr/AAAAAAAAAAALAPb/AAAAAAAAAAALAPf/AAAAAAAAAAALAPj/AAAAAAAAAAALAPn/AAAAAAAAAAALAPr/AAAAAAAAAAAMAPb/AAAAAAAAAAAMAPf/AAAAAAAAAAAMAPj/AAAAAAAAAAAMAPn/AAAAAAAAAAAMAPr/AAAAAAAAAAANAPb/AAAAAAAAAAANAPf/AAAAAAAAAAANAPj/AAAAAAAAAAANAPn/AAAAAAAAAAANAPr/AAAAAAAAAAAOAPb/AAAAAAAAAAAOAPf/AAAAAAAAAAAOAPj/AAAAAAAAAAAOAPn/AAAAAAAAAAAOAPr/AAAAAAAAAAAPAPb/AAAAAAAAAAAPAPf/AAAAAAAAAAAPAPj/AAAAAAAAAAAPAPn/AAAAAAAAAAAPAPr/AAAAAAAAAAAQAPb/AAAAAAAAAAAQAPf/AAAAAAAAAAAQAPj/AAAAAAAAAAAQAPn/AAAAAAAAAAAQAPr/AAAAAAAAAAARAPb/AAAAAAAAAAARAPf/AAAAAAAAAAARAPj/AAAAAAAAAAARAPn/AAAAAAAAAAARAPr/AAAAAAAAAAASAPb/AAAAAAAAAAASAPf/AAAAAAAAAAASAPj/AAAAAAAAAAASAPn/AAAAAAAAAAASAPr/AAAAAAAAAAATAPb/AAAAAAAAAAATAPf/AAAAAAAAAAATAPj/AAAAAAAAAAATAPn/AAAAAAAAAAATAPr/AAAAAAAAAAAUAPb/AAAAAAAAAAAUAPf/AAAAAAAAAAAUAPj/AAAAAAAAAAAUAPn/AAAAAAAAAAAUAPr/AAAAAAAAAAAVAPb/AAAAAAAAAAAVAPf/AAAAAAAAAAAVAPj/AAAAAAAAAAAVAPn/AAAAAAAAAAAVAPr/AAAAAAAAAAAWAPb/AAAAAAAAAAAWAPf/AAAAAAAAAAAWAPj/AAAAAAAAAAAWAPn/AAAAAAAAAAAWAPr/AAAAAAAAAAAXAPb/AAAAAAAAAAAXAPf/AAAAAAAAAAAXAPj/AAAAAAAAAAAXAPn/AAAAAAAAAAAXAPr/AAAAAAAAAAAYAPb/AAAAAAAAAAAYAPf/AAAAAAAAAAAYAPj/AAAAAAAAAAAYAPn/AAAAAAAAAAAYAPr/AAAAAAAAAAAZAPb/AAAAAAAAAAAZAPf/AAAAAAAAAAAZAPj/AAAAAAAAAAAZAPn/AAAAAAAAAAAZAPr/AAAAAAAAAAAaAPb/AAAAAAAAAAAaAPf/AAAAAAAAAAAaAPj/AAAAAAAAAAAaAPn/AAAAAAAAAAAaAPr/AAAAAAAAAAAbAPb/AAAAAAAAAAAbAPf/AAAAAAAAAAAbAPj/AAAAAAAAAAAbAPn/AAAAAAAAAAAbAPr/AAAAAAAAAAAcAPb/AAAAAAAAAAAcAPf/AAAAAAAAAAAcAPj/AAAAAAAAAAAcAPn/AAAAAAAAAAAcAPr/AAAAAAAAAAAdAPb/AAAAAAAAAAAdAPf/AAAAAAAAAAAdAPj/AAAAAAAAAAAdAPn/AAAAAAAAAAAdAPr/AAAAAAAAAAAeAPb/AAAAAAAAAAAeAPf/AAAAAAAAAAAeAPj/AAAAAAAAAAAeAPn/AAAAAAAAAAAeAPr/AAAAAAAAAAAfAPb/AAAAAAAAAAAfAPf/AAAAAAAAAAAfAPj/AAAAAAAAAAAfAPn/AAAAAAAAAAAfAPr/AAAAAAAAAAAgAPb/AAAAAAAAAAAgAPf/AAAAAAAAAAAgAPj/AAAAAAAAAAAgAPn/AAAAAAAAAAAgAPr/AAAAAAAAAAAhAPb/AAAAAAAAAAAhAPf/AAAAAAAAAAAhAPj/AAAAAAAAAAAhAPn/AAAAAAAAAAAhAPr/AAAAAAAAAAAiAPb/AAAAAAAAAAAiAPf/AAAAAAAAAAAiAPj/AAAAAAAAAAAiAPn/AAAAAAAAAAAiAPr/AAAAAAAAAAAjAPb/AAAAAAAAAAAjAPf/AAAAAAAAAAAjAPj/AAAAAAAAAAAjAPn/AAAAAAAAAAAjAPr/AAAAAAAAAAAkAPb/AAAAAAAAAAAkAPf/AAAAAAAAAAAkAPj/AAAAAAAAAAAkAPn/AAAAAAAAAAAkAPr/AAAAAAAAAAAlAPb/AAAAAAAAAAAlAPf/AAAAAAAAAAAlAPj/AAAAAAAAAAAlAPn/AAAAAAAAAAAlAPr/AAAAAAAAAAAmAPb/AAAAAAAAAAAmAPf/AAAAAAAAAAAmAPj/AAAAAAAAAAAmAPn/AAAAAAAAAAAmAPr/AAAAAAAAAAAnAPb/AAAAAAAAAAAnAPf/AAAAAAAAAAAnAPj/AAAAAAAAAAAnAPn/AAAAAAAAAAAnAPr/AAAAAAAAAAAoAPb/AAAAAAAAAAAoAPf/AAAAAAAAAAAoAPj/AAAAAAAAAAAoAPn/AAAAAAAAAAAoAPr/AAAAAAAAAAApAPb/AAAAAAAAAAApAPf/AAAAAAAAAAApAPj/AAAAAAAAAAApAPn/AAAAAAAAAAApAPr/AAAAAAAAAAAqAPb/AAAAAAAAAAAqAPf/AAAAAAAAAAAqAPj/AAAAAAAAAAAqAPn/AAAAAAAAAAAqAPr/AAAAAAAAAAArAPb/AAAAAAAAAAArAPf/AAAAAAAAAAArAPj/AAAAAAAAAAArAPn/AAAAAAAAAAArAPr/AAAAAAAAAAAsAPb/AAAAAAAAAAAsAPf/AAAAAAAAAAAsAPj/AAAAAAAAAAAsAPn/AAAAAAAAAAAsAPr/AAAAAAAAAAAtAPb/AAAAAAAAAAAtAPf/AAAAAAAAAAAtAPj/AAAAAAAAAAAtAPn/AAAAAAAAAAAtAPr/AAAAAAAAAAAuAPb/AAAAAAAAAAAuAPf/AAAAAAAAAAAuAPj/AAAAAAAAAAAuAPn/AAAAAAAAAAAuAPr/AAAAAAAAAAAvAPb/AAAAAAAAAAAvAPf/AAAAAAAAAAAvAPj/AAAAAAAAAAAvAPn/AAAAAAAAAAAvAPr/AAAAAAAAAAAwAPb/AAAAAAAAAAAwAPf/AAAAAAAAAAAwAPj/AAAAAAAAAAAwAPn/AAAAAAAAAAAwAPr/AAAAAAAAAAAxAPb/AAAAAAAAAAAxAPf/AAAAAAAAAAAxAPj/AAAAAAAAAAAxAPn/AAAAAAAAAAAxAPr/AAAAAAAAAAAyAPb/AAAAAAAAAAAyAPf/AAAAAAAAAAAyAPj/AAAAAAAAAAAyAPn/AAAAAAAAAAAyAPr/AAAAAAAAAAAzAPb/AAAAAAAAAAAzAPf/AAAAAAAAAAAzAPj/AAAAAAAAAAAzAPn/AAAAAAAAAAAzAPr/AAAAAAAAAAA0APb/AAAAAAAAAAA0APf/AAAAAAAAAAA0APj/AAAAAAAAAAA0APn/AAAAAAAAAAA0APr/AAAAAAAAAAA1APb/AAAAAAAAAAA1APf/AAAAAAAAAAA1APj/AAAAAAAAAAA1APn/AAAAAAAAAAA1APr/AAAAAAAAAAA2APb/AAAAAAAAAAA2APf/AAAAAAAAAAA2APj/AAAAAAAAAAA2APn/AAAAAAAAAAA2APr/AAAAAAAAAAA3APb/AAAAAAAAAAA3APf/AAAAAAAAAAA3APj/AAAAAAAAAAA3APn/AAAAAAAAAAA3APr/AAAAAAAAAAA4APb/AAAAAAAAAAA4APf/AAAAAAAAAAA4APj/AAAAAAAAAAA4APn/AAAAAAAAAAA4APr/AAAAAAAAAAA5APb/AAAAAAAAAAA5APf/AAAAAAAAAAA5APj/AAAAAAAAAAA5APn/AAAAAAAAAAA5APr/AAAAAAAAAAA6APb/AAAAAAAAAAA6APf/AAAAAAAAAAA6APj/AAAAAAAAAAA6APn/AAAAAAAAAAA6APr/AAAAAAAAAAAWAA8AAAABAAAAAAAWABAAAAABAAAAAAAWABEAAAABAAAAAAAWABIAAAABAAAAAAAWABMAAAABAAAAAAAWABQAAAABAAAAAAAWABUAAAABAAAAAAAWABYAAAABAAAAAAAbAA8AAAABAAAAAAAbABAAAAABAAAAAAAbABEAAAABAAAAAAAbABIAAAABAAAAAAAbABMAAAABAAAAAAAbABQAAAABAAAAAAAbABUAAAABAAAAAAAbABYAAAABAAAAAAAhAAgAAAABAAAAAAAiAAgAAAABAAAAAAAjAAgAAAABAAAAAABKAAkAAAAAAAAAAABKAAoAAAAAAAAAAABKAAsAAAAAAAAAAABKAAwAAAAAAAAAAABLAAkAAAAAAAAAAABLAAoAAAAAAAAAAABLAAsAAAAAAAAAAABLAAwAAAAAAAAAAABKAAUAAAAAAAAAAABKAAYAAAAAAAAAAABKAAcAAAAAAAAAAABKAAgAAAAAAAAAAABKAA0AAAAAAAAAAABLAAUAAAAAAAAAAABLAAYAAAAAAAAAAABLAAcAAAAAAAAAAABLAAgAAAAAAAAAAABLAA0AAAAAAAAAAABQABMAAAAAAAAAAABQABQAAAAAAAAAAABQABUAAAAAAAAAAABQABYAAAAAAAAAAABQABcAAAAAAAAAAABRABMAAAAAAAAAAABRABQAAAAAAAAAAABRABUAAAAAAAAAAABRABYAAAAAAAAAAABRABcAAAAAAAAAAABSABMAAAAAAAAAAABSABQAAAAAAAAAAABSABUAAAAAAAAAAABSABYAAAAAAAAAAABSABcAAAAAAAAAAABTABMAAAAAAAAAAABTABQAAAAAAAAAAABTABUAAAAAAAAAAABTABYAAAAAAAAAAABTABcAAAAAAAAAAABUABMAAAAAAAAAAABUABQAAAAAAAAAAABUABUAAAAAAAAAAABUABYAAAAAAAAAAABUABcAAAAAAAAAAABVABMAAAAAAAAAAABVABQAAAAAAAAAAABVABUAAAAAAAAAAABVABYAAAAAAAAAAABVABcAAAAAAAAAAABWABMAAAAAAAAAAABWABQAAAAAAAAAAABWABUAAAAAAAAAAABWABYAAAAAAAAAAABWABcAAAAAAAAAAABXAAsAAAAAAAAAAABXAAwAAAAAAAAAAABXAA0AAAAAAAAAAABXAA4AAAAAAAAAAABXABMAAAAAAAAAAABXABQAAAAAAAAAAABXABUAAAAAAAAAAABXABYAAAAAAAAAAABXABcAAAAAAAAAAABYAAsAAAAAAAAAAABYAAwAAAAAAAAAAABYAA0AAAAAAAAAAABYAA4AAAAAAAAAAABYABMAAAAAAAAAAABYABQAAAAAAAAAAABYABUAAAAAAAAAAABYABYAAAAAAAAAAABYABcAAAAAAAAAAABZAAsAAAAAAAAAAABZAAwAAAAAAAAAAABZAA0AAAAAAAAAAABZAA4AAAAAAAAAAABZABMAAAAAAAAAAABZABQAAAAAAAAAAABZABUAAAAAAAAAAABZABYAAAAAAAAAAABZABcAAAAAAAAAAABaAAsAAAAAAAAAAABaAAwAAAAAAAAAAABaAA0AAAAAAAAAAABaAA4AAAAAAAAAAABaABMAAAAAAAAAAABaABQAAAAAAAAAAABaABUAAAAAAAAAAABaABYAAAAAAAAAAABaABcAAAAAAAAAAABbAAsAAAAAAAAAAABbAAwAAAAAAAAAAABbAA0AAAAAAAAAAABbAA4AAAAAAAAAAABbABMAAAAAAAAAAABbABQAAAAAAAAAAABbABUAAAAAAAAAAABbABYAAAAAAAAAAABbABcAAAAAAAAAAABcAAsAAAAAAAAAAABcAAwAAAAAAAAAAABcAA0AAAAAAAAAAABcAA4AAAAAAAAAAABcABMAAAAAAAAAAABcABQAAAAAAAAAAABcABUAAAAAAAAAAABcABYAAAAAAAAAAABcABcAAAAAAAAAAABdAAsAAAAAAAAAAABdAAwAAAAAAAAAAABdAA0AAAAAAAAAAABdAA4AAAAAAAAAAABdABMAAAAAAAAAAABdABQAAAAAAAAAAABdABUAAAAAAAAAAABdABYAAAAAAAAAAABdABcAAAAAAAAAAABeAAsAAAAAAAAAAABeAAwAAAAAAAAAAABeAA0AAAAAAAAAAABeAA4AAAAAAAAAAABeABMAAAAAAAAAAABeABQAAAAAAAAAAABeABUAAAAAAAAAAABeABYAAAAAAAAAAABeABcAAAAAAAAAAAA0AA8AAAAAAAAAAAA0ABAAAAAAAAAAAAA0ABEAAAAAAAAAAAA0ABIAAAAAAAAAAAA0ABMAAAAAAAAAAAA0ABQAAAAAAAAAAAA0ABUAAAAAAAAAAAA0ABYAAAAAAAAAAAA1AA8AAAAAAAAAAAA1ABAAAAAAAAAAAAA1ABEAAAAAAAAAAAA1ABIAAAAAAAAAAAA1ABMAAAAAAAAAAAA1ABQAAAAAAAAAAAA1ABUAAAAAAAAAAAA1ABYAAAAAAAAAAAA2AA8AAAAAAAAAAAA2ABAAAAAAAAAAAAA2ABEAAAAAAAAAAAA2ABIAAAAAAAAAAAA2ABMAAAAAAAAAAAA2ABQAAAAAAAAAAAA2ABUAAAAAAAAAAAA2ABYAAAAAAAAAAAA3AA8AAAAAAAAAAAA3ABAAAAAAAAAAAAA3ABEAAAAAAAAAAAA3ABIAAAAAAAAAAAA3ABMAAAAAAAAAAAA3ABQAAAAAAAAAAAA3ABUAAAAAAAAAAAA3ABYAAAAAAAAAAAA4AA8AAAAAAAAAAAA4ABAAAAAAAAAAAAA4ABEAAAAAAAAAAAA4ABIAAAAAAAAAAAA4ABMAAAAAAAAAAAA4ABQAAAAAAAAAAAA4ABUAAAAAAAAAAAA4ABYAAAAAAAAAAAA5AA8AAAAAAAAAAAA5ABAAAAAAAAAAAAA5ABEAAAAAAAAAAAA5ABIAAAAAAAAAAAA5ABMAAAAAAAAAAAA5ABQAAAAAAAAAAAA5ABUAAAAAAAAAAAA5ABYAAAAAAAAAAAA6AA8AAAAAAAAAAAA6ABAAAAAAAAAAAAA6ABEAAAAAAAAAAAA6ABIAAAAAAAAAAAA6ABMAAAAAAAAAAAA6ABQAAAAAAAAAAAA6ABUAAAAAAAAAAAA6ABYAAAAAAAAAAAA7AA8AAAAAAAAAAAA7ABAAAAAAAAAAAAA7ABEAAAAAAAAAAAA7ABIAAAAAAAAAAAA7ABMAAAAAAAAAAAA7ABQAAAAAAAAAAAA7ABUAAAAAAAAAAAA7ABYAAAAAAAAAAAA8AA8AAAAAAAAAAAA8ABAAAAAAAAAAAAA8ABEAAAAAAAAAAAA8ABIAAAAAAAAAAAA8ABMAAAAAAAAAAAA8ABQAAAAAAAAAAAA8ABUAAAAAAAAAAAA8ABYAAAAAAAAAAAA9AA8AAAAAAAAAAAA9ABAAAAAAAAAAAAA9ABEAAAAAAAAAAAA9ABIAAAAAAAAAAAA9ABMAAAAAAAAAAAA9ABQAAAAAAAAAAAA9ABUAAAAAAAAAAAA9ABYAAAAAAAAAAAA+AA8AAAAAAAAAAAA+ABAAAAAAAAAAAAA+ABEAAAAAAAAAAAA+ABIAAAAAAAAAAAA+ABMAAAAAAAAAAAA+ABQAAAAAAAAAAAA+ABUAAAAAAAAAAAA+ABYAAAAAAAAAAAA/AA8AAAAAAAAAAAA/ABAAAAAAAAAAAAA/ABEAAAAAAAAAAAA/ABIAAAAAAAAAAAA/ABMAAAAAAAAAAAA/ABQAAAAAAAAAAAA/ABUAAAAAAAAAAAA/ABYAAAAAAAAAAABAAA8AAAAAAAAAAABAABAAAAAAAAAAAABAABEAAAAAAAAAAABAABIAAAAAAAAAAABAABMAAAAAAAAAAABAABQAAAAAAAAAAABAABUAAAAAAAAAAABAABYAAAAAAAAAAABBAA8AAAAAAAAAAABBABAAAAAAAAAAAABBABEAAAAAAAAAAABBABIAAAAAAAAAAABBABMAAAAAAAAAAABBABQAAAAAAAAAAABBABUAAAAAAAAAAABBABYAAAAAAAAAAAA0AAkAAAABAAAAAAA0AAoAAAABAAAAAAA0AAsAAAABAAAAAAA0AAwAAAABAAAAAAA0AA0AAAABAAAAAAA0AA4AAAABAAAAAAA1AA4AAAABAAAAAAA2AA4AAAABAAAAAAA3AA4AAAABAAAAAAA4AA4AAAABAAAAAABJAAUAAAABAAAAAABJAAYAAAABAAAAAABJAAcAAAABAAAAAABJAAgAAAABAAAAAABJAAkAAAABAAAAAABJAAoAAAABAAAAAABJAAsAAAABAAAAAABJAAwAAAABAAAAAABJAA0AAAABAAAAAABMAAkAAAABAAAAAAA=") +script = ExtResource("1_j2xwq") [node name="PlayerController" parent="." node_paths=PackedStringArray("auto_controlled_avatar") instance=ExtResource("2_j2xwq")] auto_controlled_avatar = NodePath("../Avatar") @@ -17,11 +40,54 @@ auto_controlled_avatar = NodePath("../Avatar") position = Vector2(349, -271) collision_mask = 4 -[node name="Coin" parent="." instance=ExtResource("4_j2xwq")] -position = Vector2(479, -182) +[node name="ReedScene" type="Node2D" parent="."] +script = ExtResource("5_skiqd") +metadata/_custom_type_script = "uid://5e157vdk6175" -[node name="Coin2" parent="." instance=ExtResource("4_j2xwq")] -position = Vector2(585, -184) +[node name="[Invalid!]" type="Node" parent="ReedScene"] +script = ExtResource("6_1l6xv") -[node name="Coin3" parent="." instance=ExtResource("4_j2xwq")] -position = Vector2(695, -185) +[node name="SceneManager" type="Node" parent="ReedScene"] +script = ExtResource("7_iaift") + +[node name="ActManager" type="Node" parent="ReedScene"] +script = ExtResource("8_nuiql") + +[node name="Props" type="Node2D" parent="ReedScene"] +script = ExtResource("9_6aweh") + +[node name="CameraAnchor" parent="ReedScene/Props" instance=ExtResource("10_6aweh")] + +[node name="[Prop_0000]" type="Node" parent="ReedScene/Props/CameraAnchor"] +script = ExtResource("11_knjgm") +prop_id = 0 + +[node name="States" type="Node" parent="ReedScene/Props/CameraAnchor/[Prop_0000]"] +script = ExtResource("12_7onhb") + +[node name="[ID_0] Disable" type="Node" parent="ReedScene/Props/CameraAnchor/[Prop_0000]/States"] +script = ExtResource("13_28rt5") +state_id = 0 +effects = Array[ExtResource("13_knjgm")]([SubResource("Resource_7onhb")]) + +[node name="[ID_1] Enable" type="Node" parent="ReedScene/Props/CameraAnchor/[Prop_0000]/States"] +script = ExtResource("13_28rt5") +state_id = 1 +effects = Array[ExtResource("13_knjgm")]([SubResource("Resource_knjgm")]) + +[node name="PlayerTriggerVolumn" parent="ReedScene/Props" instance=ExtResource("13_6aweh")] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="ReedScene/Props/PlayerTriggerVolumn"] +shape = SubResource("RectangleShape2D_knjgm") +debug_color = Color(0.70308036, 0.46053094, 0.46591634, 0.41960785) + +[node name="[Prop_0001]" type="Node" parent="ReedScene/Props/PlayerTriggerVolumn"] +script = ExtResource("11_knjgm") +prop_id = 1 + +[node name="States" type="Node" parent="ReedScene/Props/PlayerTriggerVolumn/[Prop_0001]"] +script = ExtResource("12_7onhb") + +[node name="[ID_0] Default" type="Node" parent="ReedScene/Props/PlayerTriggerVolumn/[Prop_0001]/States"] +script = ExtResource("13_28rt5") +state_id = 0 diff --git a/_game/LevelDemonstration.tscn2147330171.tmp b/_game/LevelDemonstration.tscn2147330171.tmp new file mode 100644 index 0000000..44de47d --- /dev/null +++ b/_game/LevelDemonstration.tscn2147330171.tmp @@ -0,0 +1,47 @@ +[gd_scene load_steps=12 format=3 uid="uid://bj2318o3y68x2"] + +[ext_resource type="Script" uid="uid://ds6jy3s0hhmwt" path="res://_game/DemoScript.gd" id="1_2tycc"] +[ext_resource type="PackedScene" uid="uid://cvqehvdjpoar4" path="res://_player/player_controller.tscn" id="2_gslp7"] +[ext_resource type="PackedScene" uid="uid://gwhff4qaouxy" path="res://_player/Avatar.tscn" id="3_6jw57"] +[ext_resource type="PackedScene" uid="uid://bt55vmoc83l6g" path="res://_game/scenes/l_1_s_1.tscn" id="4_6jw57"] +[ext_resource type="PackedScene" uid="uid://c6and5mqr3wv1" path="res://_game/scenes/l_1_s_2.tscn" id="5_2t6pm"] +[ext_resource type="PackedScene" uid="uid://0sivr6aig7gm" path="res://_game/scenes/l_1_s_3.tscn" id="6_xkd7q"] +[ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="6_xotud"] +[ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="7_2tycc"] +[ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="8_3ihdv"] +[ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="9_hc6q0"] +[ext_resource type="Script" uid="uid://pxjf5vst08eo" path="res://addons/reedscene/prop/PropManager.gd" id="10_mwuv1"] + +[node name="Game" type="Node2D"] +script = ExtResource("1_2tycc") + +[node name="PlayerController" parent="." node_paths=PackedStringArray("auto_controlled_avatar") instance=ExtResource("2_gslp7")] +auto_controlled_avatar = NodePath("../Avatar") + +[node name="Avatar" parent="." instance=ExtResource("3_6jw57")] +position = Vector2(283, 253) +collision_mask = 4 + +[node name="l1_s1" parent="." instance=ExtResource("4_6jw57")] + +[node name="l1_s2" parent="." instance=ExtResource("5_2t6pm")] +debug_log = true + +[node name="l1_s3" parent="." instance=ExtResource("6_xkd7q")] +debug_log = true + +[node name="ReedScene" type="Node2D" parent="."] +script = ExtResource("6_xotud") +metadata/_custom_type_script = "uid://5e157vdk6175" + +[node name="[Invalid!]" type="Node" parent="ReedScene"] +script = ExtResource("7_2tycc") + +[node name="SceneManager" type="Node" parent="ReedScene"] +script = ExtResource("8_3ihdv") + +[node name="ActManager" type="Node" parent="ReedScene"] +script = ExtResource("9_hc6q0") + +[node name="Props" type="Node2D" parent="ReedScene"] +script = ExtResource("10_mwuv1") diff --git a/_game/LevelDemonstration.tscn2149039156.tmp b/_game/LevelDemonstration.tscn2149039156.tmp new file mode 100644 index 0000000..44de47d --- /dev/null +++ b/_game/LevelDemonstration.tscn2149039156.tmp @@ -0,0 +1,47 @@ +[gd_scene load_steps=12 format=3 uid="uid://bj2318o3y68x2"] + +[ext_resource type="Script" uid="uid://ds6jy3s0hhmwt" path="res://_game/DemoScript.gd" id="1_2tycc"] +[ext_resource type="PackedScene" uid="uid://cvqehvdjpoar4" path="res://_player/player_controller.tscn" id="2_gslp7"] +[ext_resource type="PackedScene" uid="uid://gwhff4qaouxy" path="res://_player/Avatar.tscn" id="3_6jw57"] +[ext_resource type="PackedScene" uid="uid://bt55vmoc83l6g" path="res://_game/scenes/l_1_s_1.tscn" id="4_6jw57"] +[ext_resource type="PackedScene" uid="uid://c6and5mqr3wv1" path="res://_game/scenes/l_1_s_2.tscn" id="5_2t6pm"] +[ext_resource type="PackedScene" uid="uid://0sivr6aig7gm" path="res://_game/scenes/l_1_s_3.tscn" id="6_xkd7q"] +[ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="6_xotud"] +[ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="7_2tycc"] +[ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="8_3ihdv"] +[ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="9_hc6q0"] +[ext_resource type="Script" uid="uid://pxjf5vst08eo" path="res://addons/reedscene/prop/PropManager.gd" id="10_mwuv1"] + +[node name="Game" type="Node2D"] +script = ExtResource("1_2tycc") + +[node name="PlayerController" parent="." node_paths=PackedStringArray("auto_controlled_avatar") instance=ExtResource("2_gslp7")] +auto_controlled_avatar = NodePath("../Avatar") + +[node name="Avatar" parent="." instance=ExtResource("3_6jw57")] +position = Vector2(283, 253) +collision_mask = 4 + +[node name="l1_s1" parent="." instance=ExtResource("4_6jw57")] + +[node name="l1_s2" parent="." instance=ExtResource("5_2t6pm")] +debug_log = true + +[node name="l1_s3" parent="." instance=ExtResource("6_xkd7q")] +debug_log = true + +[node name="ReedScene" type="Node2D" parent="."] +script = ExtResource("6_xotud") +metadata/_custom_type_script = "uid://5e157vdk6175" + +[node name="[Invalid!]" type="Node" parent="ReedScene"] +script = ExtResource("7_2tycc") + +[node name="SceneManager" type="Node" parent="ReedScene"] +script = ExtResource("8_3ihdv") + +[node name="ActManager" type="Node" parent="ReedScene"] +script = ExtResource("9_hc6q0") + +[node name="Props" type="Node2D" parent="ReedScene"] +script = ExtResource("10_mwuv1") diff --git a/_game/LevelDemonstration.tscn2152479914.tmp b/_game/LevelDemonstration.tscn2152479914.tmp new file mode 100644 index 0000000..44de47d --- /dev/null +++ b/_game/LevelDemonstration.tscn2152479914.tmp @@ -0,0 +1,47 @@ +[gd_scene load_steps=12 format=3 uid="uid://bj2318o3y68x2"] + +[ext_resource type="Script" uid="uid://ds6jy3s0hhmwt" path="res://_game/DemoScript.gd" id="1_2tycc"] +[ext_resource type="PackedScene" uid="uid://cvqehvdjpoar4" path="res://_player/player_controller.tscn" id="2_gslp7"] +[ext_resource type="PackedScene" uid="uid://gwhff4qaouxy" path="res://_player/Avatar.tscn" id="3_6jw57"] +[ext_resource type="PackedScene" uid="uid://bt55vmoc83l6g" path="res://_game/scenes/l_1_s_1.tscn" id="4_6jw57"] +[ext_resource type="PackedScene" uid="uid://c6and5mqr3wv1" path="res://_game/scenes/l_1_s_2.tscn" id="5_2t6pm"] +[ext_resource type="PackedScene" uid="uid://0sivr6aig7gm" path="res://_game/scenes/l_1_s_3.tscn" id="6_xkd7q"] +[ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="6_xotud"] +[ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="7_2tycc"] +[ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="8_3ihdv"] +[ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="9_hc6q0"] +[ext_resource type="Script" uid="uid://pxjf5vst08eo" path="res://addons/reedscene/prop/PropManager.gd" id="10_mwuv1"] + +[node name="Game" type="Node2D"] +script = ExtResource("1_2tycc") + +[node name="PlayerController" parent="." node_paths=PackedStringArray("auto_controlled_avatar") instance=ExtResource("2_gslp7")] +auto_controlled_avatar = NodePath("../Avatar") + +[node name="Avatar" parent="." instance=ExtResource("3_6jw57")] +position = Vector2(283, 253) +collision_mask = 4 + +[node name="l1_s1" parent="." instance=ExtResource("4_6jw57")] + +[node name="l1_s2" parent="." instance=ExtResource("5_2t6pm")] +debug_log = true + +[node name="l1_s3" parent="." instance=ExtResource("6_xkd7q")] +debug_log = true + +[node name="ReedScene" type="Node2D" parent="."] +script = ExtResource("6_xotud") +metadata/_custom_type_script = "uid://5e157vdk6175" + +[node name="[Invalid!]" type="Node" parent="ReedScene"] +script = ExtResource("7_2tycc") + +[node name="SceneManager" type="Node" parent="ReedScene"] +script = ExtResource("8_3ihdv") + +[node name="ActManager" type="Node" parent="ReedScene"] +script = ExtResource("9_hc6q0") + +[node name="Props" type="Node2D" parent="ReedScene"] +script = ExtResource("10_mwuv1") diff --git a/_game/LevelDemonstration.tscn2205046278.tmp b/_game/LevelDemonstration.tscn2205046278.tmp new file mode 100644 index 0000000..44de47d --- /dev/null +++ b/_game/LevelDemonstration.tscn2205046278.tmp @@ -0,0 +1,47 @@ +[gd_scene load_steps=12 format=3 uid="uid://bj2318o3y68x2"] + +[ext_resource type="Script" uid="uid://ds6jy3s0hhmwt" path="res://_game/DemoScript.gd" id="1_2tycc"] +[ext_resource type="PackedScene" uid="uid://cvqehvdjpoar4" path="res://_player/player_controller.tscn" id="2_gslp7"] +[ext_resource type="PackedScene" uid="uid://gwhff4qaouxy" path="res://_player/Avatar.tscn" id="3_6jw57"] +[ext_resource type="PackedScene" uid="uid://bt55vmoc83l6g" path="res://_game/scenes/l_1_s_1.tscn" id="4_6jw57"] +[ext_resource type="PackedScene" uid="uid://c6and5mqr3wv1" path="res://_game/scenes/l_1_s_2.tscn" id="5_2t6pm"] +[ext_resource type="PackedScene" uid="uid://0sivr6aig7gm" path="res://_game/scenes/l_1_s_3.tscn" id="6_xkd7q"] +[ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="6_xotud"] +[ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="7_2tycc"] +[ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="8_3ihdv"] +[ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="9_hc6q0"] +[ext_resource type="Script" uid="uid://pxjf5vst08eo" path="res://addons/reedscene/prop/PropManager.gd" id="10_mwuv1"] + +[node name="Game" type="Node2D"] +script = ExtResource("1_2tycc") + +[node name="PlayerController" parent="." node_paths=PackedStringArray("auto_controlled_avatar") instance=ExtResource("2_gslp7")] +auto_controlled_avatar = NodePath("../Avatar") + +[node name="Avatar" parent="." instance=ExtResource("3_6jw57")] +position = Vector2(283, 253) +collision_mask = 4 + +[node name="l1_s1" parent="." instance=ExtResource("4_6jw57")] + +[node name="l1_s2" parent="." instance=ExtResource("5_2t6pm")] +debug_log = true + +[node name="l1_s3" parent="." instance=ExtResource("6_xkd7q")] +debug_log = true + +[node name="ReedScene" type="Node2D" parent="."] +script = ExtResource("6_xotud") +metadata/_custom_type_script = "uid://5e157vdk6175" + +[node name="[Invalid!]" type="Node" parent="ReedScene"] +script = ExtResource("7_2tycc") + +[node name="SceneManager" type="Node" parent="ReedScene"] +script = ExtResource("8_3ihdv") + +[node name="ActManager" type="Node" parent="ReedScene"] +script = ExtResource("9_hc6q0") + +[node name="Props" type="Node2D" parent="ReedScene"] +script = ExtResource("10_mwuv1") diff --git a/_game/LevelDemonstration.tscn2228195157.tmp b/_game/LevelDemonstration.tscn2228195157.tmp new file mode 100644 index 0000000..44de47d --- /dev/null +++ b/_game/LevelDemonstration.tscn2228195157.tmp @@ -0,0 +1,47 @@ +[gd_scene load_steps=12 format=3 uid="uid://bj2318o3y68x2"] + +[ext_resource type="Script" uid="uid://ds6jy3s0hhmwt" path="res://_game/DemoScript.gd" id="1_2tycc"] +[ext_resource type="PackedScene" uid="uid://cvqehvdjpoar4" path="res://_player/player_controller.tscn" id="2_gslp7"] +[ext_resource type="PackedScene" uid="uid://gwhff4qaouxy" path="res://_player/Avatar.tscn" id="3_6jw57"] +[ext_resource type="PackedScene" uid="uid://bt55vmoc83l6g" path="res://_game/scenes/l_1_s_1.tscn" id="4_6jw57"] +[ext_resource type="PackedScene" uid="uid://c6and5mqr3wv1" path="res://_game/scenes/l_1_s_2.tscn" id="5_2t6pm"] +[ext_resource type="PackedScene" uid="uid://0sivr6aig7gm" path="res://_game/scenes/l_1_s_3.tscn" id="6_xkd7q"] +[ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="6_xotud"] +[ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="7_2tycc"] +[ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="8_3ihdv"] +[ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="9_hc6q0"] +[ext_resource type="Script" uid="uid://pxjf5vst08eo" path="res://addons/reedscene/prop/PropManager.gd" id="10_mwuv1"] + +[node name="Game" type="Node2D"] +script = ExtResource("1_2tycc") + +[node name="PlayerController" parent="." node_paths=PackedStringArray("auto_controlled_avatar") instance=ExtResource("2_gslp7")] +auto_controlled_avatar = NodePath("../Avatar") + +[node name="Avatar" parent="." instance=ExtResource("3_6jw57")] +position = Vector2(283, 253) +collision_mask = 4 + +[node name="l1_s1" parent="." instance=ExtResource("4_6jw57")] + +[node name="l1_s2" parent="." instance=ExtResource("5_2t6pm")] +debug_log = true + +[node name="l1_s3" parent="." instance=ExtResource("6_xkd7q")] +debug_log = true + +[node name="ReedScene" type="Node2D" parent="."] +script = ExtResource("6_xotud") +metadata/_custom_type_script = "uid://5e157vdk6175" + +[node name="[Invalid!]" type="Node" parent="ReedScene"] +script = ExtResource("7_2tycc") + +[node name="SceneManager" type="Node" parent="ReedScene"] +script = ExtResource("8_3ihdv") + +[node name="ActManager" type="Node" parent="ReedScene"] +script = ExtResource("9_hc6q0") + +[node name="Props" type="Node2D" parent="ReedScene"] +script = ExtResource("10_mwuv1") diff --git a/_game/game.gd b/_game/game.gd new file mode 100644 index 0000000..6f8858d --- /dev/null +++ b/_game/game.gd @@ -0,0 +1,4 @@ +extends Node2D + +func _ready() -> void: + CameraSystem.register_player_camera(self) diff --git a/_game/game.gd.uid b/_game/game.gd.uid new file mode 100644 index 0000000..27f389c --- /dev/null +++ b/_game/game.gd.uid @@ -0,0 +1 @@ +uid://crgac4manhoud diff --git a/_player/Avatar.tscn b/_player/Avatar.tscn index 62e075a..e5d0bcd 100644 --- a/_player/Avatar.tscn +++ b/_player/Avatar.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=41 format=3 uid="uid://gwhff4qaouxy"] +[gd_scene load_steps=43 format=3 uid="uid://gwhff4qaouxy"] [ext_resource type="Script" uid="uid://dq1g1qp66chwy" path="res://_player/avatar.gd" id="1_rkqpu"] [ext_resource type="Script" uid="uid://isu8onknb75o" path="res://_player/states/character_state_machine.gd" id="1_wvs5h"] @@ -33,8 +33,10 @@ [ext_resource type="Resource" uid="uid://do0bnwse614jw" path="res://_player/effect_binding/land_dust.tres" id="26_s5egm"] [ext_resource type="Script" uid="uid://bijoqygv6tncj" path="res://addons/reedcomponent/SingleComponentRemotor.gd" id="28_mxt3b"] [ext_resource type="Resource" uid="uid://bdad4yjv1q0uu" path="res://_player/effect_binding/jump_dust.tres" id="30_hquoe"] +[ext_resource type="Script" uid="uid://bhd4nuiu23e7l" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_noise_emitter_2d.gd" id="32_ciuu3"] [ext_resource type="Script" uid="uid://bhexx6mj1xv3q" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_2d.gd" id="32_u7cua"] [ext_resource type="Script" uid="uid://bueehfgv5vnc0" path="res://_player/extra/camera_priority_locker.gd" id="34_1a1t3"] +[ext_resource type="Resource" uid="uid://dy1hsviasxfu0" path="res://_shared/camera/camera_shake/base_noise.tres" id="34_01uoa"] [sub_resource type="CircleShape2D" id="CircleShape2D_1a1t3"] radius = 3.0 @@ -195,11 +197,20 @@ script = ExtResource("24_mwlgv") bindings = Array[ExtResource("25_s5egm")]([ExtResource("26_s5egm"), ExtResource("30_hquoe")]) metadata/_custom_type_script = "uid://ta2r2bc1nrwe" +[node name="PhantomCameraNoiseEmitter2D" type="Node2D" parent="."] +unique_name_in_owner = true +script = ExtResource("32_ciuu3") +noise = ExtResource("34_01uoa") +duration = 0.2 +noise_emitter_layer = 0 +metadata/_custom_type_script = "uid://bhd4nuiu23e7l" + [node name="PhantomCamera2D" type="Node2D" parent="."] position = Vector2(50, -75) script = ExtResource("32_u7cua") tween_resource = SubResource("Resource_1a1t3") draw_limits = true +noise = ExtResource("34_01uoa") metadata/_custom_type_script = "uid://bhexx6mj1xv3q" [node name="Locker" type="Node" parent="PhantomCamera2D" node_paths=PackedStringArray("target_camera")] diff --git a/_player/avatar.gd b/_player/avatar.gd index c630ca4..b5198ac 100644 --- a/_player/avatar.gd +++ b/_player/avatar.gd @@ -9,6 +9,9 @@ class_name Player extends CharacterBody2D @onready var foot_pos_marker: Marker2D = %FootPosMarker @onready var ground_companion: Area2D = %GroundCompanion +@onready var phantom_camera_noise_emitter_2d: PhantomCameraNoiseEmitter2D = %PhantomCameraNoiseEmitter2D + + enum Direction{LEFT,RIGHT} var direction: Direction = Direction.RIGHT: set = _player_direction_changed @@ -58,7 +61,6 @@ func _draw() -> void: func _process(delta: float) -> void: queue_redraw() - print(self.is_on_floor()) func set_move_input(dir: Vector2) -> void: diff --git a/_player/states/grapping.gd b/_player/states/grapping.gd index ea6a310..a4425cb 100644 --- a/_player/states/grapping.gd +++ b/_player/states/grapping.gd @@ -24,6 +24,8 @@ func _enter() -> void: tween.tween_interval(.12) tween.tween_property(Engine, "time_scale", 1.0, .06) + agent.phantom_camera_noise_emitter_2d.emit() + if root.grap_hook_state._jump_grace_timer > 0: _hook_to_jump() diff --git a/_shared/CameraAnchor.gd b/_shared/CameraAnchor.gd new file mode 100644 index 0000000..72fe33f --- /dev/null +++ b/_shared/CameraAnchor.gd @@ -0,0 +1,19 @@ +@tool +class_name CameraAnchor extends Node2D + +@export var priority: int = 0 +@export var enabled: bool = true +@export var blend_time: float = 0.3 + +@export var zoom: Vector2 = Vector2.ONE +@export var offset: Vector2 = Vector2.ZERO + +func _enter_tree() -> void: + if Engine.is_editor_hint(): + return + CameraSystem.register_anchor(self) + +func _exit_tree() -> void: + if Engine.is_editor_hint(): + return + CameraSystem.unregister_anchor(self) diff --git a/_shared/CameraAnchor.gd.uid b/_shared/CameraAnchor.gd.uid new file mode 100644 index 0000000..4180183 --- /dev/null +++ b/_shared/CameraAnchor.gd.uid @@ -0,0 +1 @@ +uid://dyxrydokgy0qs diff --git a/_shared/CameraAnchor.tscn b/_shared/CameraAnchor.tscn new file mode 100644 index 0000000..94c19c1 --- /dev/null +++ b/_shared/CameraAnchor.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://bflwr7cryd2l0"] + +[ext_resource type="Script" uid="uid://dyxrydokgy0qs" path="res://_shared/CameraAnchor.gd" id="1_dhu66"] + +[node name="CameraAnchor" type="Node2D"] +script = ExtResource("1_dhu66") diff --git a/_shared/CameraSystem.tscn b/_shared/CameraSystem.tscn deleted file mode 100644 index 5329af7..0000000 --- a/_shared/CameraSystem.tscn +++ /dev/null @@ -1,15 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://b8pv5wtbo0y20"] - -[ext_resource type="Script" uid="uid://bd046eokvcnu2" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_tvldw"] -[ext_resource type="Script" uid="uid://lpenhftmjj4o" path="res://_shared/camera_system.gd" id="1_vo3bs"] - -[node name="CameraSystem" type="Node"] -script = ExtResource("1_vo3bs") - -[node name="Camera2D" type="Camera2D" parent="."] - -[node name="PhantomCameraHost" type="Node" parent="Camera2D"] -process_priority = 300 -process_physics_priority = 300 -script = ExtResource("1_tvldw") -metadata/_custom_type_script = "uid://bd046eokvcnu2" diff --git a/_shared/camera/CameraManager.gd b/_shared/camera/CameraManager.gd new file mode 100644 index 0000000..e7cce51 --- /dev/null +++ b/_shared/camera/CameraManager.gd @@ -0,0 +1,19 @@ +extends Node + +var _cached_player_camera: GlobalCamera + +const PLAYER_CAMERA_SCENE:= preload("res://_shared/camera/PlayerStaticCamera.tscn") + +## 注册玩家相机 +func register_player_camera(owner: Node) -> GlobalCamera: + if not _cached_player_camera: + _cached_player_camera = PLAYER_CAMERA_SCENE.instantiate() as GlobalCamera + + if _cached_player_camera: + owner.add_child(_cached_player_camera) + + return _cached_player_camera + +## 外部获取玩家全局相机 +func get_cached_camera() -> GlobalCamera: + return _cached_player_camera diff --git a/_shared/camera/CameraManager.gd.uid b/_shared/camera/CameraManager.gd.uid new file mode 100644 index 0000000..cc516be --- /dev/null +++ b/_shared/camera/CameraManager.gd.uid @@ -0,0 +1 @@ +uid://04mchxkp161a diff --git a/_shared/camera/GlobalCamera.gd b/_shared/camera/GlobalCamera.gd new file mode 100644 index 0000000..6df43ad --- /dev/null +++ b/_shared/camera/GlobalCamera.gd @@ -0,0 +1,4 @@ +class_name GlobalCamera extends Node2D + +@onready var phantom_camera_2d: PhantomCamera2D = %PhantomCamera2D +@onready var phantom_camera_noise_emitter_2d: PhantomCameraNoiseEmitter2D = %PhantomCameraNoiseEmitter2D diff --git a/_shared/camera/GlobalCamera.gd.uid b/_shared/camera/GlobalCamera.gd.uid new file mode 100644 index 0000000..f131fe6 --- /dev/null +++ b/_shared/camera/GlobalCamera.gd.uid @@ -0,0 +1 @@ +uid://52tgslofxoi2 diff --git a/_shared/camera/PlayerStaticCamera.tscn b/_shared/camera/PlayerStaticCamera.tscn new file mode 100644 index 0000000..52c7675 --- /dev/null +++ b/_shared/camera/PlayerStaticCamera.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=4 format=3 uid="uid://d1w8ftfhxycfy"] + +[ext_resource type="Script" uid="uid://52tgslofxoi2" path="res://_shared/camera/GlobalCamera.gd" id="1_fixiw"] +[ext_resource type="Script" uid="uid://bhexx6mj1xv3q" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_2d.gd" id="1_llsih"] +[ext_resource type="Script" uid="uid://bhd4nuiu23e7l" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_noise_emitter_2d.gd" id="3_0bl5s"] + +[node name="PlayerStaticCamera" type="Node2D"] +script = ExtResource("1_fixiw") + +[node name="PhantomCamera2D" type="Node2D" parent="."] +unique_name_in_owner = true +script = ExtResource("1_llsih") +priority = 1000 +tween_on_load = false +draw_limits = true +metadata/_custom_type_script = "uid://bhexx6mj1xv3q" + +[node name="PhantomCameraNoiseEmitter2D" type="Node2D" parent="PhantomCamera2D"] +unique_name_in_owner = true +script = ExtResource("3_0bl5s") +metadata/_custom_type_script = "uid://bhd4nuiu23e7l" diff --git a/_shared/camera/camera_shake/CameraSystem.tscn b/_shared/camera/camera_shake/CameraSystem.tscn new file mode 100644 index 0000000..5f6b0d5 --- /dev/null +++ b/_shared/camera/camera_shake/CameraSystem.tscn @@ -0,0 +1,133 @@ +[gd_scene load_steps=3 format=3 uid="uid://b8pv5wtbo0y20"] + +[ext_resource type="Script" uid="uid://bd046eokvcnu2" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="2_s84x6"] + +[sub_resource type="GDScript" id="GDScript_3tsvq"] +script/source = "'''全局的相机管理器 + + ======= 外部调用函数 ======= + +''' +extends Node + +var _cached_player_camera: GlobalCamera +var _cached_anchors: Array[CameraAnchor] = [] +var _current_anchor: CameraAnchor +var _switch_tween: Tween + +## 玩家关卡内静态相机 +const PLAYER_CAMERA_SCENE:= preload(\"res://_shared/camera/PlayerStaticCamera.tscn\") + +## 注册玩家相机 +func register_player_camera(owner: Node) -> GlobalCamera: + if not _cached_player_camera: + _cached_player_camera = PLAYER_CAMERA_SCENE.instantiate() as GlobalCamera + + if _cached_player_camera: + owner.add_child(_cached_player_camera) + + return _cached_player_camera + +## 外部获取玩家全局相机 +func get_cached_camera() -> GlobalCamera: + return _cached_player_camera + + +## 注册一个相机锚点 +func register_anchor(anchor: CameraAnchor) -> void: + if anchor in _cached_anchors: + return + _cached_anchors.append(anchor) + _sort_anchors() + _try_auto_switch() + +## 注销一个相机锚点 +func unregister_anchor(anchor: CameraAnchor) -> void: + _cached_anchors.erase(anchor) + if _current_anchor == anchor: + _current_anchor = null + _try_auto_switch() + +## 排序已有的锚点 +func _sort_anchors() -> void: + _cached_anchors.sort_custom(func(a, b): + return a.priority > b.priority + ) + +## 尝试自切换 +func _try_auto_switch() -> void: + for a in _cached_anchors: + if a.enabled: + switch_anchor(a) + return + +## 重置所有的Camera的priority +func reset_all_camera_priority() -> void: + for a in _cached_anchors: + a.priority = 0 + +## 切换相机 +func switch_anchor(target_anchor: CameraAnchor) -> void: + if target_anchor == null: + return + if target_anchor == _current_anchor: + return + if not is_instance_valid(_cached_player_camera): + return + + # 中断旧 Tween + if _switch_tween and _switch_tween.is_running(): + _switch_tween.kill() + _switch_tween = null + + var camera := _cached_player_camera + var blend_time : float = max(target_anchor.blend_time, 0.001) + + # 创建 Tween(关键:ignore time scale) + _switch_tween = get_tree().create_tween() + _switch_tween.set_ignore_time_scale(true) + _switch_tween.set_trans(Tween.TRANS_SINE) + _switch_tween.set_ease(Tween.EASE_OUT) + + # ===== 位置 ===== + _switch_tween.tween_property( + camera, + \"global_position\", + target_anchor.global_position, + blend_time + ) + + # ===== Zoom ===== + _switch_tween.tween_property( + camera, + \"zoom\", + target_anchor.zoom, + blend_time + ) + + # ===== Offset ===== + _switch_tween.tween_property( + camera, + \"offset\", + target_anchor.offset, + blend_time + ) + + # 完成回调 + _switch_tween.finished.connect(func(): + _current_anchor = target_anchor + ) + + _current_anchor = target_anchor +" + +[node name="CameraSystem" type="Node"] +script = SubResource("GDScript_3tsvq") + +[node name="Camera2D" type="Camera2D" parent="."] + +[node name="PhantomCameraHost" type="Node" parent="Camera2D"] +process_priority = 300 +process_physics_priority = 300 +script = ExtResource("2_s84x6") +metadata/_custom_type_script = "uid://bd046eokvcnu2" diff --git a/_shared/camera/camera_shake/base_noise.tres b/_shared/camera/camera_shake/base_noise.tres new file mode 100644 index 0000000..ed2e364 --- /dev/null +++ b/_shared/camera/camera_shake/base_noise.tres @@ -0,0 +1,12 @@ +[gd_resource type="Resource" script_class="PhantomCameraNoise2D" load_steps=2 format=3 uid="uid://dy1hsviasxfu0"] + +[ext_resource type="Script" uid="uid://dimvdouy8g0sv" path="res://addons/phantom_camera/scripts/resources/phantom_camera_noise_2d.gd" id="1_oi7x7"] + +[resource] +script = ExtResource("1_oi7x7") +amplitude = 8.0 +frequency = 15.0 +randomize_noise_seed = 1 +noise_seed = 896 +positional_multiplier_y = 2.0 +metadata/_custom_type_script = "uid://dimvdouy8g0sv" diff --git a/_shared/camera_room.gd b/_shared/camera_room.gd deleted file mode 100644 index 4dc8297..0000000 --- a/_shared/camera_room.gd +++ /dev/null @@ -1,35 +0,0 @@ -class_name CameraRoom extends Node2D - -@onready var phantom_camera2d: PhantomCamera2D = $PhantomCamera2D -@onready var default_start_point: Node2D = $PlayerStartPoint - -@export var _room_id : int = -1 - -func _ready() -> void: - #room_entrance.body_entered.connect(_handle_body_enter_room) - RoomSystem.room_changed.connect(_handle_global_room_changed) - - ##绑定一个Room下面的room entrance到进入这个房间 - for r in self.get_children(): - if r is RoomEntrance: - r.body_entered.connect(_handle_body_enter_room) - r.init_room_entrance(self) - - self.get_process_delta_time() - -func _handle_body_enter_room(body: Node2D) -> void: - if RoomSystem.current_room_id == self._room_id: - return - if body != null: - RoomSystem.update_current_room_id(self._room_id) - return - -func _handle_global_room_changed(room_id: int) -> void: - if room_id == self._room_id: - _update_room_to_self() - -func reset_priority() -> void: - phantom_camera2d.priority = 0 - -func _update_room_to_self() -> void: - phantom_camera2d.priority = 99 diff --git a/_shared/camera_room.gd.uid b/_shared/camera_room.gd.uid deleted file mode 100644 index 9b01b3b..0000000 --- a/_shared/camera_room.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c7fditim2t1c1 diff --git a/_shared/camera_system.gd b/_shared/camera_system.gd deleted file mode 100644 index 8f26ddc..0000000 --- a/_shared/camera_system.gd +++ /dev/null @@ -1,11 +0,0 @@ -'''全局的相机管理器 - - ======= 外部调用函数 ======= - force_change_camera(camera : ReedCamera) 切换相机 - - func camera_room_enterd(camear : ReedCamera) Camera Room 进入时手动调用 - func camera_room_exited(camera_room : ReedCameraRoom) Camera Room 离开时手动调用 - -''' - -extends Node diff --git a/_shared/camera_system.gd.uid b/_shared/camera_system.gd.uid deleted file mode 100644 index 34e143e..0000000 --- a/_shared/camera_system.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://lpenhftmjj4o diff --git a/_shared/room.tscn b/_shared/room.tscn deleted file mode 100644 index 26f8a34..0000000 --- a/_shared/room.tscn +++ /dev/null @@ -1,21 +0,0 @@ -[gd_scene load_steps=5 format=3 uid="uid://byf5lgbkjk52y"] - -[ext_resource type="Script" uid="uid://c7fditim2t1c1" path="res://_shared/camera_room.gd" id="1_yrcw7"] -[ext_resource type="Script" uid="uid://bhexx6mj1xv3q" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_2d.gd" id="2_bdhnx"] -[ext_resource type="Script" uid="uid://8umksf8e80fw" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_p25y8"] - -[sub_resource type="Resource" id="Resource_y58mf"] -script = ExtResource("3_p25y8") - -[node name="Room" type="Node2D" groups=["ROOM"]] -script = ExtResource("1_yrcw7") -_room_id = 10001 - -[node name="PhantomCamera2D" type="Node2D" parent="."] -script = ExtResource("2_bdhnx") -zoom = Vector2(0.8, 0.8) -tween_resource = SubResource("Resource_y58mf") -tween_on_load = false -metadata/_custom_type_script = "uid://bhexx6mj1xv3q" - -[node name="PlayerStartPoint" type="Marker2D" parent="."] diff --git a/_shared/room_entrance.gd b/_shared/room_entrance.gd deleted file mode 100644 index f29b1a3..0000000 --- a/_shared/room_entrance.gd +++ /dev/null @@ -1,9 +0,0 @@ -@tool -class_name RoomEntrance extends Area2D - -@export var restart_node: Node2D - -##如果没有手动绑定Start节点,则自动绑定到Room的default -func init_room_entrance(room: CameraRoom) -> void: - if restart_node == null: - restart_node = room.default_start_point diff --git a/_shared/room_entrance.gd.uid b/_shared/room_entrance.gd.uid deleted file mode 100644 index b8c4a78..0000000 --- a/_shared/room_entrance.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://ir0fur783tru diff --git a/_shared/room_entrance.tscn b/_shared/room_entrance.tscn deleted file mode 100644 index 6eda79e..0000000 --- a/_shared/room_entrance.tscn +++ /dev/null @@ -1,6 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://d1mnkm2uv857q"] - -[ext_resource type="Script" uid="uid://ir0fur783tru" path="res://_shared/room_entrance.gd" id="1_nlirq"] - -[node name="RoomEntrance" type="Area2D"] -script = ExtResource("1_nlirq") diff --git a/_shared/room_system.gd b/_shared/room_system.gd deleted file mode 100644 index 6260c95..0000000 --- a/_shared/room_system.gd +++ /dev/null @@ -1,35 +0,0 @@ -extends Node - -var current_room_id: int = 0 - -var defalut_room_id: int = 10001 -signal room_changed(room_id: int) - -func _ready() -> void: - init_room() - -##更新房间id -func update_current_room_id(room_id: int) -> bool: - if room_id == current_room_id: - return false - - reset_all_room_camera_property() - current_room_id = room_id - room_changed.emit(room_id) - return true - -##重置所有房间的room property -func reset_all_room_camera_property() -> void: - get_tree().call_group(&"ROOM",&"reset_priority") - -##初始化相机房间 -func init_room() -> void: - for r in get_tree().get_nodes_in_group(&"ROOM"): - if r._room_id == defalut_room_id: - if r.is_node_ready(): - update_current_room_id(defalut_room_id) - break - else: - await r.ready - update_current_room_id(defalut_room_id) - break diff --git a/_shared/room_system.gd.uid b/_shared/room_system.gd.uid deleted file mode 100644 index e8575e2..0000000 --- a/_shared/room_system.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bnl485emckxmh diff --git a/project.godot b/project.godot index dc39d2a..2872b6e 100644 --- a/project.godot +++ b/project.godot @@ -18,8 +18,7 @@ config/icon="res://icon.svg" [autoload] PhantomCameraManager="*res://addons/phantom_camera/scripts/managers/phantom_camera_manager.gd" -CameraSystem="*res://_shared/CameraSystem.tscn" -RoomSystem="*res://_shared/room_system.gd" +CameraSystem="*res://_shared/camera/camera_shake/CameraSystem.tscn" GlobalEvent="*res://_shared/global_event.gd" ReedVFX="*res://addons/reedfx/vfx/ReedVFXSystem.tscn" ReedSceneRegistry="*res://addons/reedscene/scene/SceneRegistry.gd"