示例#1
0
        public WowCharacterManager(IWowDataAdapter wowDataAdapter, IWowActionExecutor wowActionExecutor, IItemComparator itemComparator)
        {
            CurrentEquipment = new Dictionary <EquipmentSlot, IItem>();

            WowDataAdapter    = wowDataAdapter;
            WowActionExecutor = wowActionExecutor;
            ItemComparator    = itemComparator;
        }
示例#2
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);
 }
示例#3
0
        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...");
        }