示例#1
0
 /// <summary>Removes auras based on their interrupt flag.</summary>
 /// <param name="interruptFlags">the interrupt flags to remove the auras by</param>
 public void RemoveByFlag(AuraInterruptFlags interruptFlags)
 {
     foreach (Aura visibleAura in this.m_visibleAuras)
     {
         if (visibleAura != null &&
             (visibleAura.Spell.AuraInterruptFlags & interruptFlags) != AuraInterruptFlags.None)
         {
             visibleAura.Remove(false);
         }
     }
 }
示例#2
0
 /// <summary>
 /// Removes auras based on their interrupt flag.
 /// </summary>
 /// <param name="interruptFlags">the interrupt flags to remove the auras by</param>
 public void RemoveByFlag(AuraInterruptFlags interruptFlags)
 {
     //Aura[] auras = m_nonPassiveAuras.ToArray();
     foreach (var aura in m_visibleAuras)
     {
         if (aura != null && (aura.Spell.AuraInterruptFlags & interruptFlags) != 0)
         {
             aura.Remove(false);
         }
     }
 }
            internal void RemoveAurasWithInterrupt(AuraInterruptFlags flags)
            {
                if (!HasAuraAnyInterrupt(flags))
                {
                    return;
                }

                for (int i = 0; i < interruptableAuraApplications.Count; i++)
                {
                    if (interruptableAuraApplications[i].Aura.AuraInfo.InterruptFlags.HasAnyFlag(flags))
                    {
                        tempAuraApplications.Add(interruptableAuraApplications[i]);
                    }
                }

                foreach (AuraApplication auraApplicationToRemove in tempAuraApplications)
                {
                    RemoveAuraWithApplication(auraApplicationToRemove, AuraRemoveMode.Interrupt);
                }

                tempAuraApplications.Clear();
            }
            private void HandleInterruptableAura(AuraApplication auraApplication, bool added)
            {
                if (!auraApplication.Aura.AuraInfo.HasInterruptFlags)
                {
                    return;
                }

                if (added)
                {
                    interruptableAuraApplications.Add(auraApplication);
                    auraInterruptFlags |= auraApplication.Aura.AuraInfo.InterruptFlags;
                }
                else
                {
                    interruptableAuraApplications.Remove(auraApplication);

                    auraInterruptFlags = 0;
                    foreach (AuraApplication interruptableAura in interruptableAuraApplications)
                    {
                        auraInterruptFlags |= interruptableAura.Aura.AuraInfo.InterruptFlags;
                    }
                }
            }
 internal bool HasAuraAnyInterrupt(AuraInterruptFlags flag) => auraInterruptFlags.HasAnyFlag(flag);
示例#6
0
 public static bool HasAnyFlag(this AuraInterruptFlags baseFlags, AuraInterruptFlags flag)
 {
     return((baseFlags & flag) != 0);
 }
示例#7
0
 public static bool HasTargetFlag(this AuraInterruptFlags baseFlags, AuraInterruptFlags flag)
 {
     return((baseFlags & flag) == flag);
 }
示例#8
0
		/// <summary>
		/// Removes auras based on their interrupt flag.
		/// </summary>
		/// <param name="interruptFlags">the interrupt flags to remove the auras by</param>
		public void RemoveByFlag(AuraInterruptFlags interruptFlags)
		{
			//Aura[] auras = m_nonPassiveAuras.ToArray();
			foreach (var aura in m_visibleAuras)
			{
				if (aura != null && (aura.Spell.AuraInterruptFlags & interruptFlags) != 0)
				{
					aura.Remove(true);
				}
			}
		}