diff --git a/_scene/level1/l1_s1.tscn b/_scene/level1/l1_s1.tscn index f0b70c7..7b7db17 100644 --- a/_scene/level1/l1_s1.tscn +++ b/_scene/level1/l1_s1.tscn @@ -1,9 +1,11 @@ -[gd_scene load_steps=26 format=4 uid="uid://cd88ydqhdo28"] +[gd_scene load_steps=28 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://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://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="Resource" uid="uid://gmaitie4ys4h" path="res://_shared/QuickTriggerConfig/player_entered_act_1.tres" id="5_rlimy"] [ext_resource type="Script" uid="uid://fxpk2ot6otfh" path="res://addons/reedscene/act/Act.gd" id="5_ubvm0"] [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"] @@ -62,6 +64,7 @@ script = ExtResource("2_wkfms") [node name="SceneManager" type="Node" parent="."] script = ExtResource("3_rlimy") +quick_trigger = Array[ExtResource("4_wkfms")]([ExtResource("5_rlimy")]) [node name="ActManager" type="Node" parent="."] script = ExtResource("4_bq6n3") diff --git a/_scene/level1/l1_s2.tscn b/_scene/level1/l1_s2.tscn index 1b51b70..355200a 100644 --- a/_scene/level1/l1_s2.tscn +++ b/_scene/level1/l1_s2.tscn @@ -6,7 +6,7 @@ [ext_resource type="Script" uid="uid://dsgl7lbyjsiif" path="res://addons/reedscene/act/ActManager.gd" id="4_10cyl"] [ext_resource type="Script" uid="uid://ons77en82uls" path="res://addons/reedscene/scene/SceneTrigger.gd" id="4_qrebp"] [ext_resource type="Script" uid="uid://fxpk2ot6otfh" path="res://addons/reedscene/act/Act.gd" id="5_0xms0"] -[ext_resource type="Resource" uid="uid://cstjpy2eh8mck" path="res://_shared/QuickTriggerConfig/prop1_player_entered_act_1.tres" id="5_10cyl"] +[ext_resource type="Resource" uid="uid://gmaitie4ys4h" path="res://_shared/QuickTriggerConfig/player_entered_act_1.tres" id="5_qrebp"] [ext_resource type="Script" uid="uid://baqgorvlumyju" path="res://addons/reedscene/act/SingleAct.gd" id="6_agny0"] [ext_resource type="Script" uid="uid://pxjf5vst08eo" path="res://addons/reedscene/prop/PropManager.gd" id="7_8ou3l"] [ext_resource type="PackedScene" uid="uid://bflwr7cryd2l0" path="res://_shared/camera/CameraAnchor.tscn" id="8_dq7pn"] @@ -63,7 +63,7 @@ script = ExtResource("2_of0lw") [node name="SceneManager" type="Node" parent="."] script = ExtResource("3_32vl4") -quick_trigger = Array[ExtResource("4_qrebp")]([ExtResource("5_10cyl")]) +quick_trigger = Array[ExtResource("4_qrebp")]([ExtResource("5_qrebp")]) [node name="ActManager" type="Node" parent="."] script = ExtResource("4_10cyl") diff --git a/_shared/QuickTriggerConfig/player_entered_act_1.tres b/_shared/QuickTriggerConfig/player_entered_act_1.tres new file mode 100644 index 0000000..ec2420b --- /dev/null +++ b/_shared/QuickTriggerConfig/player_entered_act_1.tres @@ -0,0 +1,11 @@ +[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" diff --git a/addons/limboai/bin/~liblimboai.windows.editor.x86_64.dll b/addons/limboai/bin/~liblimboai.windows.editor.x86_64.dll deleted file mode 100644 index 7131bab..0000000 Binary files a/addons/limboai/bin/~liblimboai.windows.editor.x86_64.dll and /dev/null differ diff --git a/addons/reedscene/scene/NodePathSceneTrigger.gd b/addons/reedscene/scene/NodePathSceneTrigger.gd new file mode 100644 index 0000000..de4ecfa --- /dev/null +++ b/addons/reedscene/scene/NodePathSceneTrigger.gd @@ -0,0 +1,3 @@ +class_name NodePathSceneTrigger extends SceneTrigger + +@export var path: NodePath diff --git a/addons/reedscene/scene/NodePathSceneTrigger.gd.uid b/addons/reedscene/scene/NodePathSceneTrigger.gd.uid new file mode 100644 index 0000000..cb82603 --- /dev/null +++ b/addons/reedscene/scene/NodePathSceneTrigger.gd.uid @@ -0,0 +1 @@ +uid://cvtkkcio4eeod diff --git a/addons/reedscene/scene/SceneManager.gd b/addons/reedscene/scene/SceneManager.gd index 4c2b9f5..09fde1a 100644 --- a/addons/reedscene/scene/SceneManager.gd +++ b/addons/reedscene/scene/SceneManager.gd @@ -36,7 +36,10 @@ func _bind_quick_trigger() -> void: for qt in quick_trigger: if qt is PropIDSceneTrigger: _bind_prop_id_trigger(qt) + elif qt is NodePathSceneTrigger: + _bind_node_path_trigger(qt) +## 通过Prop id来绑定signal func _bind_prop_id_trigger(trigger: PropIDSceneTrigger) -> void: var prop : Node = _props.get(trigger.prop_id).get_parent() if prop == null: @@ -53,6 +56,28 @@ func _bind_prop_id_trigger(trigger: PropIDSceneTrigger) -> void: _on_trigger_fired(trigger, args) ) +## 通过NodePath来绑定signal +func _bind_node_path_trigger(trigger: NodePathSceneTrigger) -> void: + if trigger.path.is_empty(): + return + + var n : Node = self.get_node_or_null(trigger.path) + + if n == null: + return + + var s: StringName = trigger.monitor_signal + if not n.has_signal(s): + push_error("Prop has no signal: %s" % trigger.monitor_signal) + return + + n.connect( + trigger.monitor_signal, + func(...args): + _on_trigger_fired(trigger, args) + ) + +## 当信号触发 func _on_trigger_fired(trigger: SceneTrigger, signal_args: Array) -> void: if not trigger.can_trigger(signal_args): return