示例#1
0
        public virtual bool Remove(AbstractEffect effect)
        {
            int index = -1;

            lock (m_effects)
            {
                index = m_effects.IndexOf(effect);
                if (index < 0)
                {
                    return(false);
                }
                m_effects.RemoveAt(index);
            }

            if (index != -1)
            {
                effect.OnRemoved(m_owner);
                OnEffectsChanged(effect);
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#2
0
        public virtual bool Remove(AbstractEffect effect)
        {
            int       num = -1;
            ArrayList effects;

            Monitor.Enter(effects = this.m_effects);
            try
            {
                num = this.m_effects.IndexOf(effect);
                if (num < 0)
                {
                    bool result = false;
                    return(result);
                }
                this.m_effects.RemoveAt(num);
            }
            finally
            {
                Monitor.Exit(effects);
            }
            if (num != -1)
            {
                effect.OnRemoved(this.m_owner);
                this.OnEffectsChanged(effect);
                return(true);
            }
            return(false);
        }
示例#3
0
        public virtual bool Remove(AbstractEffect effect)
        {
            int       index = -1;
            ArrayList effects;

            Monitor.Enter(effects = this.m_effects);
            bool result;

            try
            {
                index = this.m_effects.IndexOf(effect);
                if (index < 0)
                {
                    result = false;
                    return(result);
                }
                this.m_effects.RemoveAt(index);
            }
            finally
            {
                Monitor.Exit(effects);
            }
            if (index != -1)
            {
                effect.OnRemoved(this.m_owner);
                this.OnEffectsChanged(effect);
                result = true;
            }
            else
            {
                result = false;
            }
            return(result);
        }
示例#4
0
        public virtual bool Add(AbstractEffect effect)
        {
            bool result;

            if (this.CanAddEffect(effect.TypeValue))
            {
                ArrayList effects;
                Monitor.Enter(effects = this.m_effects);
                try
                {
                    this.m_effects.Add(effect);
                }
                finally
                {
                    Monitor.Exit(effects);
                }
                effect.OnAttached(this.m_owner);
                this.OnEffectsChanged(effect);
                result = true;
            }
            else
            {
                if (effect.TypeValue == 9 && this.m_owner is SimpleBoss)
                {
                    this.m_owner.State = 0;
                }
                result = false;
            }
            return(result);
        }
示例#5
0
 public virtual void OnEffectsChanged(AbstractEffect changedEffect)
 {
     if (this.m_changesCount <= 0)
     {
         this.UpdateChangedEffects();
     }
 }
示例#6
0
 public virtual void OnEffectsChanged(AbstractEffect changedEffect)
 {
     if (m_changesCount > 0)
     {
         return;
     }
     UpdateChangedEffects();
 }
示例#7
0
 public void StopAllEffect()
 {
     if (this.m_effects.Count > 0)
     {
         AbstractEffect[] array = new AbstractEffect[this.m_effects.Count];
         this.m_effects.CopyTo(array);
         AbstractEffect[] array2 = array;
         for (int i = 0; i < array2.Length; i++)
         {
             AbstractEffect abstractEffect = array2[i];
             abstractEffect.Stop();
         }
         this.m_effects.Clear();
     }
 }
示例#8
0
 public void StopAllEffect()
 {
     if (this.m_effects.Count > 0)
     {
         if (!this.m_owner.SyncAtTime)
         {
             this.m_owner.SyncAtTime = true;
         }
         AbstractEffect[] temp_effects = new AbstractEffect[this.m_effects.Count];
         this.m_effects.CopyTo(temp_effects);
         AbstractEffect[] array = temp_effects;
         for (int i = 0; i < array.Length; i++)
         {
             AbstractEffect effect = array[i];
             effect.Stop();
         }
         this.m_effects.Clear();
     }
 }
示例#9
0
        public virtual bool Remove(AbstractEffect effect)
        {
            int index = -1;
            lock (m_effects)
            {
                index = m_effects.IndexOf(effect);
                if (index < 0)
                    return false;
                m_effects.RemoveAt(index);
            }

            if (index != -1)
            {
                effect.OnRemoved(m_owner);
                OnEffectsChanged(effect);
                return true;
            }
            else
            {
                return false;
            }
        }
示例#10
0
        public virtual bool Add(AbstractEffect effect)
        {
            if (CanAddEffect(effect.TypeValue))
            {
                lock (m_effects)
                {
                    m_effects.Add(effect);
                }

                effect.OnAttached(m_owner);

                OnEffectsChanged(effect);

                return true;
            }

            if (effect.TypeValue == (int)eEffectType.IceFronzeEffect && m_owner is SimpleBoss)
            {
                m_owner.State = 0;
            }

            return false;
        }
示例#11
0
        public virtual bool Add(AbstractEffect effect)
        {
            if (CanAddEffect(effect.TypeValue))
            {
                lock (m_effects)
                {
                    m_effects.Add(effect);
                }

                effect.OnAttached(m_owner);

                OnEffectsChanged(effect);

                return(true);
            }

            if (effect.TypeValue == (int)eEffectType.IceFronzeEffect && m_owner is SimpleBoss)
            {
                m_owner.State = 0;
            }

            return(false);
        }
示例#12
0
 public virtual void OnEffectsChanged(AbstractEffect changedEffect)
 {
     if (m_changesCount > 0)
         return;
     UpdateChangedEffects();
 }
示例#13
0
 public void AddEffect(AbstractEffect effect, int delay)
 {
     m_game.AddAction(new LivingDelayEffectAction(this, effect, delay));
 }
 public LivingDelayEffectAction(Living living,AbstractEffect effect,int delay)
     :base(delay)
 {
     m_effect = effect;
     m_living = living;
 }