Code/Tikfinity/Actions/TikfinityForwardAction.cs
using Sandbox;
namespace TikfinitySbox;
/// <summary>
/// Forwards one route to a component on a chosen GameObject implementing ITikfinityInteractionTarget.
/// </summary>
public sealed class TikfinityForwardAction : Component, ITikfinityEvents
{
[Property] public string Route { get; set; } = "gift.forward";
[Property] public GameObject Target { get; set; }
void ITikfinityEvents.OnInteraction( TikfinityInteraction interaction )
{
if ( !Networking.IsHost || interaction is null ) return;
if ( !string.Equals( Route?.Trim(), interaction.Route, System.StringComparison.OrdinalIgnoreCase ) ) return;
if ( !Target.IsValid() ) return;
var receiver = Target.Components.Get<ITikfinityInteractionTarget>();
if ( receiver is null )
{
Log.Warning( $"TikFinity forward action '{Route}' has no ITikfinityInteractionTarget on {Target.Name}." );
return;
}
receiver.ApplyTikfinityInteraction( interaction );
}
}