/// <summary> /// This method equips better item if they are determined /// "better" by the supplied IItemComparator. /// /// Default Comparator is only looking for a better ItemLevel /// </summary> public bool CompareItems(Item currentItem, Item newItem, IItemComparator itemComparator = null) { if (itemComparator == null) { itemComparator = new BasicItemLevelComparator(); } if (currentItem == null || itemComparator.Compare(newItem, currentItem)) { return(true); } return(false); }
public void Attach(IWowActionExecutor wowActionExecutor, IPathfindingClient wowPathfindingClient, IWowEventAdapter wowEventAdapter, IMovementProvider movementProvider, ISpellStrategy spellStrategy, IItemComparator itemComparator = null) { Attached = true; WowPathfindingClient = wowPathfindingClient; if (itemComparator == null) { itemComparator = new BasicItemLevelComparator(WowDataAdapter); } WowDataAdapter?.StartObjectUpdates(); AmeisenBotLogger.Instance.Log($"[{Process?.Id.ToString("X" , CultureInfo.InvariantCulture.NumberFormat)}]\tStarted ObjectUpdates..."); WowActionExecutor = wowActionExecutor; WowActionExecutor.IsWorldLoaded = true; AmeisenBotLogger.Instance.Log($"[{Process?.Id.ToString("X" , CultureInfo.InvariantCulture.NumberFormat)}]\tStarted ActionExecutor..."); WowEventAdapter = wowEventAdapter; //WowEventAdapter?.Start(); AmeisenBotLogger.Instance.Log($"[{Process?.Id.ToString("X" , CultureInfo.InvariantCulture.NumberFormat)}]\tStarted EventAdapter..."); WowEventAdapter?.Subscribe(WowEvents.PARTY_INVITE_REQUEST, OnPartyInvitation); WowEventAdapter?.Subscribe(WowEvents.LOOT_OPENED, OnLootWindowOpened); WowEventAdapter?.Subscribe(WowEvents.RESURRECT_REQUEST, OnResurrectRequest); WowEventAdapter?.Subscribe(WowEvents.CONFIRM_SUMMON, OnSummonRequest); WowEventAdapter?.Subscribe(WowEvents.LOOT_BIND_CONFIRM, OnConfirmBindOnPickup); WowEventAdapter?.Subscribe(WowEvents.CONFIRM_LOOT_ROLL, OnConfirmBindOnPickup); WowEventAdapter?.Subscribe(WowEvents.READY_CHECK, OnReadyCheck); WowEventAdapter?.Subscribe(WowEvents.DELETE_ITEM_CONFIRM, OnConfirmDeleteItem); WowEventAdapter?.Subscribe(WowEvents.ITEM_PUSH, OnNewItemReceived); WowEventAdapter?.Subscribe(WowEvents.COMBAT_LOG_EVENT_UNFILTERED, OnCombatLogEvent); StateMachine = new AmeisenBotStateMachine(WowDataAdapter, WowActionExecutor, WowPathfindingClient, movementProvider, spellStrategy); StateMachine?.Start(); AmeisenBotLogger.Instance.Log($"[{Process?.Id.ToString("X" , CultureInfo.InvariantCulture.NumberFormat)}]\tStarted StateMachine..."); CharacterManager = new WowCharacterManager(WowDataAdapter, WowActionExecutor, itemComparator); AmeisenBotLogger.Instance.Log($"[{Process?.Id.ToString("X" , CultureInfo.InvariantCulture.NumberFormat)}]\tStarted CharacterManager..."); CharacterManager?.UpdateFullCharacter(); AmeisenBotLogger.Instance.Log($"[{Process?.Id.ToString("X" , CultureInfo.InvariantCulture.NumberFormat)}]\tUpdated Character..."); AmeisenBotLogger.Instance.Log($"[{Process?.Id.ToString("X" , CultureInfo.InvariantCulture.NumberFormat)}]\tAmeisenBot attached..."); }
public void CompareItemsTest() { TestWowDataAdapter dataAdapter = new TestWowDataAdapter(); BasicItemLevelComparator basicItemLevelComparator = new BasicItemLevelComparator(dataAdapter); RawItem rawItem1 = new RawItem { cooldownEnd = "0", cooldownStart = "0", count = "1", curDurability = "100", equiplocation = "INVSLOT_HEAD", id = "4712", level = "85", link = "...", maxDurability = "100", maxStack = "1", minLevel = "60", name = "Ultra Rubbish Bin", quality = "2", sellprice = "1250", subtype = "Plate", type = "armor" }; RawItem rawItem2 = new RawItem { cooldownEnd = "0", cooldownStart = "0", count = "1", curDurability = "100", equiplocation = "INVSLOT_HEAD", id = "4713", level = "65", link = "...", maxDurability = "100", maxStack = "1", minLevel = "40", name = "Ultra Rubbish Cowl", quality = "2", sellprice = "1250", subtype = "Cloth", type = "armor" }; RawItem rawItem3 = new RawItem { cooldownEnd = "0", cooldownStart = "0", count = "1", curDurability = "100", equiplocation = "INVSLOT_HEAD", id = "4714", level = "5", link = "...", maxDurability = "100", maxStack = "1", minLevel = "40", name = "Rubbish Cowl", quality = "2", sellprice = "1250", subtype = "Cloth", type = "armor" }; IItem resultItem1 = ItemFactory.BuildSpecificItem(rawItem1); IItem resultItem2 = ItemFactory.BuildSpecificItem(rawItem2); IItem resultItem3 = ItemFactory.BuildSpecificItem(rawItem3); Assert.IsInstanceOfType(resultItem1, typeof(ArmorItem)); Assert.IsInstanceOfType(resultItem2, typeof(ArmorItem)); Assert.IsInstanceOfType(resultItem3, typeof(ArmorItem)); Assert.IsFalse(basicItemLevelComparator.CompareItems(resultItem1, resultItem3)); Assert.IsTrue(basicItemLevelComparator.CompareItems(resultItem2, resultItem3)); }