76 lines
2.0 KiB
Python
76 lines
2.0 KiB
Python
"""Module providing a fishing agent."""
|
|
|
|
import os
|
|
from threading import Thread
|
|
import time
|
|
import cv2 as cv
|
|
import numpy as np
|
|
import pyautogui
|
|
from core.Logger import Logger
|
|
|
|
class FishingAgent:
|
|
def __init__(self, monitor) -> None:
|
|
self.logger = Logger("Fishing Agent")
|
|
self.monitor = monitor
|
|
assetPath = os.path.join(
|
|
os.path.dirname(os.path.realpath(__file__)),
|
|
"..\\..\\assets"
|
|
)
|
|
self.fishingBobberImg = cv.imread(os.path.join(assetPath,"fishing","Bobber.png"), cv.IMREAD_GRAYSCALE)
|
|
self.fishingThread = None
|
|
|
|
def castLure(self):
|
|
self.agentLog("Casting Lure.")
|
|
# pyautogui.press('1')
|
|
time.sleep(1)
|
|
self.findLure()
|
|
|
|
def findLure(self):
|
|
if self.mainAgent.currImg is not None:
|
|
self.agentLog("Searching for Bobber.")
|
|
cv.imshow("Bobber", self.fishingBobber)
|
|
|
|
lureLoc = cv.matchTemplate(self.mainAgent.currImg, self.fishingBobber, cv.TM_CCORR_NORMED)
|
|
lureLocArray = np.array(lureLoc)
|
|
|
|
minVal, maxVal, minLoc, maxLoc = cv.minMaxLoc(lureLocArray)
|
|
self.moveToLure(maxLoc)
|
|
else:
|
|
print("No curr img")
|
|
|
|
def moveToLure(self, maxLoc):
|
|
if maxLoc:
|
|
self.agentLog("Moving to Bobber.")
|
|
pyautogui.moveTo(maxLoc)
|
|
|
|
def watchLure(self):
|
|
self.agentLog("Waiting for fish...")
|
|
|
|
def pullLine(self):
|
|
self.agentLog("Pulling line!")
|
|
|
|
def test(self):
|
|
while True:
|
|
time.sleep(1)
|
|
self.logger.log("###")
|
|
self.monitor.findMatch(self.fishingBobberImg)
|
|
|
|
def run(self):
|
|
if self.monitor.screenshot is None:
|
|
self.logger.log("Screenshot capture not found...")
|
|
return
|
|
self.logger.log("Starting fishing thread in 3 seconds...")
|
|
time.sleep(3)
|
|
|
|
# print("Switching to fishing hotbar (hotbar 4)")
|
|
# pyautogui.keyDown('shift')
|
|
# pyautogui.press('4')
|
|
# pyautogui.keyUp('shift')
|
|
# time.sleep(1)
|
|
|
|
self.fishingThread = Thread(
|
|
target=self.castLure,
|
|
args=(),
|
|
name="fishing thread",
|
|
daemon=True)
|
|
self.fishingThread.start() |