VUAVVMQEUYSXHBIUJHGRX237EZFT5MCB73ZKVWMGJDRHYZH4XZKAC UZML3EYZI5YSVYMADFBG3HBQUQAAYVLAS4R2BIR7BOVWQKIHE4IAC DTKCWM4J7PFNWAAES3RZHQGDA6PTDNX4TZVOXAKF5V7LCZBI3XUAC IFN4UDLTN7TD26CPONDCRHW4G3DJEXEYV62ZHZC4QD7DKJ76JAEQC TKLR43RQKXB47J2YVVSJ7CAZAJZYOKXSDUXAUOVQMFUN73KZVUVQC XRWOXKR3MD3O73SH33CWRUYMTS6KVWGN6U2AIKNVNGHN37MY7UYQC JC4YSSPLLFZVYO7TPBHS6RGGEYAW3I3LF36QK7A3WDDDTM6P3LJAC E6EFTMXHFWSSFW2JIKT2FM62L2GDNKLZ5B5ZVI4QGIZCZFFAMWWQC L4TF5YRRHYUPEAF72DU2GO3PBK5CXXHPYZB5SX3NRCUN6AQELH2QC RJXFDWT7OWTX3DQ7SBJFK6M66AQ2LGGIO32QD6G7VTJJS7U2R7XQC FQZF2IY4T2F7KEVSHMFID35WNAU55CRRDF6XEXZB7PYZH26UGYPQC R475KN7MR3OG7EBLVNOO7QRIKXDGY2PIDXXV3HW4KBD5QM7B5OJQC UBKE7KXKA35CBKZLD366TUQXK72GYT7RLPEMMLCR4XC3TLMXD7EQC YI7M5RWLKUG256YXK6CGZKUPDCNHREU2PGV344L2IV24FF5PHG3AC ROTMK5LNNK7T5YXVOMUODVMCQWIHPZYOME4WDIAMZJ4VXD7SOEBAC 2RUZ7TTRT7SMZT2V7YWUCCTJJXNRT2LNJ2QBBVN4RMREMOGMGMHQC 426KOWJWOX7ZE24UIJCIHRI5KUZYO6NIGK7KC2HOONFDX242UYIQC CXWTEVMUJI7NXVWZKXTQOOIVCMPCXUEB3Q3SGIYYHDVRA3JHNBBAC CD5FF75KTOBTMVMTMCKMR6F5DFKOF26I5K43ITNHGBI3ZAZHA4RAC // protected void OnEnable() {// if (rune != null) {// rune.Populate();// }// }// protected void OnDisable() {// if (rune != null) {// rune.Clear();// }// }// public void OnBeforeSerialize() {// }// public void OnAfterDeserialize() {// rune.Populate();// }
using System.Collections.Generic;using TagFighter.Resources;using UnityEngine;using System;namespace TagFighter.Effects.RemoveResource{public class RemoveResourceEffect<TResource, TUnit> : IEffectwhere TResource : Resource<TUnit>where TUnit : IUnit{[SerializeField] float Multiplicative = 1f;[SerializeField] Unit<TUnit> Flat;[SerializeField] bool MultiplicativeBeforeFlat;readonly string _effectName = $"Remove({typeof(TResource).Name})Effect";}}}[Serializable] public sealed class RemovePainEffect : RemoveResourceEffect<Pain, PainUnit> { }[Serializable] public sealed class RemoveFatigueEffect : RemoveResourceEffect<Fatigue, FatigueUnit> { }[Serializable] public sealed class RemoveBlueTagEffect : RemoveResourceEffect<BlueTag, BlueTagUnit> { }[Serializable] public sealed class RemoveRedTagEffect : RemoveResourceEffect<RedTag, RedTagUnit> { }[Serializable] public sealed class RemoveGreenTagEffect : RemoveResourceEffect<GreenTag, GreenTagUnit> { }public void Apply(EffectContext context, IEnumerable<Transform> affected) {Debug.Log($"{_effectName} : Apply");var resource = context.Resource<TResource, TUnit>();resource.Added = MultiplicativeBeforeFlat?resource.Added / Multiplicative - Flat :(resource.Added - Flat) * Multiplicative;
using System.Collections.Generic;using System.Linq;using TagFighter.Resources;using UnityEngine;using System;namespace TagFighter.Effects{public class CountResourceEffect<TResource, TUnit> : IEffectwhere TResource : Resource<TUnit>where TUnit : IUnit{[SerializeField] bool FriendOrFoeOff;readonly string _effectName = $"Count({typeof(TResource).Name})Effect";}}namespace CountResource{}}[Serializable] public sealed class CountPainEffect : CountResourceEffect<Pain, PainUnit> { }[Serializable] public sealed class CountFatigueEffect : CountResourceEffect<Fatigue, FatigueUnit> { }[Serializable] public sealed class CountBlueTagEffect : CountResourceEffect<BlueTag, BlueTagUnit> { }[Serializable] public sealed class CountRedTagEffect : CountResourceEffect<RedTag, RedTagUnit> { }[Serializable] public sealed class CountGreenTagEffect : CountResourceEffect<GreenTag, GreenTagUnit> { }var amount = affected.Select(transform => transform.GetComponent<TResource>()).Where(resource => resource != null).Select(resource => resource.Current).Aggregate((Unit<TUnit>)0, (sum, next) => sum += next);var resource = context.Resource<TResource, TUnit>();resource.Current += amount;Debug.Log($"{_effectName}: {resource.Current}");public void Apply(EffectContext context, IEnumerable<Transform> affected) {Debug.Log($"{_effectName} : Apply");
fileFormatVersion: 2guid: abc49c2353e5fa840822c32bde63848eMonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
using System.Collections.Generic;using System.Linq;using TagFighter.Resources;using UnityEngine;using System;namespace TagFighter.Effects{public class ApplyResourceEffect<TResource, TUnit> : IEffectwhere TResource : Resource<TUnit>where TUnit : IUnit{readonly string _effectName = $"Apply({typeof(TResource).Name})Effect";foreach (var resource in affected.Select(target => target.GetComponent<TResource>()).Where(resource => resource != null)) {}}}namespace ApplyResource{}}[Serializable] public sealed class ApplyPainEffect : ApplyResourceEffect<Pain, PainUnit> { }[Serializable] public sealed class ApplyFatigueEffect : ApplyResourceEffect<Fatigue, FatigueUnit> { }[Serializable] public sealed class ApplyBlueTagEffect : ApplyResourceEffect<BlueTag, BlueTagUnit> { }[Serializable] public sealed class ApplyRedTagEffect : ApplyResourceEffect<RedTag, RedTagUnit> { }[Serializable] public sealed class ApplyGreenTagEffect : ApplyResourceEffect<GreenTag, GreenTagUnit> { }resource.Current += context.Resource<TResource, TUnit>().Current;public void Apply(EffectContext context, IEnumerable<Transform> affected) {Debug.Log($"{_effectName} : Apply");
fileFormatVersion: 2guid: 7a03184999e76224183028f42dca8218MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
using System.Collections.Generic;using TagFighter.Resources;using UnityEngine;namespace TagFighter.Effects.AddResource{public class AddResourceEffect<TResource, TUnit> : IEffectwhere TResource : Resource<TUnit>where TUnit : IUnit{[SerializeField] Unit<TUnit> Flat;[SerializeField] bool MultiplicativeBeforeFlat;readonly string _effectName = $"Add({typeof(TResource).Name})Effect";}}}[Serializable] public sealed class AddPainEffect : AddResourceEffect<Pain, PainUnit> { }[Serializable] public sealed class AddFatigueEffect : AddResourceEffect<Fatigue, FatigueUnit> { }[Serializable] public sealed class AddBlueTagEffect : AddResourceEffect<BlueTag, BlueTagUnit> { }[Serializable] public sealed class AddRedTagEffect : AddResourceEffect<RedTag, RedTagUnit> { }[Serializable] public sealed class AddGreenTagEffect : AddResourceEffect<GreenTag, GreenTagUnit> { }public void Apply(EffectContext context, IEnumerable<Transform> affected) {Debug.Log($"{_effectName} : Apply");var resource = context.Resource<TResource, TUnit>();resource.Added = MultiplicativeBeforeFlat?resource.Added * Multiplicative + Flat :(resource.Added + Flat) * Multiplicative;[SerializeField] float Multiplicative = 1f;using System;
fileFormatVersion: 2guid: 25786a3bdf537c14ca2b19b61c9451e5MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
using System.Collections.Generic;using TagFighter.Resources;using UnityEngine;namespace TagFighter.Effects{public class AccumulateResourceByResourceEffect<TResourceDest, TUnitDest, TResourceBy, TUnitBy> : IEffectwhere TResourceDest : Resource<TUnitDest>where TUnitDest : IUnitwhere TResourceBy : Resource<TUnitBy>where TUnitBy : IUnit{[SerializeField] float Multiplier = 1f;readonly string _effectName = $"Accumulate({typeof(TResourceDest).Name})By({typeof(TResourceBy).Name})Effect";}}namespace AccumulatePainByResource{public class AccumulatePainByResource<TResourceBy, TUnitBy> : AccumulateResourceByResourceEffect<Pain, PainUnit, TResourceBy, TUnitBy>where TResourceBy : Resource<TUnitBy>where TUnitBy : IUnit { }}namespace AccumulateFatigueByResource{public class AccumulateFatigueByResource<TResourceBy, TUnitBy> : AccumulateResourceByResourceEffect<Fatigue, FatigueUnit, TResourceBy, TUnitBy>where TResourceBy : Resource<TUnitBy>where TUnitBy : IUnit { }}namespace AccumulateBlueTagByResource{public class AccumulateBlueTagByResource<TResourceBy, TUnitBy> : AccumulateResourceByResourceEffect<BlueTag, BlueTagUnit, TResourceBy, TUnitBy>where TResourceBy : Resource<TUnitBy>where TUnitBy : IUnit { }}namespace AccumulateRedTagByResource{public class AccumulateRedTagByResource<TResourceBy, TUnitBy> : AccumulateResourceByResourceEffect<RedTag, RedTagUnit, TResourceBy, TUnitBy>where TResourceBy : Resource<TUnitBy>where TUnitBy : IUnit { }}namespace AccumulateGreenTagByResource{public class AccumulateGreeTagByResource<TResourceBy, TUnitBy> : AccumulateResourceByResourceEffect<GreenTag, GreenTagUnit, TResourceBy, TUnitBy>where TResourceBy : Resource<TUnitBy>where TUnitBy : IUnit { }}}[Serializable] public sealed class AccumulateGreenTagByPainTagEffect : AccumulateGreeTagByResource<Pain, PainUnit> { }[Serializable] public sealed class AccumulateGreenTagByFatigueEffect : AccumulateGreeTagByResource<Fatigue, FatigueUnit> { }[Serializable] public sealed class AccumulateGreenTagByBlueTagEffect : AccumulateGreeTagByResource<BlueTag, BlueTagUnit> { }[Serializable] public sealed class AccumulateGreenTagByRedTagEffect : AccumulateGreeTagByResource<RedTag, RedTagUnit> { }[Serializable] public sealed class AccumulateGreenTagByGreenTagEffect : AccumulateGreeTagByResource<GreenTag, GreenTagUnit> { }[Serializable] public sealed class AccumulateRedTagByPainTagEffect : AccumulateRedTagByResource<Pain, PainUnit> { }[Serializable] public sealed class AccumulateRedTagByFatigueEffect : AccumulateRedTagByResource<Fatigue, FatigueUnit> { }[Serializable] public sealed class AccumulateRedTagByBlueTagEffect : AccumulateRedTagByResource<BlueTag, BlueTagUnit> { }[Serializable] public sealed class AccumulateRedTagByRedTagEffect : AccumulateRedTagByResource<RedTag, RedTagUnit> { }[Serializable] public sealed class AccumulateRedTagByGreenTagEffect : AccumulateRedTagByResource<GreenTag, GreenTagUnit> { }[Serializable] public sealed class AccumulateBlueTagByPainTagEffect : AccumulateBlueTagByResource<Pain, PainUnit> { }[Serializable] public sealed class AccumulateBlueTagByFatigueTagEffect : AccumulateBlueTagByResource<Fatigue, FatigueUnit> { }[Serializable] public sealed class AccumulateBlueTagByBlueTagEffect : AccumulateBlueTagByResource<BlueTag, BlueTagUnit> { }[Serializable] public sealed class AccumulateBlueTagByRedTagEffect : AccumulateBlueTagByResource<RedTag, RedTagUnit> { }[Serializable] public sealed class AccumulateBlueTagByGreenTagEffect : AccumulateBlueTagByResource<GreenTag, GreenTagUnit> { }[Serializable] public sealed class AccumulateFatigueByPainTagEffect : AccumulateFatigueByResource<Pain, PainUnit> { }[Serializable] public sealed class AccumulateFatigueByFatigueTagEffect : AccumulateFatigueByResource<Fatigue, FatigueUnit> { }[Serializable] public sealed class AccumulateFatigueByBlueTagEffect : AccumulateFatigueByResource<BlueTag, BlueTagUnit> { }[Serializable] public sealed class AccumulateFatigueByRedTagEffect : AccumulateFatigueByResource<RedTag, RedTagUnit> { }[Serializable] public sealed class AccumulateFatigueByGreenTagEffect : AccumulateFatigueByResource<GreenTag, GreenTagUnit> { }[Serializable] public sealed class AccumulatePainByPainTagEffect : AccumulatePainByResource<Pain, PainUnit> { }[Serializable] public sealed class AccumulatePainByFatigueTagEffect : AccumulatePainByResource<Fatigue, FatigueUnit> { }[Serializable] public sealed class AccumulatePainByBlueTagEffect : AccumulatePainByResource<BlueTag, BlueTagUnit> { }[Serializable] public sealed class AccumulatePainByRedTagEffect : AccumulatePainByResource<RedTag, RedTagUnit> { }[Serializable] public sealed class AccumulatePainByGreenTagEffect : AccumulatePainByResource<GreenTag, GreenTagUnit> { }var resourceBy = context.Resource<TResourceBy, TUnitBy>();var resourceDest = context.Resource<TResourceDest, TUnitDest>();var unitlessResourceBy = Multiplier * (int)resourceBy.Current;Debug.Log($"Accumulating {unitlessResourceBy} into {typeof(TResourceDest).Name}.Current");resourceDest.Current = (Unit<TUnitDest>)unitlessResourceBy;public void Apply(EffectContext context, IEnumerable<Transform> affected) {Debug.Log($"{_effectName} : Apply");using System;
fileFormatVersion: 2guid: 37edc62be8be3c948bc0af17d8e2b776folderAsset: yesDefaultImporter:externalObjects: {}userData:assetBundleName:assetBundleVariant:
fileFormatVersion: 2guid: b4da8f05d5efdda4b8694bf014767f5cMonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
using System;using System.Collections;using System.Collections.Generic;using TagFighter.Resources;using UnityEngine;namespace TagFighter.Effects{public interface IResourceTypeAccessor{public int Get(EffectContext context, IEnumerable<Transform> affected, IResourceAccessor accessor);public void Set(EffectContext context, IEnumerable<Transform> affected, IResourceAccessor accessor, int value);}public class ResourceTypeAccessor<TResource, TUnit> : IResourceTypeAccessorwhere TResource : Resource<TUnit>where TUnit : IUnit{public int Get(EffectContext context, IEnumerable<Transform> affected, IResourceAccessor accessor) =>(int)accessor.Get<TResource, TUnit>(context, affected);public void Set(EffectContext context, IEnumerable<Transform> affected, IResourceAccessor accessor, int value) =>accessor.Set<TResource, TUnit>(context, affected, (Unit<TUnit>)value);public override string ToString() => $"{typeof(TResource).Name}";}namespace ResourceTypeAccessors{[Serializable] public sealed class PainType : ResourceTypeAccessor<Pain, PainUnit> { }[Serializable] public sealed class FatigueType : ResourceTypeAccessor<Fatigue, FatigueUnit> { }[Serializable] public sealed class BlueTagType : ResourceTypeAccessor<BlueTag, BlueTagUnit> { }[Serializable] public sealed class RedTagType : ResourceTypeAccessor<RedTag, RedTagUnit> { }[Serializable] public sealed class GreenTagType : ResourceTypeAccessor<GreenTag, GreenTagUnit> { }}}
fileFormatVersion: 2guid: 2613dc39643536e4fa85751c0dd5e47fMonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
using System;using System.Collections.Generic;using System.Linq;using TagFighter.Resources;using UnityEngine;namespace TagFighter.Effects{[Serializable]public class PawnCurrent : IResourceAccessor{public Unit<TUnit> Get<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected)where TResource : Resource<TUnit>where TUnit : IUnit {var sum = affected.Select(transform => transform.GetComponent<TResource>()).Where(resource => resource != null).Select(resource => resource.Current).Aggregate((Unit<TUnit>)0, (sum, next) => sum += next);return sum;}public void Set<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected, Unit<TUnit> value)where TResource : Resource<TUnit>where TUnit : IUnit {foreach (var resource in affected.Select(target => target.GetComponent<TResource>()).Where(resource => resource != null)) {resource.Current = value;}}public override string ToString() => "Pawn.Current";}}
fileFormatVersion: 2guid: a50932add4e43a644b34e62fe4620e3fMonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
using System.Collections;using System.Collections.Generic;using TagFighter.Resources;using UnityEngine;namespace TagFighter.Effects{public interface IResourceAccessor{public Unit<TUnit> Get<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected)where TResource : Resource<TUnit>where TUnit : IUnit;public void Set<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected, Unit<TUnit> value)where TResource : Resource<TUnit>where TUnit : IUnit;}}
fileFormatVersion: 2guid: 613ebb0ac357f94439288db3235398a3MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
using System;using System.Collections.Generic;using TagFighter.Resources;using UnityEngine;namespace TagFighter.Effects{[Serializable]public class ContextCurrent : IResourceAccessor{public Unit<TUnit> Get<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected)where TResource : Resource<TUnit>where TUnit : IUnit => context.Resource<TResource, TUnit>().Current;public void Set<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected, Unit<TUnit> value)where TResource : Resource<TUnit>where TUnit : IUnit => context.Resource<TResource, TUnit>().Current = value;public override string ToString() => "Context.Current";}[Serializable]public class ContextAdded : IResourceAccessor{public Unit<TUnit> Get<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected)where TResource : Resource<TUnit>where TUnit : IUnit => context.Resource<TResource, TUnit>().Added;public void Set<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected, Unit<TUnit> value)where TResource : Resource<TUnit>where TUnit : IUnit => context.Resource<TResource, TUnit>().Added = value;public override string ToString() => "Context.Added";}[Serializable]public class ContextRemoved : IResourceAccessor{public Unit<TUnit> Get<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected)where TResource : Resource<TUnit>where TUnit : IUnit => context.Resource<TResource, TUnit>().Removed;public void Set<TResource, TUnit>(EffectContext context, IEnumerable<Transform> affected, Unit<TUnit> value)where TResource : Resource<TUnit>where TUnit : IUnit => context.Resource<TResource, TUnit>().Removed = value;public override string ToString() => "Context.Removed";}}
fileFormatVersion: 2guid: 25786a3bdf537c14ca2b19b61c9451e5MonoImporter:externalObjects: {}serializedVersion: 2defaultReferences: []executionOrder: 0icon: {instanceID: 0}userData:assetBundleName:assetBundleVariant:
using System;using System.Collections.Generic;using CareBoo.Serially;using TagFighter.Resources;using UnityEngine;namespace TagFighter.Effects{[Serializable]public class AccumulateResourceEffect : IEffect{[SerializeReference, ShowSerializeReference]public IResourceTypeAccessor ByResource;[SerializeReference, ShowSerializeReference]public IResourceAccessor By;[SerializeReference, ShowSerializeReference]public IResourceTypeAccessor DestResource;[SerializeReference, ShowSerializeReference]public IResourceAccessor Dest;[SerializeField] float Multiplier = 1f;[SerializeField] float Addend = 0f;public void Apply(EffectContext context, IEnumerable<Transform> affected) {string _effectName = $"Accumulate({DestResource})By({ByResource})Effect";Debug.Log($"{_effectName} : Apply");var resourceBy = (ByResource != null)? ByResource.Get(context, affected, By) : 0;var unitlessResourceBy = (Multiplier * resourceBy) + Addend;Debug.Log($"Accumulating {unitlessResourceBy} into {DestResource}.{Dest}");DestResource.Set(context, affected, Dest, (int)unitlessResourceBy);}}}
- rid: 7043444504695668745type: {class: CountBlueTagEffect, ns: TagFighter.Effects.CountResource, asm: Assembly-CSharp}data:FriendOrFoeOff: 0- rid: 7043444504695668746type: {class: AccumulatePainByBlueTagEffect, ns: TagFighter.Effects.AccumulatePainByResource,asm: Assembly-CSharp}data:Multiplier: 10- rid: 7043444504695668748type: {class: DelayedEffect, ns: TagFighter.Effects, asm: Assembly-CSharp}- rid: 7043444504695668749type: {class: ApplyPainEffect, ns: TagFighter.Effects.ApplyResource, asm: Assembly-CSharp}- rid: 7043444504695668753type: {class: DelayedEffect, ns: TagFighter.Effects, asm: Assembly-CSharp}
- rid: 7043444504695668771type: {class: DelayedEffect, ns: TagFighter.Effects, asm: Assembly-CSharp}- rid: 7043444504695668775type: {class: AccumulateResourceEffect, ns: TagFighter.Effects, asm: Assembly-CSharp}data:ByResource:rid: 7043444504695668776By:rid: 7043444504695668777DestResource:rid: 7043444504695668778Dest:rid: 7043444504695668779Multiplier: 5Addend: 0- rid: 7043444504695668776type: {class: BlueTagType, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444504695668777type: {class: PawnCurrent, ns: TagFighter.Effects, asm: Assembly-CSharp}- rid: 7043444504695668778type: {class: PainType, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444504695668779type: {class: ContextCurrent, ns: TagFighter.Effects, asm: Assembly-CSharp}- rid: 7043444504695668780type: {class: AccumulateResourceEffect, ns: TagFighter.Effects, asm: Assembly-CSharp}data:ByResource:rid: 7043444504695668781By:rid: 7043444504695668782DestResource:rid: 7043444504695668784Dest:rid: 7043444504695668785Multiplier: 2Addend: 0- rid: 7043444504695668781type: {class: PainType, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444504695668782type: {class: ContextCurrent, ns: TagFighter.Effects, asm: Assembly-CSharp}- rid: 7043444504695668784type: {class: FatigueType, ns: TagFighter.Effects.ResourceTypeAccessors, asm: Assembly-CSharp}- rid: 7043444504695668785type: {class: PawnCurrent, ns: TagFighter.Effects, asm: Assembly-CSharp}