コード例 #1
0
 public EffectEvent(FormationUnit performer, FormationUnit target, Effect effect, SubEffect subEffect)
 {
     Performer = performer;
     Target    = target;
     Effect    = effect;
     SubEffect = subEffect;
 }
コード例 #2
0
        public void PreloadGroup(string groupName, bool isCommon)
        {
            for (int i = 0; i < this._preloadedEffectGroupNames.Count; i++)
            {
                if (this._preloadedEffectGroupNames[i].groupName == groupName)
                {
                    PreloadGroupEntry local1 = this._preloadedEffectGroupNames[i];
                    local1.refCount++;
                    return;
                }
            }
            this._preloadedEffectGroupNames.Add(new PreloadGroupEntry(groupName, isCommon));
            if (EffectData.HasEffectPattern(groupName))
            {
                foreach (EffectPattern pattern in EffectData.GetEffectGroupPatterns(groupName))
                {
                    for (int j = 0; j < pattern.subEffects.Length; j++)
                    {
                        SubEffect  effect    = pattern.subEffects[j];
                        GameObject prototype = Miscs.LoadResource <GameObject>(EffectData.GetPrefabResPath(effect.prefabPath), BundleType.RESOURCE_FILE);
                        if (prototype != null)
                        {
                            Singleton <EffectManager> .Instance.AddEffectPrototype(effect.prefabPath, prototype);

                            this.PreloadSingleEffect(prototype, isCommon);
                        }
                    }
                }
            }
        }
コード例 #3
0
    private bool IsValidSubEffect(SubEffect subEffect)
    {
        if (subEffect.Type != EffectSubType.StatBuff)
        {
            return(false);
        }

        return(((CombatStatBuffEffect)subEffect).TargetStatus == EffectStatus);
    }
コード例 #4
0
ファイル: EffectQueueShould.cs プロジェクト: casrou/ortoBot
        public void SetSubEffectDurationFromSettings()
        {
            SubEffect subEffect = new SubEffect(1, SubscriptionPlan.Tier1, "test");

            effectQueue.EnqueueSubEffect(subEffect);

            LinkedListNode <Effect> first = effectQueue.First;

            Assert.Equal(settings.subEffectSec * 1000, first.Value.Milliseconds);
        }
コード例 #5
0
 public void Execute()
 {
     if (StackParameter > 0)
     {
         SubEffect.ApplyFused(Performer, Target, Effect, StackParameter);
     }
     else
     {
         SubEffect.ApplyQueued(Performer, Target, Effect);
     }
 }
コード例 #6
0
        private BaseMonoEffect CreateEffectInstanceBySubEffectConfig(SubEffect subEffect, Vector3 initPos, Vector3 initDir, Vector3 initScale, BaseMonoEntity entity)
        {
            Vector3 vector  = initPos;
            Vector3 vector2 = initDir;
            Vector3 vector3 = initScale;

            if (subEffect.onCreate != null)
            {
                subEffect.onCreate.Process(ref vector, ref vector2, ref vector3, entity);
            }
            return(this.CreateEffectInstance(subEffect.prefabPath, true, vector, vector2, initScale));
        }
コード例 #7
0
        /*public EffectQueue(Settings settings)
         * {
         *  this.settings = settings;
         *  //queue = new LinkedList<Effect>();
         * }*/

        public void EnqueueSubEffect(SubEffect se)
        {
            se.Milliseconds = settings.subEffectSec * 1000;

            int    months    = se.Months;
            string subEffect = settings.subEffect1;

            if (months < 3)
            {
                subEffect = settings.subEffect1;
            }
            else if (months >= 3 && months < 6)
            {
                subEffect = settings.subEffect3;
            }
            else if (months >= 6)
            {
                subEffect = settings.subEffect6;
            }
            se.EffectName = subEffect;

            Effect firstSubEffect = this.FirstOrDefault(e => e.EffectType == EffectType.SUB);

            if (firstSubEffect != null)
            {
                // A sub effect is already in the queue
                se.Milliseconds = 1000;
                //firstSubEffect.Milliseconds += 1000;
            }

            BitEffect firstBitEffect = (BitEffect)this.FirstOrDefault(e => e.EffectType == EffectType.BITS);

            if (firstBitEffect != null)
            {
                // A bit effect is already in the queue
                LinkedListNode <Effect> seNode = AddBefore(Find(firstBitEffect), se);
                if (firstBitEffect.Running)
                {
                    //Effect lastSubEffect = this.LastOrDefault(e => e.EffectType == EffectType.SUB);
                    firstBitEffect.Milliseconds = firstBitEffect.RemainingMilliseconds;
                    firstBitEffect.Running      = false;
                    firstBitEffect.Continued    = true;
                    Remove(firstBitEffect);
                    AddAfter(seNode, firstBitEffect);
                }
            }
            else
            {
                AddLast(se);
            }
        }
コード例 #8
0
ファイル: EffectQueueShould.cs プロジェクト: casrou/ortoBot
        public void AddSubEffectsBeforeBitEffects()
        {
            BitEffect bitEffect = new BitEffect("fish", "test", 100);

            effectQueue.EnqueueBitEffect(bitEffect);
            SubEffect subEffect = new SubEffect(1, SubscriptionPlan.Tier1, "test");

            effectQueue.EnqueueSubEffect(subEffect);
            BitEffect bitEffect2 = new BitEffect("fish", "test2", 100);

            effectQueue.EnqueueBitEffect(bitEffect2);

            Assert.Equal(effectQueue.First.Value, subEffect);
        }
コード例 #9
0
ファイル: EffectQueueShould.cs プロジェクト: casrou/ortoBot
        public void AddBitEffectsAfterSubEffects()
        {
            SubEffect subEffect = new SubEffect(1, SubscriptionPlan.Tier1, "test");

            effectQueue.EnqueueSubEffect(subEffect);

            BitEffect bitEffect = new BitEffect("fish", "test", 100);

            effectQueue.EnqueueBitEffect(bitEffect);

            SubEffect subEffect2 = new SubEffect(2, SubscriptionPlan.Tier1, "test2");

            effectQueue.EnqueueSubEffect(subEffect2);

            Assert.Equal(effectQueue.Last.Value, bitEffect);
        }
コード例 #10
0
ファイル: EffectQueueShould.cs プロジェクト: casrou/ortoBot
        public void AddTwoSubEffectsInCorrectOrder()
        {
            SubEffect subEffect = new SubEffect(1, SubscriptionPlan.Tier1, "test");

            effectQueue.EnqueueSubEffect(subEffect);

            SubEffect subEffect2 = new SubEffect(2, SubscriptionPlan.Tier1, "test2");

            effectQueue.EnqueueSubEffect(subEffect2);

            LinkedListNode <Effect> first = effectQueue.First;

            Assert.Equal(first.Value, subEffect);
            LinkedListNode <Effect> second = first.Next;

            Assert.Equal(second.Value, subEffect2);
        }
コード例 #11
0
ファイル: EffectQueueShould.cs プロジェクト: casrou/ortoBot
        public void SetBitEffectAsContinuedIfResumedAfterSubEffect()
        {
            BitEffect bitEffect = new BitEffect("fish", "test", 100);

            bitEffect.Running = true;
            effectQueue.EnqueueBitEffect(bitEffect);

            Assert.False(bitEffect.Continued);

            SubEffect subEffect = new SubEffect(2, SubscriptionPlan.Tier1, "test");

            effectQueue.EnqueueSubEffect(subEffect);

            BitEffect queueEffect = (BitEffect)effectQueue.First(e => e.EffectType == EffectType.BITS);

            Assert.True(queueEffect.Continued);
        }
コード例 #12
0
ファイル: EffectQueueShould.cs プロジェクト: casrou/ortoBot
        public void HandleSubEffectWithRunningBitEffect()
        {
            BitEffect bitEffect = new BitEffect("fish", "test", 100);

            effectQueue.EnqueueBitEffect(bitEffect);

            int duration = bitEffect.Milliseconds; // 60000

            bitEffect.Begin();

            Assert.True(bitEffect.Running);

            SubEffect subEffect = new SubEffect(1, SubscriptionPlan.Tier1, "test");

            effectQueue.EnqueueSubEffect(subEffect);

            LinkedListNode <Effect> sub = effectQueue.First;

            Assert.Equal(sub.Value, subEffect);

            Assert.Equal(sub.Next.Value, bitEffect);
            Assert.InRange(bitEffect.Milliseconds, bitEffect.RemainingMilliseconds, duration + sub.Value.Milliseconds);
        }
コード例 #13
0
ファイル: EffectQueueShould.cs プロジェクト: casrou/ortoBot
        public void ChooseSubEffectFromNumberOfMonths()
        {
            SubEffect subEffect = new SubEffect(1, SubscriptionPlan.Tier1, "test");

            effectQueue.EnqueueSubEffect(subEffect);

            SubEffect subEffect2 = new SubEffect(4, SubscriptionPlan.Tier1, "test2");

            effectQueue.EnqueueSubEffect(subEffect2);

            SubEffect subEffect3 = new SubEffect(7, SubscriptionPlan.Tier1, "test2");

            effectQueue.EnqueueSubEffect(subEffect3);

            LinkedListNode <Effect> first = effectQueue.First;

            Assert.Equal(settings.subEffect1, first.Value.EffectName);
            LinkedListNode <Effect> second = first.Next;

            Assert.Equal(settings.subEffect3, second.Value.EffectName);
            LinkedListNode <Effect> third = second.Next;

            Assert.Equal(settings.subEffect6, third.Value.EffectName);
        }
コード例 #14
0
ファイル: EffectQueueShould.cs プロジェクト: casrou/ortoBot
        public void DecreaseDurationForConsecutiveSubEffects()
        {
            SubEffect subEffect = new SubEffect(1, SubscriptionPlan.Tier1, "test");

            effectQueue.EnqueueSubEffect(subEffect);

            SubEffect subEffect2 = new SubEffect(2, SubscriptionPlan.Tier1, "test2");

            effectQueue.EnqueueSubEffect(subEffect2);

            SubEffect subEffect3 = new SubEffect(2, SubscriptionPlan.Tier1, "test2");

            effectQueue.EnqueueSubEffect(subEffect3);

            LinkedListNode <Effect> first = effectQueue.First;

            Assert.Equal(10000, first.Value.Milliseconds);
            LinkedListNode <Effect> second = first.Next;

            Assert.Equal(1000, second.Value.Milliseconds);
            LinkedListNode <Effect> third = second.Next;

            Assert.Equal(1000, third.Value.Milliseconds);
        }
コード例 #15
0
 public void FuseSelf()
 {
     StackParameter = SubEffect.Fuse(Performer, Target, Effect);
 }
コード例 #16
0
 private bool IsValidSubEffect(SubEffect subEffect)
 {
     return(subEffect.Type == EffectSubType.Capture);
 }