コード例 #1
0
        internal static void TrackSpellOnUnit(int acdGuid, SNOPower power)
        {
            try
            {
                float duration = 0;

                if (CachedTrackedSpells.ContainsKey(power))
                {
                    HotbarSkills skill = HotbarSkills.AssignedSkills.FirstOrDefault(p => p.Power == power);
                    TrackedSpell spell = TrackedSpells.FirstOrDefault(s => s.Equals(new TrackedSpell(power, skill.RuneIndex)));
                    if (spell != null)
                    {
                        duration = spell.Duration;
                    }
                }

                if (duration > 0)
                {
                    //Logger.Log(TrinityLogLevel.Info, LogCategory.UserInformation, "Tracking unit {0} with power {1} for duration {2:0.00}", acdGuid, power, duration);
                    TrackSpellOnUnit(new SpellTracker()
                    {
                        ACDGuid    = acdGuid,
                        Power      = power,
                        Expiration = DateTime.UtcNow.AddMilliseconds(duration)
                    });
                }
            }
            catch (Exception ex)
            {
                Logger.LogNormal("Exception in TrackSpellOnUnit: {0}", ex.ToString());
            }
        }
コード例 #2
0
 /// <summary>
 /// Updates the cached tracked spells. Call only after updating HotbarSkills.
 /// </summary>
 internal static void RefreshCachedSpells()
 {
     CachedTrackedSpells.Clear();
     foreach (HotbarSkills skill in HotbarSkills.AssignedSkills)
     {
         if (TrackedSpells.Any(s => s.Power == skill.Power && (s.RuneIndex == skill.RuneIndex || s.RuneIndex == -999)))
         {
             CachedTrackedSpells.Add(skill.Power, skill.RuneIndex);
         }
     }
 }
コード例 #3
0
ファイル: SpellTracker.cs プロジェクト: honorbuddy/Trinity
        internal static void TrackSpellOnUnit(int AcdId, SNOPower power)
        {
            try
            {
                if (AcdId == 0)
                {
                    return;
                }

                float duration = -1;
                if (Core.Hotbar.ActivePowers.Contains(power))
                {
                    // Can't track a spell that isn't equipped
                    var skill = Core.Hotbar.GetHotbarSkill(power);
                    var spell = TrackedSpells.FirstOrDefault(s => s.Equals(new TrackedSpell(power, skill.RuneIndex)) || s.Equals(new TrackedSpell(power, AnyRune)));
                    if (spell != null)
                    {
                        duration = spell.Duration;
                    }
                }

                var anyRune = TrackedSpells.FirstOrDefault(s => s.Power == power && s.RuneIndex == AnyRune);

                if (duration == -1 && anyRune != null)
                {
                    duration = anyRune.Duration;
                }

                if (duration > 0)
                {
                    Core.Logger.Verbose(LogCategory.Behavior, "Tracking unit {0} with power {1} for duration {2:0.00}", AcdId, power, duration);
                    TrackSpellOnUnit(new SpellTracker()
                    {
                        AcdId      = AcdId,
                        Power      = power,
                        Expiration = DateTime.UtcNow.AddMilliseconds(duration)
                    });
                }
            }
            catch (Exception ex)
            {
                Core.Logger.Log("Exception in TrackSpellOnUnit: {0}", ex.ToString());
            }
        }