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); } }
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); } }
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); }