Exemple #1
0
 /// <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...");
        }
Exemple #3
0
        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));
        }