Add CloseDoorActionResource and update LogicSequenceComponentResource for activation and deactivation actions
This commit is contained in:
@@ -167,12 +167,21 @@ public class ComponentFactory
|
||||
IsOneTimeTrigger = resource.IsOneTimeTrigger,
|
||||
};
|
||||
|
||||
foreach (var actionResource in resource.OnCompleteActions)
|
||||
foreach (var actionResource in resource.OnActivateActions)
|
||||
{
|
||||
var action = _triggerActionFactory.Create(actionResource);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ public class TriggerActionFactory
|
||||
SpawnEntityActionResource spawn => new SpawnEntityAction(spawn.ArchetypeId, spawn.SpawnerWorldId),
|
||||
DebugMessageActionResource debug => new DebugMessageAction(debug.Message),
|
||||
OpenDoorActionResource open => new OpenDoorAction(open.TargetWorldId),
|
||||
CloseDoorActionResource close => new CloseDoorAction(close.TargetWorldId),
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(resource),
|
||||
$"TriggerAction type {resource.GetType().Name} not recognized")
|
||||
};
|
||||
|
||||
9
Code/Resources/CloseDoorActionResource.cs
Normal file
9
Code/Resources/CloseDoorActionResource.cs
Normal 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";
|
||||
}
|
||||
1
Code/Resources/CloseDoorActionResource.cs.uid
Normal file
1
Code/Resources/CloseDoorActionResource.cs.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://d3u3q5yhenegb
|
||||
@@ -7,6 +7,7 @@ namespace CryptonymThunder.Code.Resources;
|
||||
public partial class LogicSequenceComponentResource : Resource
|
||||
{
|
||||
[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;
|
||||
}
|
||||
@@ -16,6 +16,7 @@ points = PackedVector3Array(-0.049999997, -0.04999998, -0.04999998, 0.049997684,
|
||||
[sub_resource type="Resource" id="Resource_nak1n"]
|
||||
script = ExtResource("3_8x8af")
|
||||
ChannelId = "green_door_button"
|
||||
IsToggle = true
|
||||
Requirements = null
|
||||
metadata/_custom_type_script = "uid://cc1okvlx8p0tr"
|
||||
|
||||
|
||||
@@ -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="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="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://d3u3q5yhenegb" path="res://Code/Resources/CloseDoorActionResource.cs" id="17_q0a86"]
|
||||
|
||||
[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)
|
||||
@@ -68,15 +69,22 @@ BaseValues = Dictionary[int, float]({
|
||||
})
|
||||
metadata/_custom_type_script = "uid://dc7wq2ij5kwj5"
|
||||
|
||||
[sub_resource type="Resource" id="Resource_df4ul"]
|
||||
[sub_resource type="Resource" id="Resource_jfk60"]
|
||||
script = ExtResource("16_vpkaq")
|
||||
TargetWorldId = "green_door"
|
||||
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"]
|
||||
script = ExtResource("17_df4ul")
|
||||
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"
|
||||
|
||||
[node name="GameWorld" type="Node3D"]
|
||||
|
||||
Reference in New Issue
Block a user