Add CloseDoorActionResource and update LogicSequenceComponentResource for activation and deactivation actions

This commit is contained in:
2025-10-30 02:46:16 +01:00
parent 214d541c2b
commit c373ed4953
7 changed files with 36 additions and 6 deletions

View File

@@ -167,12 +167,21 @@ public class ComponentFactory
IsOneTimeTrigger = resource.IsOneTimeTrigger, IsOneTimeTrigger = resource.IsOneTimeTrigger,
}; };
foreach (var actionResource in resource.OnCompleteActions) foreach (var actionResource in resource.OnActivateActions)
{ {
var action = _triggerActionFactory.Create(actionResource); var action = _triggerActionFactory.Create(actionResource);
if (action != null) if (action != null)
{ {
component.OnCompleteActions.Add(action); component.OnActivateActions.Add(action);
}
}
foreach (var actionResource in resource.OnDeactivateActions)
{
var action = _triggerActionFactory.Create(actionResource);
if (action != null)
{
component.OnDeactivateActions.Add(action);
} }
} }

View File

@@ -15,6 +15,7 @@ public class TriggerActionFactory
SpawnEntityActionResource spawn => new SpawnEntityAction(spawn.ArchetypeId, spawn.SpawnerWorldId), SpawnEntityActionResource spawn => new SpawnEntityAction(spawn.ArchetypeId, spawn.SpawnerWorldId),
DebugMessageActionResource debug => new DebugMessageAction(debug.Message), DebugMessageActionResource debug => new DebugMessageAction(debug.Message),
OpenDoorActionResource open => new OpenDoorAction(open.TargetWorldId), OpenDoorActionResource open => new OpenDoorAction(open.TargetWorldId),
CloseDoorActionResource close => new CloseDoorAction(close.TargetWorldId),
_ => throw new ArgumentOutOfRangeException(nameof(resource), _ => throw new ArgumentOutOfRangeException(nameof(resource),
$"TriggerAction type {resource.GetType().Name} not recognized") $"TriggerAction type {resource.GetType().Name} not recognized")
}; };

View File

@@ -0,0 +1,9 @@
using Godot;
namespace CryptonymThunder.Code.Resources;
[GlobalClass]
public partial class CloseDoorActionResource : TriggerActionResource
{
[Export] public string TargetWorldId { get; set; } = "door_to_close";
}

View File

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

View File

@@ -7,6 +7,7 @@ namespace CryptonymThunder.Code.Resources;
public partial class LogicSequenceComponentResource : Resource public partial class LogicSequenceComponentResource : Resource
{ {
[Export] public Array<string> RequiredChannels { get; set; } = []; [Export] public Array<string> RequiredChannels { get; set; } = [];
[Export] public Array<TriggerActionResource> OnCompleteActions { get; set; } = []; [Export] public Array<TriggerActionResource> OnActivateActions { get; set; } = [];
[Export] public Array<TriggerActionResource> OnDeactivateActions { get; set; } = [];
[Export] public bool IsOneTimeTrigger { get; set; } = true; [Export] public bool IsOneTimeTrigger { get; set; } = true;
} }

View File

@@ -16,6 +16,7 @@ points = PackedVector3Array(-0.049999997, -0.04999998, -0.04999998, 0.049997684,
[sub_resource type="Resource" id="Resource_nak1n"] [sub_resource type="Resource" id="Resource_nak1n"]
script = ExtResource("3_8x8af") script = ExtResource("3_8x8af")
ChannelId = "green_door_button" ChannelId = "green_door_button"
IsToggle = true
Requirements = null Requirements = null
metadata/_custom_type_script = "uid://cc1okvlx8p0tr" metadata/_custom_type_script = "uid://cc1okvlx8p0tr"

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=32 format=4 uid="uid://bkvgcsb8d3v7p"] [gd_scene load_steps=34 format=4 uid="uid://bkvgcsb8d3v7p"]
[ext_resource type="Script" uid="uid://cfpm5p102f65x" path="res://Code/Presenters/GamePresenter.cs" id="1_qvgq0"] [ext_resource type="Script" uid="uid://cfpm5p102f65x" path="res://Code/Presenters/GamePresenter.cs" id="1_qvgq0"]
[ext_resource type="Resource" uid="uid://biev6ri5s8kyf" path="res://Resources/Entities/player.tres" id="2_alii3"] [ext_resource type="Resource" uid="uid://biev6ri5s8kyf" path="res://Resources/Entities/player.tres" id="2_alii3"]
@@ -17,6 +17,7 @@
[ext_resource type="PackedScene" uid="uid://bjbsk8nhi5e4i" path="res://Objects/green_door_button.tscn" id="15_g7kif"] [ext_resource type="PackedScene" uid="uid://bjbsk8nhi5e4i" path="res://Objects/green_door_button.tscn" id="15_g7kif"]
[ext_resource type="Script" uid="uid://dngi4w4ae8wyr" path="res://Code/Resources/OpenDoorActionResource.cs" id="16_vpkaq"] [ext_resource type="Script" uid="uid://dngi4w4ae8wyr" path="res://Code/Resources/OpenDoorActionResource.cs" id="16_vpkaq"]
[ext_resource type="Script" uid="uid://c4csquqmqqqww" path="res://Code/Resources/LogicSequenceComponentResource.cs" id="17_df4ul"] [ext_resource type="Script" uid="uid://c4csquqmqqqww" path="res://Code/Resources/LogicSequenceComponentResource.cs" id="17_df4ul"]
[ext_resource type="Script" uid="uid://d3u3q5yhenegb" path="res://Code/Resources/CloseDoorActionResource.cs" id="17_q0a86"]
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_ucfah"] [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_ucfah"]
data = PackedVector3Array(-4.282257, -0.5, 4.977783, -4.282257, -0.5, -4.977783, -4.282257, 0.5, -4.977783, 4.282257, -0.5, -4.977783, -4.282257, -0.5, -4.977783, -4.282257, -0.5, 4.977783, -4.282257, 0.5, -4.977783, -4.282257, -0.5, -4.977783, 4.282257, -0.5, -4.977783, -4.282257, 0.5, -4.977783, -4.282257, 0.5, 4.977783, -4.282257, -0.5, 4.977783, -4.282257, -0.5, 4.977783, -4.282257, 0.5, 4.977783, 4.282257, 0.5, 4.977783, 4.282257, 0.5, 4.977783, -4.282257, 0.5, 4.977783, -4.282257, 0.5, -4.977783, -4.282257, -0.5, 4.977783, 4.282257, -0.5, 4.977783, 4.282257, -0.5, -4.977783, 4.282257, 0.5, 4.977783, 4.282257, -0.5, 4.977783, -4.282257, -0.5, 4.977783, 4.282257, -0.5, -4.977783, 4.282257, -0.5, 4.977783, 4.282257, 0.5, 4.977783, 4.282257, -0.5, -4.977783, 4.282257, 0.5, -4.977783, -4.282257, 0.5, -4.977783, -4.282257, 0.5, -4.977783, 4.282257, 0.5, -4.977783, 4.282257, 0.5, 4.977783, 4.282257, 0.5, 4.977783, 4.282257, 0.5, -4.977783, 4.282257, -0.5, -4.977783) data = PackedVector3Array(-4.282257, -0.5, 4.977783, -4.282257, -0.5, -4.977783, -4.282257, 0.5, -4.977783, 4.282257, -0.5, -4.977783, -4.282257, -0.5, -4.977783, -4.282257, -0.5, 4.977783, -4.282257, 0.5, -4.977783, -4.282257, -0.5, -4.977783, 4.282257, -0.5, -4.977783, -4.282257, 0.5, -4.977783, -4.282257, 0.5, 4.977783, -4.282257, -0.5, 4.977783, -4.282257, -0.5, 4.977783, -4.282257, 0.5, 4.977783, 4.282257, 0.5, 4.977783, 4.282257, 0.5, 4.977783, -4.282257, 0.5, 4.977783, -4.282257, 0.5, -4.977783, -4.282257, -0.5, 4.977783, 4.282257, -0.5, 4.977783, 4.282257, -0.5, -4.977783, 4.282257, 0.5, 4.977783, 4.282257, -0.5, 4.977783, -4.282257, -0.5, 4.977783, 4.282257, -0.5, -4.977783, 4.282257, -0.5, 4.977783, 4.282257, 0.5, 4.977783, 4.282257, -0.5, -4.977783, 4.282257, 0.5, -4.977783, -4.282257, 0.5, -4.977783, -4.282257, 0.5, -4.977783, 4.282257, 0.5, -4.977783, 4.282257, 0.5, 4.977783, 4.282257, 0.5, 4.977783, 4.282257, 0.5, -4.977783, 4.282257, -0.5, -4.977783)
@@ -68,15 +69,22 @@ BaseValues = Dictionary[int, float]({
}) })
metadata/_custom_type_script = "uid://dc7wq2ij5kwj5" metadata/_custom_type_script = "uid://dc7wq2ij5kwj5"
[sub_resource type="Resource" id="Resource_df4ul"] [sub_resource type="Resource" id="Resource_jfk60"]
script = ExtResource("16_vpkaq") script = ExtResource("16_vpkaq")
TargetWorldId = "green_door" TargetWorldId = "green_door"
metadata/_custom_type_script = "uid://dngi4w4ae8wyr" metadata/_custom_type_script = "uid://dngi4w4ae8wyr"
[sub_resource type="Resource" id="Resource_up4u3"]
script = ExtResource("17_q0a86")
TargetWorldId = "green_door"
metadata/_custom_type_script = "uid://d3u3q5yhenegb"
[sub_resource type="Resource" id="Resource_3hp7m"] [sub_resource type="Resource" id="Resource_3hp7m"]
script = ExtResource("17_df4ul") script = ExtResource("17_df4ul")
RequiredChannels = Array[String](["green_door_button"]) RequiredChannels = Array[String](["green_door_button"])
OnCompleteActions = Array[Resource]([SubResource("Resource_df4ul")]) OnActivateActions = Array[Resource]([SubResource("Resource_jfk60")])
OnDeactivateActions = Array[Resource]([SubResource("Resource_up4u3")])
IsOneTimeTrigger = false
metadata/_custom_type_script = "uid://c4csquqmqqqww" metadata/_custom_type_script = "uid://c4csquqmqqqww"
[node name="GameWorld" type="Node3D"] [node name="GameWorld" type="Node3D"]