예제 #1
0
        public void UpdateBitEffectDurationOnAdd()
        {
            int       bits      = 100;
            BitEffect bitEffect = new BitEffect("fish", "test", bits)
            {
            };

            Assert.Equal(0, bitEffect.Milliseconds);
            effectQueue.EnqueueBitEffect(bitEffect);
            Assert.Equal(bits * settings.bitsToSecRatio * 1000, bitEffect.Milliseconds);
        }
예제 #2
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);
            }
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        public void AddTwoBitEffectsInCorrectOrder()
        {
            BitEffect bitEffect = new BitEffect("fish", "test", 100);

            effectQueue.EnqueueBitEffect(bitEffect);

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

            effectQueue.EnqueueBitEffect(bitEffect2);

            LinkedListNode <Effect> first = effectQueue.First;

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

            Assert.Equal(second.Value, bitEffect2);
        }
예제 #6
0
        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);
        }
예제 #7
0
        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);
        }
예제 #8
0
        public void EnqueueBitEffect(BitEffect bitEffect)
        {
            bitEffect.Milliseconds = (int)(bitEffect.BitsUsed * settings.bitsToSecRatio * 1000);

            AddLast(bitEffect);
        }