private void CheckForStuffToStart(bool isWorldLoaded) { if (!isWorldLoaded) { if (WowDataAdapter?.ObjectUpdatesEnabled == true) { WowDataAdapter.StopObjectUpdates(); } if (StateMachine?.Enabled == true) { StateMachine.Stop(); } if (WowEventAdapter?.Enabled == true) { WowEventAdapter.Stop(); } } else { if (WowDataAdapter?.ObjectUpdatesEnabled == false) { WowDataAdapter.StartObjectUpdates(); } if (StateMachine?.Enabled == false) { StateMachine.Start(); } if (WowEventAdapter?.Enabled == false) { WowEventAdapter.Start(); } } }
public void Detach() { StateMachine?.Stop(); WowEventAdapter?.Stop(); WowActionExecutor?.Stop(); WowPathfindingClient?.Disconnect(); WowDataAdapter?.StopObjectUpdates(); Attached = 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 Execute() { if (!IsUnitValid(ActiveTarget)) { ActiveTarget = SelectNewTarget(); AmeisenBotLogger.Instance.Log($"[{WowActionExecutor?.ProcessId.ToString("X" , CultureInfo.InvariantCulture.NumberFormat)}]\tNew ActiveTarget is: {ActiveTarget?.Name}"); return; } WowPosition positionToMoveTo = MovementProvider?.GetPositionToMoveTo(WowDataAdapter.ActivePlayerPosition, WowDataAdapter.GetPosition(ActiveTarget.BaseAddress)) ?? new WowPosition(); WowActionExecutor.MoveToPosition(positionToMoveTo); WowUnit player = (WowUnit)WowDataAdapter.ObjectManager.GetWowObjectByGuid(WowDataAdapter.PlayerGuid); if (ActiveTarget?.Guid != 0 && player.TargetGuid != ActiveTarget.Guid) { WowActionExecutor.TargetGuid(ActiveTarget.Guid); } WowActionExecutor.AttackUnit(ActiveTarget); /*SpellStrategy?.GetSpellToCast(player, ActiveTarget);*/ }