Exemple #1
0
            private void RefreshHotbar()
            {
                using (new PerformanceLogger("RefreshHotbar"))
                {
                    var cPlayer = ZetaDia.CPlayer;

                    LastUpdated = DateTime.UtcNow;

                    PassiveSkills = new HashSet <SNOPower>(cPlayer.PassiveSkills);

                    for (int i = 0; i <= 5; i++)
                    {
                        var diaActiveSkill = cPlayer.GetActiveSkillByIndex(i, ZetaDia.Me.SkillOverrideActive);
                        if (diaActiveSkill == null || diaActiveSkill.Power == SNOPower.None)
                        {
                            continue;
                        }

                        var power     = diaActiveSkill.Power;
                        var runeIndex = diaActiveSkill.RuneIndex;

                        var hotbarskill = new HotbarSkill
                        {
                            Power           = diaActiveSkill.Power,
                            Slot            = (HotbarSlot)i,
                            RuneIndex       = runeIndex,
                            HasRuneEquipped = diaActiveSkill.HasRuneEquipped,
                            Skill           = SkillUtils.ById(power),
                            //Charges = ZetaDia.Me.CommonData.GetAttribute<int>(((int)diaActiveSkill.Power << 12) + ((int)ActorAttributeType.SkillCharges & 0xFFF)),
                        };

                        ActivePowers.Add(power);
                        ActiveSkills.Add(hotbarskill);
                        _skillBySNOPower.Add(power, hotbarskill);
                        _skillBySlot.Add((HotbarSlot)i, hotbarskill);



                        if (!DataDictionary.LastUseAbilityTimeDefaults.ContainsKey(power))
                        {
                            DataDictionary.LastUseAbilityTimeDefaults.Add(power, DateTime.MinValue);
                        }

                        if (!AbilityLastUsed.ContainsKey(power))
                        {
                            AbilityLastUsed.Add(power, DateTime.MinValue);
                        }
                    }

                    Logger.Log(TrinityLogLevel.Debug, LogCategory.CacheManagement,
                               "Refreshed Hotbar: ActiveSkills={0} PassiveSkills={1}",
                               ActiveSkills.Count,
                               PassiveSkills.Count);
                }
            }
Exemple #2
0
            public override bool Equals(object obj)
            {
                //Check for null and compare run-time types.
                if (obj == null || GetType() != obj.GetType())
                {
                    return(false);
                }
                HotbarSkill p = (HotbarSkill)obj;

                return(Power == p.Power && RuneIndex == p.RuneIndex);
            }
            private void RefreshHotbar()
            {
                using (new PerformanceLogger("RefreshHotbar"))
                {
                    var cPlayer = ZetaDia.CPlayer;

                    LastUpdated = DateTime.UtcNow;

                    PassiveSkills = new HashSet<SNOPower>(cPlayer.PassiveSkills);

                    for (int i = 0; i <= 5; i++)
                    {
                        var diaActiveSkill = cPlayer.GetActiveSkillByIndex(i, ZetaDia.Me.SkillOverrideActive);
                        if (diaActiveSkill == null)
                            continue;

                        var power = diaActiveSkill.Power;
                        var runeIndex = diaActiveSkill.RuneIndex;

                        var hotbarskill = new HotbarSkill
                        {
                            Power = diaActiveSkill.Power,
                            Slot = (HotbarSlot)i,
                            RuneIndex = runeIndex,
                            HasRuneEquipped = diaActiveSkill.HasRuneEquipped,
                            Skill = SkillUtils.ById(power),
                            //Charges = ZetaDia.Me.CommonData.GetAttribute<int>(((int)diaActiveSkill.Power << 12) + ((int)ActorAttributeType.SkillCharges & 0xFFF)),
                        };

                        ActivePowers.Add(power);
                        ActiveSkills.Add(hotbarskill);
                        _skillBySNOPower.Add(power, hotbarskill);
                        _skillBySlot.Add((HotbarSlot)i, hotbarskill);

                        if (!DataDictionary.LastUseAbilityTimeDefaults.ContainsKey(power))
                            DataDictionary.LastUseAbilityTimeDefaults.Add(power, DateTime.MinValue);

                        if (!AbilityLastUsed.ContainsKey(power))
                            AbilityLastUsed.Add(power, DateTime.MinValue);

                    }

                    Logger.Log(TrinityLogLevel.Debug, LogCategory.CacheManagement,
                        "Refreshed Hotbar: ActiveSkills={0} PassiveSkills={1}",
                        ActiveSkills.Count,
                        PassiveSkills.Count);

                }
            }
Exemple #4
0
        internal void Update()
        {
            Clear();

            if (!ZetaDia.IsInGame || ZetaDia.Me == null || !ZetaDia.Me.IsValid)
            {
                return;
            }

            var cPlayer = ZetaDia.Storage.PlayerDataManager.ActivePlayerData;

            if (cPlayer == null || !cPlayer.IsValid)
            {
                return;
            }

            PassivePowers = new HashSet <SNOPower>(cPlayer.PassiveSkills);

            var activePowers       = new HashSet <SNOPower>();
            var activeHotbarSkills = new List <HotbarSkill>();

            bool isOverrideActive = false;

            try
            {
                isOverrideActive = ZetaDia.Me.SkillOverrideActive;
            }
            catch (ArgumentException)
            {
                // nesox?

                /*[Trinity 2.55.238] Error in OnEnable: System.ArgumentException: An item with the same key has already been added.
                 * at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
                 * at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
                 * at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer)
                 * at Zeta.Game.Internals.FastAttribGroupsEntry.‌‭‌‮‌‪‭‬‌‍‍‫‬‏‌‏‌‏‬‌‪‬‬‭‮()
                 * at Zeta.Game.PerFrameCachedValue`1.get_Value()
                 * at Zeta.Game.Internals.FastAttribGroupsEntry.get_AttributeMapA()
                 * at Zeta.Game.Internals.FastAttribGroupsEntry.‌‭‫‪‮‪‬‮‬‪‮‏​‎‌‎‎‬‫‎‫‮[](Int32 , ACD , & )
                 * at Zeta.Game.Internals.FastAttribGroupsEntry.‏​‏​‍‍‫‏‎‌‬‮​‪‎‏‌‎‮‬‍​‪‮[](Int32 , ACD )
                 * at Zeta.Game.Internals.Actors.ACD.‌‍‬‌‪‍‪‪‭‍‏‭‪‮‬‮‭‫‫‫‭‎‫‫​‪‭‮()
                 * at Zeta.Game.PerFrameCachedValue`1.get_Value()
                 * at Zeta.Game.Internals.Actors.ACD.get_SkillOverrideActive()
                 * at Zeta.Game.Internals.Actors.DiaPlayer.get_SkillOverrideActive()
                 * at Trinity.Framework.Modules.HotbarCache.Update()
                 * at Trinity.Framework.Core.Enable()
                 * at Trinity.TrinityPlugin.OnEnabled()*/
            }

            for (int i = 0; i <= 5; i++)
            {
                var diaActiveSkill = cPlayer.GetActiveSkillByIndex(i, isOverrideActive);
                if (diaActiveSkill == null || diaActiveSkill.Power == SNOPower.None)
                {
                    continue;
                }

                var power     = diaActiveSkill.Power;
                var runeIndex = diaActiveSkill.RuneIndex;

                var hotbarskill = new HotbarSkill
                {
                    Power           = diaActiveSkill.Power,
                    Slot            = (HotbarSlot)i,
                    RuneIndex       = runeIndex,
                    HasRuneEquipped = diaActiveSkill.HasRuneEquipped,
                    Skill           = SkillUtils.GetSkillByPower(power),
                };

                if (!activePowers.Contains(power))
                {
                    activePowers.Add(power);
                    activeHotbarSkills.Add(hotbarskill);
                    _hotbarSkillBySnoPower[power] = hotbarskill;
                    _skillBySlot[(HotbarSlot)i]   = hotbarskill;
                }

                if (!GameData.LastUseAbilityTimeDefaults.ContainsKey(power))
                {
                    GameData.LastUseAbilityTimeDefaults.Add(power, DateTime.MinValue);
                }
            }

            ActivePowers = activePowers;
            ActiveSkills = activeHotbarSkills;

            Core.Logger.Debug(LogCategory.CacheManagement,
                              "Refreshed Hotbar: ActiveSkills={0} PassiveSkills={1}",
                              ActiveSkills.Count,
                              PassivePowers.Count);
        }