public void Reset() { AmeisenLogger.Instance.Log("JobEngine", $"Resetting JobEngine", LogLevel.Verbose); JobEngineStatus = JobEngineStatus.None; CurrentNodeAt = 0; MailboxMode = false; MailboxItemQueue.Clear(); }
private void SendItemMails(List <string> items, string receiver, WowGameobject mailbox) { if (!MailboxMode) { foreach (string item in items) { MailboxItemQueue.Enqueue(item); } MailboxMode = true; AmeisenLogger.Instance.Log("JobEngine", $"Entering MailboxMode", LogLevel.Verbose); } // open mailbox WowInterface.HookManager.WowObjectOnRightClick(mailbox); Task.Delay(1000).GetAwaiter().GetResult(); AmeisenLogger.Instance.Log("JobEngine", $"Rightclicked Mailbox", LogLevel.Verbose); JobEngineStatus = JobEngineStatus.Sending; // send stuff to character WowInterface.HookManager.SendItemMailToCharacter(MailboxItemQueue.Peek(), receiver); Task.Delay(1000).GetAwaiter().GetResult(); AmeisenLogger.Instance.Log("JobEngine", $"Sent Mail with \"{MailboxItemQueue.Peek()}\" to \"{receiver}\"", LogLevel.Verbose); // remove item from mail list if we have no units left in our bags WowInterface.CharacterManager.Inventory.Update(); if (!WowInterface.CharacterManager.Inventory.Items.Any(e => e.Name.ToUpper() == MailboxItemQueue.Peek().ToUpper())) { AmeisenLogger.Instance.Log("JobEngine", $"Finished sending \"{MailboxItemQueue.Peek()}\"", LogLevel.Verbose); MailboxItemQueue.Dequeue(); } // continue if ther are no item left to be checked MailboxMode = MailboxItemQueue.Count > 0; if (!MailboxMode) { AmeisenLogger.Instance.Log("JobEngine", $"Leaving MailboxMode", LogLevel.Verbose); } }