# Conflicts:
#	_game/game.gd
This commit is contained in:
Es 2026-01-11 20:15:02 +08:00
commit acf55ecc06
46 changed files with 342 additions and 141 deletions

View File

@ -18,7 +18,7 @@ script = ExtResource("1_yksyv")
[node name="PlayerController" parent="." instance=ExtResource("2_x2i0j")] [node name="PlayerController" parent="." instance=ExtResource("2_x2i0j")]
[node name="ReedScene" parent="." instance=ExtResource("3_4ifj7")] [node name="L0_S0" parent="." instance=ExtResource("3_4ifj7")]
[node name="L1_S1" parent="." instance=ExtResource("4_m1t3p")] [node name="L1_S1" parent="." instance=ExtResource("4_m1t3p")]

File diff suppressed because one or more lines are too long

View File

@ -1,11 +1,10 @@
[gd_scene load_steps=40 format=4 uid="uid://sursemsbf1lg"] [gd_scene load_steps=39 format=4 uid="uid://sursemsbf1lg"]
[ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="1_oyljl"] [ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="1_oyljl"]
[ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="2_ggwu1"] [ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="2_ggwu1"]
[ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="3_7btev"] [ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="3_7btev"]
[ext_resource type="Script" uid="uid://ons77en82uls" path="res://addons/reedscene/scene/SceneTrigger.gd" id="4_pkqns"] [ext_resource type="Script" uid="uid://ons77en82uls" path="res://addons/reedscene/scene/scene_trigger/base/SceneTrigger.gd" id="4_pkqns"]
[ext_resource type="Resource" uid="uid://gmaitie4ys4h" path="res://_shared/quick_scene_config/player_entered_act_1.tres" id="5_esfbf"] [ext_resource type="Resource" uid="uid://bym4pb0ellj7b" path="res://_scene/scene_trigger_resource/default_switch.tres" id="5_wiv8n"]
[ext_resource type="Resource" uid="uid://cstjpy2eh8mck" path="res://_shared/quick_scene_config/prop1_player_entered_act_1.tres" id="6_j5iwd"]
[ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="7_mu7ca"] [ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="7_mu7ca"]
[ext_resource type="Script" uid="uid://fxpk2ot6otfh" path="res://addons/reedscene/act/Act.gd" id="8_0m4o0"] [ext_resource type="Script" uid="uid://fxpk2ot6otfh" path="res://addons/reedscene/act/Act.gd" id="8_0m4o0"]
[ext_resource type="Script" uid="uid://baqgorvlumyju" path="res://addons/reedscene/act/SingleAct.gd" id="9_1oohu"] [ext_resource type="Script" uid="uid://baqgorvlumyju" path="res://addons/reedscene/act/SingleAct.gd" id="9_1oohu"]
@ -105,7 +104,7 @@ script = ExtResource("2_ggwu1")
[node name="SceneManager" type="Node" parent="."] [node name="SceneManager" type="Node" parent="."]
script = ExtResource("3_7btev") script = ExtResource("3_7btev")
quick_trigger = Array[ExtResource("4_pkqns")]([ExtResource("5_esfbf"), ExtResource("6_j5iwd")]) quick_trigger = Array[ExtResource("4_pkqns")]([ExtResource("5_wiv8n")])
[node name="ActManager" type="Node" parent="."] [node name="ActManager" type="Node" parent="."]
script = ExtResource("7_mu7ca") script = ExtResource("7_mu7ca")

View File

@ -1,13 +1,12 @@
[gd_scene load_steps=40 format=4 uid="uid://cd88ydqhdo28"] [gd_scene load_steps=39 format=4 uid="uid://cd88ydqhdo28"]
[ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="1_20208"] [ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="1_20208"]
[ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="2_wkfms"] [ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="2_wkfms"]
[ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="3_rlimy"] [ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="3_rlimy"]
[ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="4_bq6n3"] [ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="4_bq6n3"]
[ext_resource type="Script" uid="uid://ons77en82uls" path="res://addons/reedscene/scene/SceneTrigger.gd" id="4_wkfms"] [ext_resource type="Script" uid="uid://ons77en82uls" path="res://addons/reedscene/scene/scene_trigger/base/SceneTrigger.gd" id="4_wkfms"]
[ext_resource type="Resource" uid="uid://gmaitie4ys4h" path="res://_shared/quick_scene_config/player_entered_act_1.tres" id="5_rlimy"] [ext_resource type="Resource" uid="uid://bym4pb0ellj7b" path="res://_scene/scene_trigger_resource/default_switch.tres" id="5_r0e2c"]
[ext_resource type="Script" uid="uid://fxpk2ot6otfh" path="res://addons/reedscene/act/Act.gd" id="5_ubvm0"] [ext_resource type="Script" uid="uid://fxpk2ot6otfh" path="res://addons/reedscene/act/Act.gd" id="5_ubvm0"]
[ext_resource type="Resource" uid="uid://cstjpy2eh8mck" path="res://_shared/quick_scene_config/prop1_player_entered_act_1.tres" id="6_bq6n3"]
[ext_resource type="Script" uid="uid://baqgorvlumyju" path="res://addons/reedscene/act/SingleAct.gd" id="6_r0e2c"] [ext_resource type="Script" uid="uid://baqgorvlumyju" path="res://addons/reedscene/act/SingleAct.gd" id="6_r0e2c"]
[ext_resource type="Script" uid="uid://pxjf5vst08eo" path="res://addons/reedscene/prop/PropManager.gd" id="7_hd3du"] [ext_resource type="Script" uid="uid://pxjf5vst08eo" path="res://addons/reedscene/prop/PropManager.gd" id="7_hd3du"]
[ext_resource type="PackedScene" uid="uid://bflwr7cryd2l0" path="res://_shared/camera/CameraAnchor.tscn" id="8_vjpkl"] [ext_resource type="PackedScene" uid="uid://bflwr7cryd2l0" path="res://_shared/camera/CameraAnchor.tscn" id="8_vjpkl"]
@ -105,7 +104,7 @@ script = ExtResource("2_wkfms")
[node name="SceneManager" type="Node" parent="."] [node name="SceneManager" type="Node" parent="."]
script = ExtResource("3_rlimy") script = ExtResource("3_rlimy")
quick_trigger = Array[ExtResource("4_wkfms")]([ExtResource("5_rlimy"), ExtResource("6_bq6n3")]) quick_trigger = Array[ExtResource("4_wkfms")]([ExtResource("5_r0e2c")])
[node name="ActManager" type="Node" parent="."] [node name="ActManager" type="Node" parent="."]
script = ExtResource("4_bq6n3") script = ExtResource("4_bq6n3")

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -4,10 +4,10 @@
[ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="2_huisa"] [ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="2_huisa"]
[ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="3_6bhoi"] [ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="3_6bhoi"]
[ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="4_dnt6f"] [ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="4_dnt6f"]
[ext_resource type="Script" uid="uid://ons77en82uls" path="res://addons/reedscene/scene/SceneTrigger.gd" id="4_sv1n5"] [ext_resource type="Script" uid="uid://ons77en82uls" path="res://addons/reedscene/scene/scene_trigger/base/SceneTrigger.gd" id="4_sv1n5"]
[ext_resource type="Script" uid="uid://fxpk2ot6otfh" path="res://addons/reedscene/act/Act.gd" id="5_dnt6f"] [ext_resource type="Script" uid="uid://fxpk2ot6otfh" path="res://addons/reedscene/act/Act.gd" id="5_dnt6f"]
[ext_resource type="Script" uid="uid://pxjf5vst08eo" path="res://addons/reedscene/prop/PropManager.gd" id="5_qtvqv"] [ext_resource type="Script" uid="uid://pxjf5vst08eo" path="res://addons/reedscene/prop/PropManager.gd" id="5_qtvqv"]
[ext_resource type="Resource" uid="uid://gmaitie4ys4h" path="res://_shared/quick_scene_config/player_entered_act_1.tres" id="5_sv1n5"] [ext_resource type="Resource" uid="uid://bym4pb0ellj7b" path="res://_scene/scene_trigger_resource/default_switch.tres" id="5_x87uk"]
[ext_resource type="Script" uid="uid://baqgorvlumyju" path="res://addons/reedscene/act/SingleAct.gd" id="6_qtvqv"] [ext_resource type="Script" uid="uid://baqgorvlumyju" path="res://addons/reedscene/act/SingleAct.gd" id="6_qtvqv"]
[ext_resource type="PackedScene" uid="uid://bflwr7cryd2l0" path="res://_shared/camera/CameraAnchor.tscn" id="8_6bhoi"] [ext_resource type="PackedScene" uid="uid://bflwr7cryd2l0" path="res://_shared/camera/CameraAnchor.tscn" id="8_6bhoi"]
[ext_resource type="TileSet" uid="uid://doepkfp83k0lb" path="res://_tileset/test.tres" id="8_wofhb"] [ext_resource type="TileSet" uid="uid://doepkfp83k0lb" path="res://_tileset/test.tres" id="8_wofhb"]
@ -124,7 +124,7 @@ script = ExtResource("2_huisa")
[node name="SceneManager" type="Node" parent="."] [node name="SceneManager" type="Node" parent="."]
script = ExtResource("3_6bhoi") script = ExtResource("3_6bhoi")
quick_trigger = Array[ExtResource("4_sv1n5")]([ExtResource("5_sv1n5")]) quick_trigger = Array[ExtResource("4_sv1n5")]([ExtResource("5_x87uk")])
[node name="ActManager" type="Node" parent="."] [node name="ActManager" type="Node" parent="."]
script = ExtResource("4_dnt6f") script = ExtResource("4_dnt6f")

View File

@ -3,8 +3,8 @@
[ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="1_fvnde"] [ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="1_fvnde"]
[ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="2_tts1w"] [ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="2_tts1w"]
[ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="3_dascw"] [ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="3_dascw"]
[ext_resource type="Script" uid="uid://ons77en82uls" path="res://addons/reedscene/scene/SceneTrigger.gd" id="4_pfh14"] [ext_resource type="Script" uid="uid://ons77en82uls" path="res://addons/reedscene/scene/scene_trigger/base/SceneTrigger.gd" id="4_pfh14"]
[ext_resource type="Resource" uid="uid://gmaitie4ys4h" path="res://_shared/quick_scene_config/player_entered_act_1.tres" id="5_dalgl"] [ext_resource type="Resource" uid="uid://bym4pb0ellj7b" path="res://_scene/scene_trigger_resource/default_switch.tres" id="5_c6mvs"]
[ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="6_ymq84"] [ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="6_ymq84"]
[ext_resource type="Script" uid="uid://fxpk2ot6otfh" path="res://addons/reedscene/act/Act.gd" id="7_c6mvs"] [ext_resource type="Script" uid="uid://fxpk2ot6otfh" path="res://addons/reedscene/act/Act.gd" id="7_c6mvs"]
[ext_resource type="Script" uid="uid://baqgorvlumyju" path="res://addons/reedscene/act/SingleAct.gd" id="8_ug4by"] [ext_resource type="Script" uid="uid://baqgorvlumyju" path="res://addons/reedscene/act/SingleAct.gd" id="8_ug4by"]
@ -124,7 +124,7 @@ script = ExtResource("2_tts1w")
[node name="SceneManager" type="Node" parent="."] [node name="SceneManager" type="Node" parent="."]
script = ExtResource("3_dascw") script = ExtResource("3_dascw")
quick_trigger = Array[ExtResource("4_pfh14")]([ExtResource("5_dalgl")]) quick_trigger = Array[ExtResource("4_pfh14")]([ExtResource("5_c6mvs")])
[node name="ActManager" type="Node" parent="."] [node name="ActManager" type="Node" parent="."]
script = ExtResource("6_ymq84") script = ExtResource("6_ymq84")

View File

@ -3,8 +3,8 @@
[ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="1_a2nbh"] [ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="1_a2nbh"]
[ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="2_txt12"] [ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="2_txt12"]
[ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="3_1w7i6"] [ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="3_1w7i6"]
[ext_resource type="Script" uid="uid://ons77en82uls" path="res://addons/reedscene/scene/SceneTrigger.gd" id="4_gnhi3"] [ext_resource type="Script" uid="uid://ons77en82uls" path="res://addons/reedscene/scene/scene_trigger/base/SceneTrigger.gd" id="4_gnhi3"]
[ext_resource type="Resource" uid="uid://gmaitie4ys4h" path="res://_shared/quick_scene_config/player_entered_act_1.tres" id="5_qcumk"] [ext_resource type="Resource" uid="uid://bym4pb0ellj7b" path="res://_scene/scene_trigger_resource/default_switch.tres" id="5_gnhi3"]
[ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="6_nokqb"] [ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="6_nokqb"]
[ext_resource type="Script" uid="uid://fxpk2ot6otfh" path="res://addons/reedscene/act/Act.gd" id="7_u3uxu"] [ext_resource type="Script" uid="uid://fxpk2ot6otfh" path="res://addons/reedscene/act/Act.gd" id="7_u3uxu"]
[ext_resource type="Script" uid="uid://baqgorvlumyju" path="res://addons/reedscene/act/SingleAct.gd" id="8_n5ng2"] [ext_resource type="Script" uid="uid://baqgorvlumyju" path="res://addons/reedscene/act/SingleAct.gd" id="8_n5ng2"]
@ -124,7 +124,7 @@ script = ExtResource("2_txt12")
[node name="SceneManager" type="Node" parent="."] [node name="SceneManager" type="Node" parent="."]
script = ExtResource("3_1w7i6") script = ExtResource("3_1w7i6")
quick_trigger = Array[ExtResource("4_gnhi3")]([ExtResource("5_qcumk")]) quick_trigger = Array[ExtResource("4_gnhi3")]([ExtResource("5_gnhi3")])
[node name="ActManager" type="Node" parent="."] [node name="ActManager" type="Node" parent="."]
script = ExtResource("6_nokqb") script = ExtResource("6_nokqb")

View File

@ -3,8 +3,8 @@
[ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="1_a2nbh"] [ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="1_a2nbh"]
[ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="2_txt12"] [ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="2_txt12"]
[ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="3_1w7i6"] [ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="3_1w7i6"]
[ext_resource type="Script" uid="uid://ons77en82uls" path="res://addons/reedscene/scene/SceneTrigger.gd" id="4_gnhi3"] [ext_resource type="Script" uid="uid://ons77en82uls" path="res://addons/reedscene/scene/scene_trigger/base/SceneTrigger.gd" id="4_gnhi3"]
[ext_resource type="Resource" uid="uid://gmaitie4ys4h" path="res://_shared/quick_scene_config/player_entered_act_1.tres" id="5_qcumk"] [ext_resource type="Resource" uid="uid://bym4pb0ellj7b" path="res://_scene/scene_trigger_resource/default_switch.tres" id="5_mxp7a"]
[ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="6_nokqb"] [ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="6_nokqb"]
[ext_resource type="Script" uid="uid://fxpk2ot6otfh" path="res://addons/reedscene/act/Act.gd" id="7_u3uxu"] [ext_resource type="Script" uid="uid://fxpk2ot6otfh" path="res://addons/reedscene/act/Act.gd" id="7_u3uxu"]
[ext_resource type="Script" uid="uid://baqgorvlumyju" path="res://addons/reedscene/act/SingleAct.gd" id="8_n5ng2"] [ext_resource type="Script" uid="uid://baqgorvlumyju" path="res://addons/reedscene/act/SingleAct.gd" id="8_n5ng2"]
@ -130,7 +130,7 @@ script = ExtResource("2_txt12")
[node name="SceneManager" type="Node" parent="."] [node name="SceneManager" type="Node" parent="."]
script = ExtResource("3_1w7i6") script = ExtResource("3_1w7i6")
quick_trigger = Array[ExtResource("4_gnhi3")]([ExtResource("5_qcumk")]) quick_trigger = Array[ExtResource("4_gnhi3")]([ExtResource("5_mxp7a")])
[node name="ActManager" type="Node" parent="."] [node name="ActManager" type="Node" parent="."]
script = ExtResource("6_nokqb") script = ExtResource("6_nokqb")

View File

@ -3,8 +3,8 @@
[ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="1_h5hd7"] [ext_resource type="Script" uid="uid://5e157vdk6175" path="res://addons/reedscene/scene/ReedScene.gd" id="1_h5hd7"]
[ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="2_s1dia"] [ext_resource type="Script" uid="uid://bh066o84byplh" path="res://addons/reedscene/scene/ReedSceneID.gd" id="2_s1dia"]
[ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="3_v2x74"] [ext_resource type="Script" uid="uid://dn0ksjoswquf5" path="res://addons/reedscene/scene/SceneManager.gd" id="3_v2x74"]
[ext_resource type="Script" uid="uid://ons77en82uls" path="res://addons/reedscene/scene/SceneTrigger.gd" id="4_8ob7b"] [ext_resource type="Script" uid="uid://ons77en82uls" path="res://addons/reedscene/scene/scene_trigger/base/SceneTrigger.gd" id="4_8ob7b"]
[ext_resource type="Resource" uid="uid://gmaitie4ys4h" path="res://_shared/quick_scene_config/player_entered_act_1.tres" id="5_tstpw"] [ext_resource type="Resource" uid="uid://bym4pb0ellj7b" path="res://_scene/scene_trigger_resource/default_switch.tres" id="5_v3u1d"]
[ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="6_lwjpo"] [ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="6_lwjpo"]
[ext_resource type="Script" uid="uid://fxpk2ot6otfh" path="res://addons/reedscene/act/Act.gd" id="7_o10qt"] [ext_resource type="Script" uid="uid://fxpk2ot6otfh" path="res://addons/reedscene/act/Act.gd" id="7_o10qt"]
[ext_resource type="Script" uid="uid://baqgorvlumyju" path="res://addons/reedscene/act/SingleAct.gd" id="8_nkrpp"] [ext_resource type="Script" uid="uid://baqgorvlumyju" path="res://addons/reedscene/act/SingleAct.gd" id="8_nkrpp"]
@ -112,7 +112,7 @@ script = ExtResource("2_s1dia")
[node name="SceneManager" type="Node" parent="."] [node name="SceneManager" type="Node" parent="."]
script = ExtResource("3_v2x74") script = ExtResource("3_v2x74")
quick_trigger = Array[ExtResource("4_8ob7b")]([ExtResource("5_tstpw")]) quick_trigger = Array[ExtResource("4_8ob7b")]([ExtResource("5_v3u1d")])
[node name="ActManager" type="Node" parent="."] [node name="ActManager" type="Node" parent="."]
script = ExtResource("6_lwjpo") script = ExtResource("6_lwjpo")

View File

@ -0,0 +1,54 @@
[gd_resource type="Resource" script_class="SceneTrigger" load_steps=16 format=3 uid="uid://bym4pb0ellj7b"]
[ext_resource type="Script" uid="uid://baamspwt4rm4r" path="res://addons/reedscene/scene/guard.gd" id="1_ebfhi"]
[ext_resource type="Script" uid="uid://ons77en82uls" path="res://addons/reedscene/scene/scene_trigger/base/SceneTrigger.gd" id="2_cq8o1"]
[ext_resource type="Script" uid="uid://dxj5vimigc651" path="res://addons/reedscene/scene/scene_trigger/base/SceneTriggerEffectPair.gd" id="3_m0qh3"]
[ext_resource type="Script" uid="uid://b1bgmb71bapws" path="res://addons/reedscene/scene/scene_trigger/base/SceneTriggerEffect.gd" id="4_g7ixm"]
[ext_resource type="Script" uid="uid://bjstkg23cq6vq" path="res://addons/reedscene/scene/scene_trigger/STE_SwitchAct.gd" id="5_m44nk"]
[ext_resource type="Script" uid="uid://c8qq8400vebpg" path="res://addons/reedscene/scene/scene_trigger/STT_Self.gd" id="6_qb8kc"]
[ext_resource type="Script" uid="uid://dcn3k2vc6on0c" path="res://addons/reedscene/scene/scene_trigger/STT_Tree.gd" id="7_547il"]
[ext_resource type="Script" uid="uid://cdprpen0jyr6d" path="res://addons/reedscene/scene/scene_trigger/STR_NodePath.gd" id="8_kur88"]
[sub_resource type="Resource" id="Resource_yc616"]
script = ExtResource("5_m44nk")
func_name = &"call_group"
func_args = [&"REED_SCENE", &"reset_to_default_act"]
metadata/_custom_type_script = "uid://bjstkg23cq6vq"
[sub_resource type="Resource" id="Resource_gexol"]
script = ExtResource("7_547il")
metadata/_custom_type_script = "uid://dcn3k2vc6on0c"
[sub_resource type="Resource" id="Resource_vv5v7"]
script = ExtResource("3_m0qh3")
target = SubResource("Resource_gexol")
effect = Array[ExtResource("4_g7ixm")]([SubResource("Resource_yc616")])
metadata/_custom_type_script = "uid://dxj5vimigc651"
[sub_resource type="Resource" id="Resource_jd40h"]
script = ExtResource("5_m44nk")
func_name = &"switch_act_with_id"
func_args = [1]
metadata/_custom_type_script = "uid://bjstkg23cq6vq"
[sub_resource type="Resource" id="Resource_kdh4c"]
script = ExtResource("6_qb8kc")
metadata/_custom_type_script = "uid://c8qq8400vebpg"
[sub_resource type="Resource" id="Resource_ig5jt"]
script = ExtResource("3_m0qh3")
target = SubResource("Resource_kdh4c")
effect = Array[ExtResource("4_g7ixm")]([SubResource("Resource_jd40h")])
metadata/_custom_type_script = "uid://dxj5vimigc651"
[sub_resource type="Resource" id="Resource_8u4ru"]
script = ExtResource("8_kur88")
node_path = NodePath("../Props/PlayerTriggerVolumn")
monitor_signal = &"player_entered"
metadata/_custom_type_script = "uid://cdprpen0jyr6d"
[resource]
script = ExtResource("2_cq8o1")
trigger_register_conifg = SubResource("Resource_8u4ru")
trigger_effect_pairs = Array[ExtResource("3_m0qh3")]([SubResource("Resource_vv5v7"), SubResource("Resource_ig5jt")])
metadata/_custom_type_script = "uid://ons77en82uls"

View File

@ -1,11 +0,0 @@
[gd_resource type="Resource" script_class="NodePathSceneTrigger" load_steps=3 format=3 uid="uid://gmaitie4ys4h"]
[ext_resource type="Script" uid="uid://baamspwt4rm4r" path="res://addons/reedscene/scene/guard.gd" id="1_idvg7"]
[ext_resource type="Script" uid="uid://cvtkkcio4eeod" path="res://addons/reedscene/scene/NodePathSceneTrigger.gd" id="2_4sckh"]
[resource]
script = ExtResource("2_4sckh")
path = NodePath("../Props/PlayerTriggerVolumn")
target_act_id = 1
monitor_signal = &"player_entered"
metadata/_custom_type_script = "uid://cvtkkcio4eeod"

View File

@ -1,11 +0,0 @@
[gd_resource type="Resource" script_class="PropIDSceneTrigger" load_steps=3 format=3 uid="uid://cstjpy2eh8mck"]
[ext_resource type="Script" uid="uid://baamspwt4rm4r" path="res://addons/reedscene/scene/guard.gd" id="1_ugibh"]
[ext_resource type="Script" uid="uid://bprxx881tmhn8" path="res://addons/reedscene/scene/PropIDSceneTrigger.gd" id="2_501i5"]
[resource]
script = ExtResource("2_501i5")
prop_id = 1
target_act_id = 1
monitor_signal = &"player_entered"
metadata/_custom_type_script = "uid://bprxx881tmhn8"

View File

@ -24,6 +24,12 @@ var _gen_empty_act: Callable = Callable(self, "_editor_generate_empty_act")
var _current_act: Act = null var _current_act: Act = null
var _current_act_id: int = -1 var _current_act_id: int = -1
## 我们认为act无论在一帧里做多少次切换实际可以被应用的只有最后一次。
var _pending_act_id: int = -1
var _pending_trans_overwrite: int = 0
var _commit_scheduled: bool = false
const DEFAULT_ACT_ID:int = 0 const DEFAULT_ACT_ID:int = 0
signal act_changed(from_act_id: int, to_act_id: int) signal act_changed(from_act_id: int, to_act_id: int)
@ -31,6 +37,22 @@ signal act_changed(from_act_id: int, to_act_id: int)
func _ready() -> void: func _ready() -> void:
pass pass
## 缓存act的change
func _commit_pending_act() -> void:
_commit_scheduled = false
if _pending_act_id == -1:
return
if _pending_act_id == _current_act_id:
return
var act := prop_state_map.get(_pending_act_id)
if act == null:
return
_switch_act_internal(act, _pending_act_id, _pending_trans_overwrite)
##通过ID切换act ##通过ID切换act
## 如果trans overwrite = 0则使用act上自己配置的use trans ## 如果trans overwrite = 0则使用act上自己配置的use trans
## 如果trans overwrite = 1则全部禁用use trans ## 如果trans overwrite = 1则全部禁用use trans
@ -40,8 +62,19 @@ func switch_act_with_id(act_id: int,trans_overwrite: int = 0) -> void:
push_warning("[ActManager] Act id not found: %d" % act_id) push_warning("[ActManager] Act id not found: %d" % act_id)
return return
var act := prop_state_map[act_id] # 只记录请求,不立刻执行
_switch_act_internal(act, act_id,trans_overwrite) _pending_act_id = act_id
_pending_trans_overwrite = trans_overwrite
if not _commit_scheduled:
_commit_scheduled = true
call_deferred("_commit_pending_act")
#if not prop_state_map.has(act_id):
#push_warning("[ActManager] Act id not found: %d" % act_id)
#return
#
#var act := prop_state_map[act_id]
#_switch_act_internal(act, act_id,trans_overwrite)
##内部通过ID和Act来切换状态 ##内部通过ID和Act来切换状态
func _switch_act_internal(act: Act, act_id: int, trans_overwrite: int = 0) -> void: func _switch_act_internal(act: Act, act_id: int, trans_overwrite: int = 0) -> void:

View File

@ -0,0 +1,9 @@
class_name ETT_Global extends EffectTargetType
@export var global_node_name: StringName
func get_effect_target(owner: Node, prop_comp: Node) -> Object:
if Engine.has_singleton(global_node_name):
return Engine.get_singleton(global_node_name)
return null

View File

@ -0,0 +1 @@
uid://cuj3qsbnobfm7

View File

@ -0,0 +1,4 @@
class_name ETT_Tree extends EffectTargetType
func get_effect_target(owner: Node, prop_comp: Node) -> Object:
return owner.get_tree()

View File

@ -0,0 +1 @@
uid://xccdmxs2wqde

View File

@ -1,3 +0,0 @@
class_name NodePathSceneTrigger extends SceneTrigger
@export var path: NodePath

View File

@ -1 +0,0 @@
uid://cvtkkcio4eeod

View File

@ -1,3 +0,0 @@
class_name PropIDSceneTrigger extends SceneTrigger
@export var prop_id: int

View File

@ -1 +0,0 @@
uid://bprxx881tmhn8

View File

@ -47,6 +47,8 @@ const SCENE_MANAGER_NAME := "SceneManager"
const PROPS_ROOT_PATH: NodePath = ^"Props" const PROPS_ROOT_PATH: NodePath = ^"Props"
##PropManager脚本的路徑 ##PropManager脚本的路徑
const PROPS_MANAGER_SCRIPT: Script = preload("res://addons/reedscene/prop/PropManager.gd") const PROPS_MANAGER_SCRIPT: Script = preload("res://addons/reedscene/prop/PropManager.gd")
##所有的Scene都会在进入Tree时被添加进入这个节点。
const SCENE_GROUP: StringName = "REED_SCENE"
## ============================== ## ==============================
## Export Config ## Export Config
@ -70,6 +72,9 @@ var _scene_manager: SceneManager
## Build In ## Build In
## ============================== ## ==============================
func _enter_tree() -> void: func _enter_tree() -> void:
if not self.is_in_group(SCENE_GROUP):
self.add_to_group(SCENE_GROUP)
if Engine.is_editor_hint(): if Engine.is_editor_hint():
_editor_ensure_scene_nodes() ##进入场景树自动添加ActManager,PropsRoot,和SceneManager _editor_ensure_scene_nodes() ##进入场景树自动添加ActManager,PropsRoot,和SceneManager
_editor_ensure_scene_id_comp() ##進入場景樹則自動添加一個IDComp _editor_ensure_scene_id_comp() ##進入場景樹則自動添加一個IDComp
@ -255,10 +260,17 @@ func _editor_ensure_scene_id_comp() -> ReedSceneID:
return id_comp return id_comp
func _get_default_act_id() -> int:
return 0
## ============================== ## ==============================
## Externel API ## Externel API
## ============================== ## ==============================
##外部可以通过此函数将Scene重置回默认状态_get_default_act_id的逻辑将在未来可以和其他脚本联动并重写。
func reset_to_default_act() -> void:
self.switch_act_by_id(self._get_default_act_id())
## 外部取得Prop映射對 ## 外部取得Prop映射對
func get_prop_map() -> Dictionary: func get_prop_map() -> Dictionary:
return _prop_map return _prop_map

View File

@ -33,60 +33,95 @@ func _resolve_references() -> void:
_props = _scene._prop_map _props = _scene._prop_map
func _bind_quick_trigger() -> void: func _bind_quick_trigger() -> void:
for qt in quick_trigger: for i in quick_trigger:
if qt is PropIDSceneTrigger: var st := i as SceneTrigger
_bind_prop_id_trigger(qt) if not st:
elif qt is NodePathSceneTrigger: continue
_bind_node_path_trigger(qt)
var tr := st.trigger_register_conifg as SceneTriggerRegister
if not tr:
continue
var r := tr.get_register(self)
if not r:
continue
if not r.has_signal(tr.monitor_signal):
continue
r.connect(
tr.monitor_signal,
func(...args):
_on_trigger_fired(st, args)
)
#if qt is PropIDSceneTrigger:
#_bind_prop_id_trigger(qt)
#elif qt is NodePathSceneTrigger:
#_bind_node_path_trigger(qt)
## 通过Prop id来绑定signal ### 通过Prop id来绑定signal
func _bind_prop_id_trigger(trigger: PropIDSceneTrigger) -> void: #func _bind_prop_id_trigger(trigger: PropIDSceneTrigger) -> void:
var prop : Node = _props.get(trigger.prop_id).get_parent() #var prop : Node = _props.get(trigger.prop_id).get_parent()
if prop == null: #if prop == null:
return #return
#
var s: StringName = trigger.monitor_signal #var s: StringName = trigger.monitor_signal
if not prop.has_signal(s): #if not prop.has_signal(s):
push_error("Prop has no signal: %s" % trigger.monitor_signal) #push_error("Prop has no signal: %s" % trigger.monitor_signal)
return #return
#
prop.connect( #prop.connect(
trigger.monitor_signal, #trigger.monitor_signal,
func(...args): #func(...args):
_on_trigger_fired(trigger, args) #_on_trigger_fired(trigger, args)
) #)
#
## 通过NodePath来绑定signal ### 通过NodePath来绑定signal
func _bind_node_path_trigger(trigger: NodePathSceneTrigger) -> void: #func _bind_node_path_trigger(trigger: NodePathSceneTrigger) -> void:
if trigger.path.is_empty(): #if trigger.path.is_empty():
return #return
#
var n : Node = self.get_node_or_null(trigger.path) #var n : Node = self.get_node_or_null(trigger.path)
#
if n == null: #if n == null:
return #return
#
var s: StringName = trigger.monitor_signal #var s: StringName = trigger.monitor_signal
if not n.has_signal(s): #if not n.has_signal(s):
push_error("Prop has no signal: %s" % trigger.monitor_signal) #push_error("Prop has no signal: %s" % trigger.monitor_signal)
return #return
#
n.connect( #n.connect(
trigger.monitor_signal, #trigger.monitor_signal,
func(...args): #func(...args):
_on_trigger_fired(trigger, args) #_on_trigger_fired(trigger, args)
) #)
## 当信号触发 ## 当信号触发
func _on_trigger_fired(trigger: SceneTrigger, signal_args: Array) -> void: func _on_trigger_fired(trigger: SceneTrigger, signal_args: Array) -> void:
if not trigger.can_trigger(signal_args): if not trigger.can_trigger(signal_args):
return return
for i in trigger.trigger_effect_pairs:
var sp := i as SceneTriggerEffectPair
if not sp.target:
continue
var t := sp.target.get_effect_target(self)
if not t:
continue
var exs := sp.effect
for j in exs:
var ex := j as SceneTriggerEffect
ex.apply_effect(t)
#var target_act_id: int = trigger.target_act_id
#var trans_overwrite: int = trigger.trans_overwrite
#
#if target_act_id < 0:
#return
#
#_act_manager.switch_act_with_id(target_act_id,trans_overwrite)
var target_act_id: int = trigger.target_act_id func switch_act_with_id(id: int,trans_overwrite:int = 0) -> void:
var trans_overwrite: int = trigger.trans_overwrite _act_manager.switch_act_with_id(id,trans_overwrite)
if target_act_id < 0:
return
_act_manager.switch_act_with_id(target_act_id,trans_overwrite)

View File

@ -1,14 +0,0 @@
@abstract
class_name SceneTrigger extends Resource
@export var target_act_id: int
@export var monitor_signal: StringName
@export var guards: Array[SceneGuard]
@export var trans_overwrite: int = 0
func can_trigger(args: Array) -> bool:
for g in guards:
if not g.check(args):
return false
return true

View File

@ -0,0 +1,12 @@
class_name STE_CallFunc extends SceneTriggerEffect
##尝试Call的Func name
@export var func_name: StringName
##Call Func的可选输入
@export var func_args: Array[Variant] = []
func apply_effect(target:Object) -> bool:
if target.has_method(func_name):
target.callv(func_name,func_args)
return true
return false

View File

@ -0,0 +1 @@
uid://bjstkg23cq6vq

View File

@ -0,0 +1,6 @@
class_name STR_NodePath extends SceneTriggerRegister
@export var node_path: NodePath
func get_register(owner: Object) -> Node:
return owner.get_node_or_null(node_path)

View File

@ -0,0 +1 @@
uid://cdprpen0jyr6d

View File

@ -0,0 +1,6 @@
class_name STT_Self extends SceneTriggerTarget
func get_effect_target(owner: Node) -> Object:
if owner:
return owner
return null

View File

@ -0,0 +1 @@
uid://c8qq8400vebpg

View File

@ -0,0 +1,6 @@
class_name STT_Tree extends SceneTriggerTarget
func get_effect_target(owner: Node) -> Object:
if owner:
return owner.get_tree()
return null

View File

@ -0,0 +1 @@
uid://dcn3k2vc6on0c

View File

@ -0,0 +1,17 @@
class_name SceneTrigger extends Resource
##绑定哪个Node的哪个函数作为此Trigger的Register。
@export var trigger_register_conifg: SceneTriggerRegister
##Guard是一个保护项如果某个Trigger触发后但因为某些条件并不想被执行可以使用guard进行保护
@export var guards: Array[SceneGuard]
##当某个Trigger被激活时可以应用任意多个EffectEffect会按序执行列
@export var trigger_effect_pairs: Array[SceneTriggerEffectPair]
var _owner: Node
func can_trigger(args: Array) -> bool:
for g in guards:
if not g.check(args):
return false
return true

View File

@ -0,0 +1,18 @@
@abstract
class_name SceneTriggerEffect extends Resource
### Guard是一个保护项如果某个Trigger触发后但因为某些条件并不想被执行可以使用guard进行保护
#@export var guards: Array[SceneGuard]
## 内部检测一下是不是可以Trigger如果不可以就直接返回false
#func _can_trigger(args: Array) -> bool:
#for g in guards:
#if not g.check(args):
#return false
#
#return true
func apply_effect(target:Object) -> bool:
if not target:
return false
return true

View File

@ -0,0 +1 @@
uid://b1bgmb71bapws

View File

@ -0,0 +1,4 @@
class_name SceneTriggerEffectPair extends Resource
@export var target: SceneTriggerTarget
@export var effect: Array[SceneTriggerEffect]

View File

@ -0,0 +1 @@
uid://dxj5vimigc651

View File

@ -0,0 +1,7 @@
@abstract
class_name SceneTriggerRegister extends Resource
@export var monitor_signal: StringName
@abstract
func get_register(owner: Object) -> Node

View File

@ -0,0 +1 @@
uid://beajk81tdp8ic

View File

@ -0,0 +1,5 @@
@abstract
class_name SceneTriggerTarget extends Resource
@abstract
func get_effect_target(owner: Node) -> Object

View File

@ -0,0 +1 @@
uid://ch2sd8uqniupd

View File

@ -22,3 +22,8 @@ V1.1
- 添加和规范API - 添加和规范API
- 删除不必要的ClassName - 删除不必要的ClassName
- 完善ActManager的编辑者友好界面 - 完善ActManager的编辑者友好界面
V1.2
- 完善了更优的Scene管理器的生命周期
- 全新的PropStateEffect的配置方案
- 全新的SceneStateEffect的配置方案

View File

@ -35,6 +35,12 @@ window/stretch/mode="canvas_items"
enabled=PackedStringArray("res://addons/phantom_camera/plugin.cfg", "res://addons/reedcomponent/plugin.cfg", "res://addons/reedfx/plugin.cfg", "res://addons/reedinput/plugin.cfg", "res://addons/reedscene/plugin.cfg") enabled=PackedStringArray("res://addons/phantom_camera/plugin.cfg", "res://addons/reedcomponent/plugin.cfg", "res://addons/reedfx/plugin.cfg", "res://addons/reedinput/plugin.cfg", "res://addons/reedscene/plugin.cfg")
[file_customization]
folder_colors={
"res://_shared/": "pink"
}
[global_group] [global_group]
ROOM="房间分组其下存在所有的Room" ROOM="房间分组其下存在所有的Room"