/// <summary> /// Returns an appropriately selected TrinityPower and related information /// </summary> /// <returns></returns> internal static TrinityPower AbilitySelector() { using (new PerformanceLogger("AbilitySelector")) { // See if archon just appeared/disappeared, so update the hotbar if (Trinity.ShouldRefreshHotbarAbilities || Trinity.HotbarRefreshTimer.ElapsedMilliseconds > 5000) { PlayerInfoCache.RefreshHotbar(); } // Switch based on the cached character class TrinityPower power = CurrentPower; using (new PerformanceLogger("AbilitySelector.ClassAbility")) { switch (Player.ActorClass) { // Barbs case ActorClass.Barbarian: power = BarbarianCombat.GetPower(); break; case ActorClass.Crusader: power = CrusaderCombat.GetPower(); break; // Monks //case ActorClass.Monk: // power = GetMonkPower(IsCurrentlyAvoiding, UseOOCBuff, UseDestructiblePower); // break; //// Wizards //case ActorClass.Wizard: // power = GetWizardPower(IsCurrentlyAvoiding, UseOOCBuff, UseDestructiblePower); // break; //// Witch Doctors //case ActorClass.Witchdoctor: // power = GetWitchDoctorPower(IsCurrentlyAvoiding, UseOOCBuff, UseDestructiblePower); // break; //// Demon Hunters //case ActorClass.DemonHunter: // power = GetDemonHunterPower(IsCurrentlyAvoiding, UseOOCBuff, UseDestructiblePower); // break; } } // use IEquatable to check if they're equal if (CurrentPower == power) { Logger.Log(TrinityLogLevel.Debug, LogCategory.Behavior, "Keeping {0}", CurrentPower.ToString()); return(CurrentPower); } if (power != null) { Logger.Log(TrinityLogLevel.Debug, LogCategory.Behavior, "Selected new {0}", power.ToString()); return(power); } return(DefaultPower); } }
/// <summary> /// Returns an appropriately selected GilesPower and related information /// </summary> /// <param name="IsCurrentlyAvoiding">Are we currently avoiding?</param> /// <param name="UseOOCBuff">Buff Out Of Combat</param> /// <param name="UseDestructiblePower">Is this for breaking destructables?</param> /// <returns></returns> internal static TrinityPower AbilitySelector(bool IsCurrentlyAvoiding = false, bool UseOOCBuff = false, bool UseDestructiblePower = false) { using (new PerformanceLogger("GilesAbilitySelector")) { // See if archon just appeared/disappeared, so update the hotbar if (ShouldRefreshHotbarAbilities) { GilesPlayerCache.RefreshHotbar(); } // Switch based on the cached character class TrinityPower power = CurrentPower; using (new PerformanceLogger("AbilitySelector.ClassAbility")) { switch (PlayerStatus.ActorClass) { // Barbs case ActorClass.Barbarian: power = GetBarbarianPower(IsCurrentlyAvoiding, UseOOCBuff, UseDestructiblePower); break; // Monks case ActorClass.Monk: power = GetMonkPower(IsCurrentlyAvoiding, UseOOCBuff, UseDestructiblePower); break; // Wizards case ActorClass.Wizard: power = GetWizardPower(IsCurrentlyAvoiding, UseOOCBuff, UseDestructiblePower); break; // Witch Doctors case ActorClass.WitchDoctor: power = GetWitchDoctorPower(IsCurrentlyAvoiding, UseOOCBuff, UseDestructiblePower); break; // Demon Hunters case ActorClass.DemonHunter: power = GetDemonHunterPower(IsCurrentlyAvoiding, UseOOCBuff, UseDestructiblePower); break; } } // use IEquatable to check if they're equal if (CurrentPower == power) { DbHelper.Log(LogCategory.Behavior, "Keeping {0}", CurrentPower.ToString()); return(CurrentPower); } else if (power != null) { DbHelper.Log(LogCategory.Behavior, "Selected new {0}", power.ToString()); return(power); } else { return(defaultPower); } } }