from enum import Enum import time import cv2 as cv from core.Logger import Logger CONNECT_STATUS = Enum('CONNECT_STATUS', ["CONNECTED", "CONNECTING", "DISCONNECTED"]) CLASSES = Enum('CLASSES', ['DRUID', 'MAGE', 'HUNTER', 'PRIEST']) SPE = Enum('SPE', ['MARKSMANSHIP']) PLAYER_STATE = Enum('STATE', ['IDLE', 'FISHING', 'FARMING', 'BG_FARMING']) class Player: def __init__(self, monitor, config) -> None: self.config = config self.isConnected = None self.idleThread = None self.antiAfk = self.config.file["antiAfk"] self.debug = self.config.file["debug"] self.lang = self.config.file["lang"] self.logger = Logger("Player Agent", self.debug) self.state = PLAYER_STATE.IDLE self.monitor = monitor self.playerClass = self.config.file["class"] self.playerSpe = self.config.file["spe"] self.playerName = self.config.file["name"] self.enterWorldButton = cv.imread("assets/" + self.lang + "/menus/EnterWorldButton.jpg", cv.IMREAD_GRAYSCALE) self.reconnectButton = cv.imread("assets/" + self.lang + "/menus/Reconnect.jpg", cv.IMREAD_GRAYSCALE) self.logger.log("Connected with " + self.playerName + " (" + self.playerClass + " - " + self.playerSpe + ")") def connectButtonFound(self, _res): self.isConnected = CONNECT_STATUS.DISCONNECTED self.logger.log("Player not connected attempting to connect...") time.sleep(30) def connectButtonNotFound(self, _res): self.isConnected = CONNECT_STATUS.CONNECTED def checkConnection(self): self.monitor.findMatchAndClickIfAvailable(self.enterWorldButton, self.connectButtonFound, self.connectButtonNotFound) self.monitor.findMatchAndClickIfAvailable(self.reconnectButton, self.connectButtonFound, self.connectButtonNotFound) def changeState(self, newState): self.state = newState