JAZ27QX53QXAN4JVMMX2KYKN4GCULWFMXYSPFZ5HWW4T7FUB5EHAC D4K77RTIZUI46DIDLVOR42DW3EP6IOMEAASAPZQ5XA2J7GEYFQIAC 3UN6NREN32ZBQW4EWI7ED4WVQILCU2EIE7DQGFWZR3OUDCO3ZSPQC DTKCWM4J7PFNWAAES3RZHQGDA6PTDNX4TZVOXAKF5V7LCZBI3XUAC FXM5KEZSKC2Z4LH4SEM6SSXN7WXH7B35MO4PQ4HMW5CFYFTCSNPQC XTNHXKSQ4PQS6CN3ATENRI7JUXU7DYZMRW4PBSEABN4S4VQHFUMAC IFN4UDLTN7TD26CPONDCRHW4G3DJEXEYV62ZHZC4QD7DKJ76JAEQC CD5FF75KTOBTMVMTMCKMR6F5DFKOF26I5K43ITNHGBI3ZAZHA4RAC HXTSBPAP75A7EC4RKWYQMVPPHPNZFPHUORBZWDHGEB6MPAGI7G7AC namespace TagFighter.Effects{using System.Collections.Generic;using System.Linq;{[UnityEngine.SerializeField]MultiPort<SingleGetterStep> _in = new();[UnityEngine.SerializeReference, CareBoo.Serially.ShowSerializeReference]public IResourceOperator Operator;[UnityEngine.SerializeField]List<double> _const = new();public override IEnumerable<IPort<EffectStepNode>> Inputs {get {yield return _in;}}public override string ToString() {var operatorName = Operator == null ? "*" : Operator.GetType().Name;var constName = _const.Count == 0 ? "" : $"({string.Join(",", _const)})";}}public override bool IsValid {get {return Operator != null;public override double Get() {}}}var result = Operator.OperateEnum(_in.Nodes.Select(getter => getter.Get()).Concat(_const));return result;return $"{operatorName}{constName}";}[StepType(StepTypeAttribute.OperatorStep)]public class OperatorStep : SingleGetterStep
fileFormatVersion: 2guid: e3d165e54b32e6d4cbcc75c5b0cf7a68MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects{using System.Collections.Generic;{[UnityEngine.SerializeField]SinglePort<SingleGetterStep> _radius = new() {DisplayName = "Radius"};[UnityEngine.SerializeField]SinglePort<SingleGetterStep> _angle = new() {DisplayName = "Angle"};public override IEnumerable<IPort<EffectStepNode>> Inputs {get {yield return _radius;yield return _angle;}}public override void Set() {Data.Context.AreaOfEffect = new ConeArea() {Radius = (float)_radius.Node.Get(),Angle = (float)_angle.Node.Get(),};}}}public override string ToString() => "Cone AOE";public override bool IsValid => true;[StepType(StepTypeAttribute.SetterStep)]public class ConeAreaStep : SetterNode
fileFormatVersion: 2guid: bfce83ffec5b7b14a85ec10ce4e193abMonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects{using System.Collections.Generic;using System.Linq;using CareBoo.Serially;{[UnityEngine.SerializeField]MultiPort<SequenceGetterStep> _in = new();[UnityEngine.SerializeReference, ShowSerializeReference]public IResourceOperator Operator;public override IEnumerable<double> Get() {current.Zip(next, (first, second) =>Operator.Operate(first, second)));}}}}}return $"Zip.{operatorName}{constName}";}public override bool IsValid {get {return Operator != null;public override string ToString() {var operatorName = Operator == null ? "*" : Operator.GetType().Name;var constName = _const.Count == 0 ? "" : $"({string.Join(",", _const.Select(val => $"{val}[]"))})";if (!IsValid) {double defaultVal = 0;UnityEngine.Debug.Log($"{Guid} Inner types are null");return Data.Affected.Select(transform => defaultVal);}return _in.Nodes.Select(getter => getter.Get()).Concat(_const.Select(value => Data.Affected.Select(transform => value))).Aggregate((current, next) =>public override IEnumerable<IPort<EffectStepNode>> Inputs {get {yield return _in;}}[UnityEngine.SerializeField]List<double> _const = new();[StepType(StepTypeAttribute.OperatorStep)]public class ZipStep : SequenceGetterStep
fileFormatVersion: 2guid: bd34bf8514de0af4996e67b24ad947e0MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
fileFormatVersion: 2guid: 197330efc91666644bf5b27d4a453deaMonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
fileFormatVersion: 2guid: aff62bda1997e384eb9fb765aa33b08eMonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects{public abstract class SequenceGetterStep : EffectStepNode{public abstract IEnumerable<double> Get();}}using System.Collections.Generic;
fileFormatVersion: 2guid: bb9a9a2cce40a384084a18925a111186MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects{using System.Collections.Generic;using System.Linq;{[UnityEngine.SerializeField]SinglePort<SingleGetterStep> _in = new();public override IEnumerable<double> Get() {var value = _in.Node.Get();return Data.Affected.Select(transform => value);}get {}}}}public override string ToString() => "Repeat";public override bool IsValid => true;yield return _in;public override IEnumerable<IPort<EffectStepNode>> Inputs {[StepType(StepTypeAttribute.OperatorStep)]public class RepeatStep : SequenceGetterStep
fileFormatVersion: 2guid: 844f2211c024f444f876e89a2321a495MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects{using System.Linq;using System.Reflection;using System.Text;{[UnityEngine.SerializeField]SinglePort<SequenceGetterStep> _in = new();[CareBoo.Serially.TypeFilter(derivedFrom: typeof(Resources.Resource<>))]public CareBoo.Serially.SerializableType Resource;get {}}public override void Set() {UnityEngine.Debug.Log($"{Guid} Inner types are null");return;}var getSpecificMethod = typeof(PawnSetterStep).GetMethod(nameof(SetSpecific), BindingFlags.NonPublic | BindingFlags.Instance).MakeGenericMethod(Resource.Type, Resource.Type.BaseType.GetGenericArguments()[0]);var value = getSpecificMethod.Invoke(this, null);}void SetSpecific<TResource, TUnitType>()where TResource : Resources.Resource<TUnitType>where TUnitType : Resources.IUnitType {var result = _in.Node.Get();var message = new StringBuilder();foreach (var res in result) {message.Append($"{res} ,");}UnityEngine.Debug.Log($"{nameof(PawnSetterStep)} result {message}");var set = result.Zip(Data.Affected.Select(transform => transform.GetComponent<TResource>()), (value, resource) => (value, resource));foreach (var (value, resource) in set) {Data.StatAccessor.AddCurrentModifier(resource, (Resources.Unit<TUnitType>)value);}}}}if (!IsValid) {}}return $"Pawn.Set.{resourceName}.{statName}";}public override bool IsValid {get {return Resource != null && Resource.Type != null;public override string ToString() {var resourceName = Resource == null || Resource.Type == null ? "*" : Resource.Type.Name;var statName = "Current";yield return _in;public override IEnumerable<IPort<EffectStepNode>> Inputs {[StepType(StepTypeAttribute.SetterStep)]public class PawnSetterStep : SetterNodeusing System.Collections.Generic;
fileFormatVersion: 2guid: 9aba2983d5b304644a37facc1967f5deMonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects{using System.Collections.Generic;using System.Linq;using System.Reflection;{[CareBoo.Serially.TypeFilter(derivedFrom: typeof(Resources.Resource<>))]public CareBoo.Serially.SerializableType Resource;public override IEnumerable<double> Get() {UnityEngine.Debug.Log($"{Guid} Inner types are null");return Data.Affected.Select(transform => 0d);}var getSpecificMethod = typeof(PawnGetterStep).GetMethod(nameof(GetSpecific), BindingFlags.NonPublic | BindingFlags.Instance).MakeGenericMethod(Resource.Type, Resource.Type.BaseType.GetGenericArguments()[0]);var value = getSpecificMethod.Invoke(this, null);return value as IEnumerable<double>;}IEnumerable<double> GetSpecific<TResource, TUnitType>()where TResource : Resources.Resource<TUnitType>where TUnitType : Resources.IUnitType {UnityEngine.Debug.Log($"{nameof(PawnGetterStep)} {typeof(TResource)}");return Data.Affected.Select(transform => (double)transform.GetComponent<TResource>().GetCurrent().AsPrimitive());}}}get {}}return Resource != null && Resource.Type != null;public override string ToString() {var resourceName = Resource == null || Resource.Type == null ? "*" : Resource.Type.Name;var statName = "Current";return $"Pawn.Get.{resourceName}.{statName}";}public override bool IsValid {public override IEnumerable<IPort<EffectStepNode>> Inputs => Enumerable.Empty<IPort<EffectStepNode>>();if (!IsValid) {[StepType(StepTypeAttribute.GetterStep)]public class PawnGetterStep : SequenceGetterStep
fileFormatVersion: 2guid: ba8070acc07ec7f448050fe3c5cd4278MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects{using System.Linq;{[UnityEngine.SerializeField]SinglePort<SequenceGetterStep> _in = new();[UnityEngine.SerializeReference, CareBoo.Serially.ShowSerializeReference]public IResourceOperator Operator;public override double Get() {return _in.Node.Get().Aggregate((current, next) => Operator.Operate(current, next));}get {}}}}get {}}return Operator != null;return $"Fold.{operatorName}";}public override bool IsValid {public override string ToString() {var operatorName = Operator == null ? "*" : Operator.GetType().Name;yield return _in;public override IEnumerable<IPort<EffectStepNode>> Inputs {[StepType(StepTypeAttribute.OperatorStep)]public class FoldStep : SingleGetterStepusing System.Collections.Generic;
fileFormatVersion: 2guid: 95498ab7ed723494fb6b3c000a0f1c35MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects{using System.Reflection;using TagFighter.Effects.ResourceLocationAccessors.ContextRegisters;{[UnityEngine.SerializeField]SinglePort<SingleGetterStep> _in = new();[CareBoo.Serially.TypeFilter(derivedFrom: typeof(Resources.Resource<>))]public CareBoo.Serially.SerializableType Resource;[CareBoo.Serially.TypeFilter(derivedFrom: typeof(ContextRegister<>))]public CareBoo.Serially.SerializableType Register;get {}}public override void Set() {UnityEngine.Debug.Log($"{Guid} Inner types are null");return;}var getSpecificMethod = typeof(ContextSetterStep).GetMethod(nameof(SetSpecific), BindingFlags.NonPublic | BindingFlags.Instance).MakeGenericMethod(Resource.Type, Resource.Type.BaseType.GetGenericArguments()[0], Register.Type);var value = getSpecificMethod.Invoke(this, null);}void SetSpecific<TResource, TUnitType, TContextRegister>()where TResource : Resources.Resource<TUnitType>where TUnitType : Resources.IUnitTypewhere TContextRegister : IContextRegister {var result = _in.Node.Get();UnityEngine.Debug.Log($"{nameof(ContextSetterStep)} {typeof(TResource)} {typeof(TContextRegister)} result {result}");Data.Context.SetResource<TResource, TUnitType, TContextRegister>((Resources.Unit<TUnitType>)result);}}}if (!IsValid) {get {}}return Register != null && Register.Type != null && Resource != null && Resource.Type != null;public override bool IsValid {}public override string ToString() {var resourceName = Resource == null || Resource.Type == null ? "*" : Resource.Type.Name;var registerName = Register == null || Register.Type == null ? "*" : Register.Type.Name;return $"Context.Set.{resourceName}.{registerName}";yield return _in;public override IEnumerable<IPort<EffectStepNode>> Inputs {[StepType(StepTypeAttribute.SetterStep)]public class ContextSetterStep : SetterNodeusing System.Collections.Generic;
fileFormatVersion: 2guid: c5c37fc06b3d0ad45b6305eb93d68542MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects{using System.Reflection;using TagFighter.Effects.ResourceLocationAccessors.ContextRegisters;{[CareBoo.Serially.TypeFilter(derivedFrom: typeof(Resources.Resource<>))]public CareBoo.Serially.SerializableType Resource;[CareBoo.Serially.TypeFilter(derivedFrom: typeof(ContextRegister<>))]public CareBoo.Serially.SerializableType Register;public override double Get() {if (Register.Type == null || Resource.Type == null) {UnityEngine.Debug.Log($"{Guid} Inner types are null");return 0;}var getSpecificMethod = typeof(ContextGetterStep).GetMethod(nameof(GetSpecific), BindingFlags.NonPublic | BindingFlags.Instance).MakeGenericMethod(Resource.Type, Resource.Type.BaseType.GetGenericArguments()[0], Register.Type);var value = getSpecificMethod.Invoke(this, null);return (int)value;}int GetSpecific<TResource, TUnitType, TContextRegister>()where TResource : Resources.Resource<TUnitType>where TUnitType : Resources.IUnitTypewhere TContextRegister : IContextRegister {UnityEngine.Debug.Log($"{nameof(ContextGetterStep)} {typeof(TResource)} {typeof(TContextRegister)}");return Data.Context.GetResource<TResource, TUnitType, TContextRegister>().AsPrimitive();}}}}}public override bool IsValid {get {return Register != null && Register.Type != null && Resource != null && Resource.Type != null;public override string ToString() {var resourceName = Resource == null || Resource.Type == null ? "*" : Resource.Type.Name;var registerName = Register == null || Register.Type == null ? "*" : Register.Type.Name;return $"Context.Get.{resourceName}.{registerName}";}public override IEnumerable<IPort<EffectStepNode>> Inputs => Enumerable.Empty<IPort<EffectStepNode>>();[StepType(StepTypeAttribute.GetterStep)]public class ContextGetterStep : SingleGetterStepusing System.Collections.Generic;using System.Linq;
fileFormatVersion: 2guid: c419ef0e55c3e694cb24080375e68c2eMonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects{{[UnityEngine.SerializeField]double _value;public override double Get() {UnityEngine.Debug.Log($"{nameof(ConstValueStep)} = {_value}");return _value;}}}public override string ToString() {return $"Const {_value}";}public override bool IsValid => true;public override IEnumerable<IPort<EffectStepNode>> Inputs => Enumerable.Empty<IPort<EffectStepNode>>();using System.Collections.Generic;using System.Linq;[StepType(StepTypeAttribute.GetterStep)]public class ConstValueStep : SingleGetterStep
fileFormatVersion: 2guid: bfce83ffec5b7b14a85ec10ce4e193abMonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects.Steps{using System.Collections.Generic;using System.Linq;using CareBoo.Serially;[StepType(StepTypeAttribute.OperatorStep)]public class Zip : OutputStep<IEnumerable<double>>{[UnityEngine.SerializeField]MultiPort<IEnumerable<double>> _in = new();[UnityEngine.SerializeReference, ShowSerializeReference]public IResourceOperator Operator;[UnityEngine.SerializeField]List<double> _const = new();public override IEnumerable<IPort> Inputs {get {yield return _in;}}public override IEnumerable<double> Run() {if (!IsValid) {double defaultVal = 0;UnityEngine.Debug.Log($"{Guid} Inner types are null");return Data.Affected.Select(transform => defaultVal);}return _in.Nodes.Select(getter => getter.Run()).Concat(_const.Select(value => Data.Affected.Select(transform => value))).Aggregate((current, next) =>current.Zip(next, (first, second) =>Operator.Operate(first, second)));}public override string ToString() {var operatorName = Operator == null ? "*" : Operator.GetType().Name;var constName = _const.Count == 0 ? "" : $"({string.Join(",", _const.Select(val => $"{val}[]"))})";return $"Zip.{operatorName}{constName}";}public override bool IsValid {get {return Operator != null;}}}}
fileFormatVersion: 2guid: bb9a9a2cce40a384084a18925a111186MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects.Steps{using System.Collections.Generic;using System.Linq;[StepType(StepTypeAttribute.OperatorStep)]public class Repeat : OutputStep<IEnumerable<double>>{[UnityEngine.SerializeField]SinglePort<double> _in = new();public override IEnumerable<double> Run() {var value = _in.Node.Run();return Data.Affected.Select(transform => value);}public override IEnumerable<IPort> Inputs {get {yield return _in;}}public override string ToString() => "Repeat";public override bool IsValid => true;}}
fileFormatVersion: 2guid: 844f2211c024f444f876e89a2321a495MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects.Steps{using System.Linq;using System.Reflection;using System.Collections.Generic;[StepType(StepTypeAttribute.SetterStep)]public class PawnResourceSet : OutputStep<bool>{[UnityEngine.SerializeField]SinglePort<IEnumerable<double>> _in = new();[CareBoo.Serially.TypeFilter(derivedFrom: typeof(Resources.Resource<>))]public CareBoo.Serially.SerializableType Resource;public override IEnumerable<IPort> Inputs {get {yield return _in;}}public override string ToString() {var resourceName = Resource == null || Resource.Type == null ? "*" : Resource.Type.Name;var statName = "Current";return $"Pawn.Set.{resourceName}.{statName}";}public override bool IsValid {get {return Resource != null && Resource.Type != null;}}public override bool Run() {if (!IsValid) {UnityEngine.Debug.Log($"{Guid} Inner types are null");return false;}var getSpecificMethod = typeof(PawnResourceSet).GetMethod(nameof(SetSpecific), BindingFlags.NonPublic | BindingFlags.Instance).MakeGenericMethod(Resource.Type, Resource.Type.BaseType.GetGenericArguments()[0]);var value = getSpecificMethod.Invoke(this, null);return (bool)value;}bool SetSpecific<TResource, TUnitType>()where TResource : Resources.Resource<TUnitType>where TUnitType : Resources.IUnitType {var result = _in.Node.Run();UnityEngine.Debug.Log($"{nameof(PawnResourceSet)} result {string.Join(",", result)}");var set = result.Zip(Data.Affected.Select(transform => transform.GetComponent<TResource>()), (value, resource) => (value, resource));foreach (var (value, resource) in set) {Data.StatAccessor.AddCurrentModifier(resource, (Resources.Unit<TUnitType>)value);}return true;}}}
fileFormatVersion: 2guid: 9aba2983d5b304644a37facc1967f5deMonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects.Steps{using System.Collections.Generic;using System.Linq;using System.Reflection;[StepType(StepTypeAttribute.GetterStep)]public class PawnResourceGet : OutputStep<IEnumerable<double>>{[CareBoo.Serially.TypeFilter(derivedFrom: typeof(Resources.Resource<>))]public CareBoo.Serially.SerializableType Resource;public override IEnumerable<double> Run() {if (!IsValid) {UnityEngine.Debug.Log($"{Guid} Inner types are null");return Data.Affected.Select(transform => 0d);}var getSpecificMethod = typeof(PawnResourceGet).GetMethod(nameof(GetSpecific), BindingFlags.NonPublic | BindingFlags.Instance).MakeGenericMethod(Resource.Type, Resource.Type.BaseType.GetGenericArguments()[0]);var value = getSpecificMethod.Invoke(this, null);return value as IEnumerable<double>;}IEnumerable<double> GetSpecific<TResource, TUnitType>()where TResource : Resources.Resource<TUnitType>where TUnitType : Resources.IUnitType {UnityEngine.Debug.Log($"{nameof(PawnResourceGet)} {typeof(TResource)}");return Data.Affected.Select(transform => (double)transform.GetComponent<TResource>().GetCurrent().AsPrimitive());}public override IEnumerable<IPort> Inputs => Enumerable.Empty<IPort>();public override string ToString() {var resourceName = Resource == null || Resource.Type == null ? "*" : Resource.Type.Name;var statName = "Current";return $"Pawn.Get.{resourceName}.{statName}";}public override bool IsValid {get {return Resource != null && Resource.Type != null;}}}}
fileFormatVersion: 2guid: 93ba90a75f8f1fe4189ea1ed3890ae3eMonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects.Steps{using System.Collections.Generic;using System.Linq;[StepType(StepTypeAttribute.OperatorStep)]public class Operate : OutputStep<double>{[UnityEngine.SerializeField]MultiPort<double> _in = new();[UnityEngine.SerializeReference, CareBoo.Serially.ShowSerializeReference]public IResourceOperator Operator;[UnityEngine.SerializeField]List<double> _const = new();public override IEnumerable<IPort> Inputs {get {yield return _in;}}public override string ToString() {var operatorName = Operator == null ? "*" : Operator.GetType().Name;var constName = _const.Count == 0 ? "" : $"({string.Join(",", _const)})";return $"{operatorName}{constName}";}public override bool IsValid {get {return Operator != null;}}public override double Run() {var result = Operator.OperateEnum(_in.Nodes.Select(getter => getter.Run()).Concat(_const));return result;}}}
fileFormatVersion: 2guid: ba8070acc07ec7f448050fe3c5cd4278MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects.Steps{using System.Collections.Generic;using System.Linq;[StepType(StepTypeAttribute.OperatorStep)]public class Fold : OutputStep<double>{[UnityEngine.SerializeField]SinglePort<IEnumerable<double>> _in = new();[UnityEngine.SerializeReference, CareBoo.Serially.ShowSerializeReference]public IResourceOperator Operator;public override double Run() {return _in.Node.Run().Aggregate((current, next) => Operator.Operate(current, next));}public override IEnumerable<IPort> Inputs {get {yield return _in;}}public override string ToString() {var operatorName = Operator == null ? "*" : Operator.GetType().Name;return $"Fold.{operatorName}";}public override bool IsValid {get {return Operator != null;}}}}
/// <see cref="ConstValueStep"/> Input: None Output: Double/// <see cref="ContextGetterStep"/> Input: None Output: Double/// <see cref="PawnGetterStep"/> Input: None Output: Sequence<Double>
/// <see cref="ConstValue"/> Input: None Output: Double/// <see cref="ContextResourceGet"/> Input: None Output: Double/// <see cref="PawnResourceGet"/> Input: None Output: Sequence<Double>
/// <see cref="ContextSetterStep"/> Input: Single Double/// <see cref="PawnSetterStep"/> Input: Single Sequence<Double>/// <see cref="ConeAreaStep"/> Input: 2xDouble
/// <see cref="ContextResourceSet"/> Input: Single Double/// <see cref="PawnResourceSet"/> Input: Single Sequence<Double>/// <see cref="ConeAreaGet"/> Input: 2xDouble
fileFormatVersion: 2guid: 95498ab7ed723494fb6b3c000a0f1c35MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects.Steps{using System.Collections.Generic;using System.Reflection;using TagFighter.Effects.ResourceLocationAccessors.ContextRegisters;[StepType(StepTypeAttribute.SetterStep)]public class ContextResourceSet : OutputStep<bool>{[UnityEngine.SerializeField]SinglePort<double> _in = new();[CareBoo.Serially.TypeFilter(derivedFrom: typeof(Resources.Resource<>))]public CareBoo.Serially.SerializableType Resource;[CareBoo.Serially.TypeFilter(derivedFrom: typeof(ContextRegister<>))]public CareBoo.Serially.SerializableType Register;public override IEnumerable<IPort> Inputs {get {yield return _in;}}public override string ToString() {var resourceName = Resource == null || Resource.Type == null ? "*" : Resource.Type.Name;var registerName = Register == null || Register.Type == null ? "*" : Register.Type.Name;return $"Context.Set.{resourceName}.{registerName}";}public override bool IsValid {get {return Register != null && Register.Type != null && Resource != null && Resource.Type != null;}}public override bool Run() {if (!IsValid) {UnityEngine.Debug.Log($"{Guid} Inner types are null");return false;}var getSpecificMethod = typeof(ContextResourceSet).GetMethod(nameof(SetSpecific), BindingFlags.NonPublic | BindingFlags.Instance).MakeGenericMethod(Resource.Type, Resource.Type.BaseType.GetGenericArguments()[0], Register.Type);var value = getSpecificMethod.Invoke(this, null);return (bool)value;}bool SetSpecific<TResource, TUnitType, TContextRegister>()where TResource : Resources.Resource<TUnitType>where TUnitType : Resources.IUnitTypewhere TContextRegister : IContextRegister {var result = _in.Node.Run();UnityEngine.Debug.Log($"{nameof(ContextResourceSet)} {typeof(TResource)} {typeof(TContextRegister)} result {result}");Data.Context.SetResource<TResource, TUnitType, TContextRegister>((Resources.Unit<TUnitType>)result);return true;}}}
fileFormatVersion: 2guid: c5c37fc06b3d0ad45b6305eb93d68542MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects.Steps{using System.Reflection;using System.Collections.Generic;using System.Linq;using TagFighter.Effects.ResourceLocationAccessors.ContextRegisters;[StepType(StepTypeAttribute.GetterStep)]public class ContextResourceGet : OutputStep<double>{[CareBoo.Serially.TypeFilter(derivedFrom: typeof(Resources.Resource<>))]public CareBoo.Serially.SerializableType Resource;[CareBoo.Serially.TypeFilter(derivedFrom: typeof(ContextRegister<>))]public CareBoo.Serially.SerializableType Register;public override double Run() {if (Register.Type == null || Resource.Type == null) {UnityEngine.Debug.Log($"{Guid} Inner types are null");return 0;}var getSpecificMethod = typeof(ContextResourceGet).GetMethod(nameof(GetSpecific), BindingFlags.NonPublic | BindingFlags.Instance).MakeGenericMethod(Resource.Type, Resource.Type.BaseType.GetGenericArguments()[0], Register.Type);var value = getSpecificMethod.Invoke(this, null);return (int)value;}int GetSpecific<TResource, TUnitType, TContextRegister>()where TResource : Resources.Resource<TUnitType>where TUnitType : Resources.IUnitTypewhere TContextRegister : IContextRegister {UnityEngine.Debug.Log($"{nameof(ContextResourceGet)} {typeof(TResource)} {typeof(TContextRegister)}");return Data.Context.GetResource<TResource, TUnitType, TContextRegister>().AsPrimitive();}public override IEnumerable<IPort> Inputs => Enumerable.Empty<IPort>();public override string ToString() {var resourceName = Resource == null || Resource.Type == null ? "*" : Resource.Type.Name;var registerName = Register == null || Register.Type == null ? "*" : Register.Type.Name;return $"Context.Get.{resourceName}.{registerName}";}public override bool IsValid {get {return Register != null && Register.Type != null && Resource != null && Resource.Type != null;}}}}
fileFormatVersion: 2guid: 81d788b04f027ce4080f0b8736d97a71MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects.Steps{using System.Collections.Generic;[StepType(StepTypeAttribute.SetterStep)]public class ContextAreaSet : OutputStep<bool>{[UnityEngine.SerializeField]SinglePort<IAreaOfEffect> _in = new();public override IEnumerable<IPort> Inputs {get {yield return _in;}}public override string ToString() => "Context.AOE.Set";public override bool IsValid => true;public override bool Run() {var success = false;if (_in.Node != null) {Data.Context.AreaOfEffect = _in.Node.Run();success = true;}return success;}}}
fileFormatVersion: 2guid: c419ef0e55c3e694cb24080375e68c2eMonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects.Steps{using System.Collections.Generic;using System.Linq;[StepType(StepTypeAttribute.GetterStep)]public class ConstValue : OutputStep<double>{[UnityEngine.SerializeField]double _value;public override double Run() {UnityEngine.Debug.Log($"{nameof(ConstValue)} = {_value}");return _value;}public override IEnumerable<IPort> Inputs => Enumerable.Empty<IPort>();public override string ToString() {return $"Const {_value}";}public override bool IsValid => true;}}
fileFormatVersion: 2guid: e3d165e54b32e6d4cbcc75c5b0cf7a68MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects.Steps{using System.Collections.Generic;[StepType(StepTypeAttribute.GetterStep)]public class ConeAreaGet : OutputStep<IAreaOfEffect>{[UnityEngine.SerializeField]SinglePort<double> _radius = new() {DisplayName = "Radius"};[UnityEngine.SerializeField]SinglePort<double> _angle = new() {DisplayName = "Angle"};public override IEnumerable<IPort> Inputs {get {yield return _radius;yield return _angle;}}public override string ToString() => "Cone AOE";public override bool IsValid => true;public override IAreaOfEffect Run() {return new ConeArea() {Radius = (float)_radius.Node.Run(),Angle = (float)_angle.Node.Run(),};}}}
fileFormatVersion: 2guid: 05c74f9724c88004184e3074359893c6MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
namespace TagFighter.Effects.Steps{using System.Collections.Generic;[StepType(StepTypeAttribute.GetterStep)]public class CircleAreaGet : OutputStep<IAreaOfEffect>{[UnityEngine.SerializeField]SinglePort<double> _radius = new() {DisplayName = "Radius"};public override IEnumerable<IPort> Inputs {get {yield return _radius;}}public override string ToString() => "Circle AOE";public override IAreaOfEffect Run() {return new CircleArea() {Radius = 1,};}public override bool IsValid => true;}}
%YAML 1.1%TAG !u! tag:unity3d.com,2011:--- !u!114 &-7959464409387560310MonoBehaviour:m_ObjectHideFlags: 0m_CorrespondingSourceObject: {fileID: 0}m_PrefabInstance: {fileID: 0}m_PrefabAsset: {fileID: 0}m_GameObject: {fileID: 0}m_Enabled: 1m_EditorHideFlags: 0m_Script: {fileID: 11500000, guid: bfce83ffec5b7b14a85ec10ce4e193ab, type: 3}m_Name: ZipStepm_EditorClassIdentifier:Guid: cc7813f0-37d2-44d5-8409-72ef640e47fa_in:Nodes:- {fileID: 3470929320567701890}- {fileID: 6806886774387728050}Operator:rid: 2346208790267035649references:version: 2RefIds:- rid: 2346208790267035649type: {class: Average, ns: TagFighter.Effects.Operators, asm: Assembly-CSharp}--- !u!114 &-7310262609116166999MonoBehaviour:m_ObjectHideFlags: 0m_CorrespondingSourceObject: {fileID: 0}m_PrefabInstance: {fileID: 0}m_PrefabAsset: {fileID: 0}m_GameObject: {fileID: 0}m_Enabled: 1m_EditorHideFlags: 0m_Script: {fileID: 11500000, guid: 844f2211c024f444f876e89a2321a495, type: 3}m_Name: PawnSetterStepm_EditorClassIdentifier:Position: {x: 677, y: 380}Guid: 92f81450-a6df-4e4d-912d-de9cedc42ad1_in:Node: {fileID: 8736044092964998325}Resource:typeId: 30a0ddc8-3fcf-496a-b578-81dbf333c7ec--- !u!114 &-5841318192641428412MonoBehaviour:m_ObjectHideFlags: 0m_CorrespondingSourceObject: {fileID: 0}m_PrefabInstance: {fileID: 0}m_PrefabAsset: {fileID: 0}m_GameObject: {fileID: 0}m_Enabled: 1m_EditorHideFlags: 0m_Script: {fileID: 11500000, guid: c5c37fc06b3d0ad45b6305eb93d68542, type: 3}m_Name: ContextGetterStepm_EditorClassIdentifier:Guid: 938c11fc-01ec-42e1-9011-b345df3cb2cfResource:typeId: da13f1c1-4359-4eb9-b969-7db50afe6423Register:typeId: 47eae1ff-9ff5-41fd-b08e-0f674b3848e6--- !u!114 &-4619482893835212189MonoBehaviour:m_ObjectHideFlags: 0m_CorrespondingSourceObject: {fileID: 0}m_PrefabInstance: {fileID: 0}m_PrefabAsset: {fileID: 0}m_GameObject: {fileID: 0}m_Enabled: 1m_EditorHideFlags: 0m_Script: {fileID: 11500000, guid: 95498ab7ed723494fb6b3c000a0f1c35, type: 3}m_Name: ContextSetterStepm_EditorClassIdentifier:Position: {x: 674, y: 386}Guid: dec38d9a-6558-4198-8cf5-88d7803084f4_in:Node: {fileID: -1307332316521653590}Resource:typeId: da13f1c1-4359-4eb9-b969-7db50afe6423Register:typeId: 47eae1ff-9ff5-41fd-b08e-0f674b3848e6--- !u!114 &-3229689855982809186MonoBehaviour:m_ObjectHideFlags: 0m_CorrespondingSourceObject: {fileID: 0}m_PrefabInstance: {fileID: 0}m_PrefabAsset: {fileID: 0}m_GameObject: {fileID: 0}m_Enabled: 1m_EditorHideFlags: 0m_Script: {fileID: 11500000, guid: 4585b32f67d50794cad3c057a0f091a1, type: 3}m_Name: 270aa0c6-4d02-473f-9070-b95a78891ce1m_EditorClassIdentifier:Guid: 270aa0c6-4d02-473f-9070-b95a78891ce1_nodes:- {fileID: -1327748367674765543}- {fileID: -5841318192641428412}- {fileID: 8736044092964998325}- {fileID: -7310262609116166999}--- !u!114 &-1327748367674765543MonoBehaviour:m_ObjectHideFlags: 0m_CorrespondingSourceObject: {fileID: 0}m_PrefabInstance: {fileID: 0}m_PrefabAsset: {fileID: 0}m_GameObject: {fileID: 0}m_Enabled: 1m_EditorHideFlags: 0m_Script: {fileID: 11500000, guid: ae5625888aa1b3849a0329320febbfa9, type: 3}m_Name: EffectEndNodem_EditorClassIdentifier:Position: {x: 865.8, y: 380}Guid: 990a7b12-86b0-4294-aafd-6ce87974a50f_in:Node: {fileID: -7310262609116166999}--- !u!114 &-1307332316521653590MonoBehaviour:m_ObjectHideFlags: 0m_CorrespondingSourceObject: {fileID: 0}m_PrefabInstance: {fileID: 0}m_PrefabAsset: {fileID: 0}m_GameObject: {fileID: 0}m_Enabled: 1m_EditorHideFlags: 0m_Script: {fileID: 11500000, guid: ba8070acc07ec7f448050fe3c5cd4278, type: 3}m_Name: FoldStepm_EditorClassIdentifier:Position: {x: 514, y: 386}Guid: 1f753776-c588-4623-be3a-2ecc8a6d28c7_in:Node: {fileID: -7959464409387560310}Operator:rid: 2346208790267035648references:version: 2RefIds:- rid: 2346208790267035648type: {class: Sum, ns: TagFighter.Effects.Operators, asm: Assembly-CSharp}--- !u!114 &-649113059712602876MonoBehaviour:m_ObjectHideFlags: 0m_CorrespondingSourceObject: {fileID: 0}m_PrefabInstance: {fileID: 0}m_PrefabAsset: {fileID: 0}m_GameObject: {fileID: 0}m_Enabled: 1m_EditorHideFlags: 0m_Script: {fileID: 11500000, guid: ae5625888aa1b3849a0329320febbfa9, type: 3}m_Name: EffectEndNodem_EditorClassIdentifier:Guid: 99b827f7-16c4-49d1-8785-f184a8377804_in:Node: {fileID: -4619482893835212189}--- !u!114 &11400000MonoBehaviour:m_ObjectHideFlags: 0m_CorrespondingSourceObject: {fileID: 0}m_PrefabInstance: {fileID: 0}m_PrefabAsset: {fileID: 0}m_GameObject: {fileID: 0}m_Enabled: 1m_EditorHideFlags: 0m_Script: {fileID: 11500000, guid: c4299eb7af6691f4a82ce6a25fd96981, type: 3}m_Name: TestRunem_EditorClassIdentifier:RuneSprite: {fileID: 0}Rune:DisplayName:Speed: 0ManaCost: 0Effects: []RuneEffects:- {fileID: 4043878867747308653}- {fileID: -3229689855982809186}references:version: 2RefIds: []--- !u!114 &3470929320567701890MonoBehaviour:m_ObjectHideFlags: 0m_CorrespondingSourceObject: {fileID: 0}m_PrefabInstance: {fileID: 0}m_PrefabAsset: {fileID: 0}m_GameObject: {fileID: 0}m_Enabled: 1m_EditorHideFlags: 0m_Script: {fileID: 11500000, guid: 9aba2983d5b304644a37facc1967f5de, type: 3}m_Name: PawnGetterStepm_EditorClassIdentifier:Guid: 81887a16-fba6-48b4-92f4-1df09b3dafb5Resource:typeId: aecc1739-a0df-4013-b430-22d2eb13f0ff--- !u!114 &4043878867747308653MonoBehaviour:m_ObjectHideFlags: 0m_CorrespondingSourceObject: {fileID: 0}m_PrefabInstance: {fileID: 0}m_PrefabAsset: {fileID: 0}m_GameObject: {fileID: 0}m_Enabled: 1m_EditorHideFlags: 0m_Script: {fileID: 11500000, guid: 4585b32f67d50794cad3c057a0f091a1, type: 3}m_Name: 339c67f6-1e2b-49ab-b35e-77b5f316c9fem_EditorClassIdentifier:Guid: 339c67f6-1e2b-49ab-b35e-77b5f316c9fe_nodes:- {fileID: 3470929320567701890}- {fileID: -649113059712602876}- {fileID: -1307332316521653590}- {fileID: -4619482893835212189}- {fileID: -7959464409387560310}- {fileID: 6806886774387728050}--- !u!114 &6806886774387728050MonoBehaviour:m_ObjectHideFlags: 0m_CorrespondingSourceObject: {fileID: 0}m_PrefabInstance: {fileID: 0}m_PrefabAsset: {fileID: 0}m_GameObject: {fileID: 0}m_Enabled: 1m_EditorHideFlags: 0m_Script: {fileID: 11500000, guid: 9aba2983d5b304644a37facc1967f5de, type: 3}m_Name: PawnGetterStepm_EditorClassIdentifier:Guid: ed761976-311d-462d-a7ba-9c67c864a6f7Resource:typeId: da13f1c1-4359-4eb9-b969-7db50afe6423--- !u!114 &8736044092964998325MonoBehaviour:m_ObjectHideFlags: 0m_CorrespondingSourceObject: {fileID: 0}m_PrefabInstance: {fileID: 0}m_PrefabAsset: {fileID: 0}m_GameObject: {fileID: 0}m_Enabled: 1m_EditorHideFlags: 0m_Script: {fileID: 11500000, guid: bb9a9a2cce40a384084a18925a111186, type: 3}m_Name: RepeatStepm_EditorClassIdentifier:Position: {x: 509, y: 380}Guid: 69f99b8e-80a9-476c-ba96-3e7718738e0b_in:Node: {fileID: -5841318192641428412}Position: {x: 105, y: 473}Position: {x: 115, y: 309}Position: {x: 940, y: 386}Position: {x: 229, y: 380}_const: []Position: {x: 336, y: 386}
fileFormatVersion: 2guid: 22e50334a07c426488b84f9da8a0f52dNativeFormatImporter:externalObjects: {}mainObjectFileID: 11400000userData:assetBundleName:assetBundleVariant:
%YAML 1.1%TAG !u! tag:unity3d.com,2011:--- !u!114 &11400000MonoBehaviour:m_ObjectHideFlags: 0m_CorrespondingSourceObject: {fileID: 0}m_PrefabInstance: {fileID: 0}m_PrefabAsset: {fileID: 0}m_GameObject: {fileID: 0}m_Enabled: 1m_EditorHideFlags: 0m_Script: {fileID: 11500000, guid: c4299eb7af6691f4a82ce6a25fd96981, type: 3}m_Name: Test Runem_EditorClassIdentifier:RuneSprite: {fileID: 0}Rune:DisplayName:Speed: 0ManaCost: 0Effects: []RuneEffects:- {fileID: 8640598257864221512}references:version: 2RefIds: []--- !u!114 &8640598257864221512MonoBehaviour:m_ObjectHideFlags: 0m_CorrespondingSourceObject: {fileID: 0}m_PrefabInstance: {fileID: 0}m_PrefabAsset: {fileID: 0}m_GameObject: {fileID: 0}m_Enabled: 1m_EditorHideFlags: 0m_Script: {fileID: 11500000, guid: 4585b32f67d50794cad3c057a0f091a1, type: 3}m_Name: e8e2d732-2b9d-4977-a7a4-3054375ad036m_EditorClassIdentifier:Guid: e8e2d732-2b9d-4977-a7a4-3054375ad036_nodes: []
var onputPortView = outputView.outputContainer.Children().FirstOrDefault(portView => portView is Port) as Port;var inputPortView = inputView.inputContainer.Children().FirstOrDefault(portView => portView.userData == inputPort) as Port;var edge = onputPortView.ConnectTo(inputPortView);
var outputPortView = outputView.outputContainer.Children().FirstOrDefault(portView => portView is Port) as Port;var inputPortView = inputView.inputContainer.Children().FirstOrDefault(portView => (((IPort port, EffectStepNode _))portView.userData).port == inputPort) as Port;var edge = outputPortView.ConnectTo(inputPortView);
var inputPortView = edge.input.userData as IPort<EffectStepNode>;inputPortView?.TryDisconnect(outputNodeView.Node);
(var inputPort, var node) = ((IPort, EffectStepNode))edge.input.userData;Undo.RecordObject(node, "Rune Effect (Delete Edge)");inputPort.TryDisconnect(outputNodeView.Node);
var inputPortView = edge.input.userData as IPort<EffectStepNode>;inputPortView?.TryConnect(outputNodeView.Node);
(var inputPort, var node) = ((IPort, EffectStepNode))edge.input.userData;Undo.RecordObject(node, "Rune Effect (Create Edge)");inputPort.TryConnect(outputNodeView.Node);
if (portType == typeof(SequenceGetterStep)) {return "[]";}else if (portType == typeof(SingleGetterStep)) {return "";}else if (portType == typeof(SetterNode)) {return "()";}return null;
(var subType, var arrayMarker) = portType.IsGenericType && portType.GetGenericTypeDefinition() == typeof(IEnumerable<>) ?(portType.GenericTypeArguments[0], "[]") : (portType, "");return $"({subType.Name}{arrayMarker})";
PortCapacity.Single => InstantiatePort(Orientation.Horizontal, direction, Port.Capacity.Single, port.InnerType),_ => InstantiatePort(Orientation.Horizontal, direction, Port.Capacity.Multi, port.InnerType)
PortCapacity.Single => InstantiatePort(Orientation.Horizontal, direction, Port.Capacity.Single, port.GetType().GenericTypeArguments[0]),_ => InstantiatePort(Orientation.Horizontal, direction, Port.Capacity.Multi, port.GetType().GenericTypeArguments[0])
var portView = Node switch {SequenceGetterStep => InstantiatePort(orientation, direction, Port.Capacity.Single, typeof(SequenceGetterStep)),SingleGetterStep => InstantiatePort(orientation, direction, Port.Capacity.Single, typeof(SingleGetterStep)),SetterNode => InstantiatePort(orientation, direction, Port.Capacity.Single, typeof(SetterNode)),_ => null,};
if (portView != null) {
var genericStepType = Node.GetType().GetSubclassOfRawGeneric(typeof(OutputStep<>));if (genericStepType != null) {var portView = InstantiatePort(orientation, direction, Port.Capacity.Single, genericStepType.GenericTypeArguments[0]);