added mining ui mode

This commit is contained in:
2022-10-16 15:57:08 +02:00
parent df525a4215
commit 08d1370001
2 changed files with 189 additions and 0 deletions

185
Mine.py Normal file
View File

@@ -0,0 +1,185 @@
from config_file import UserConfigs
import cv2 as cv
from utils import dig_point, check_for_ok_button
from window_capture import WindowCapture
from vision import Vision
from dig_overlay import DiggingOverlay
class Mine:
def __init__(self, overlay):
self.overlay = overlay
self.config = UserConfigs()
self.capture_window = WindowCapture(None, "screen_conf", self.config)
# initialize the StunVision class
self.vision_stun = Vision()
self.dig_overlay = DiggingOverlay(self.config)
self.level = 1
self.width = 32
self.depth = 24
self.plot_size = 45
self.DIG_TIME = 100
self.run_target = int(overlay.energy_use.get())
self.run_counter = 0
def reset(self):
self.level = 1
self.plot_size = 45
self.DIG_TIME = 100
def execute_main_loop(self):
if self.run_target == 1:
self.execute_loop()
elif self.run_target == 2:
self.execute_loop()
if self.overlay.run_mode == 'stopped':
return
dig_point(290, 100, 200)
self.execute_loop()
def execute_loop(self):
while True:
if self.overlay.run_mode == 'paused':
cv.waitKey(10)
self.dig_overlay.show_window()
continue
elif self.overlay.run_mode == 'stopped':
break
self.dig_overlay.hide_window()
if self.level >= 28:
break
if self.level == 23:
self.DIG_TIME = 800
if self.level == 26:
self.DIG_TIME = 1800
if self.level <= 10:
self.plot_size = self.plot_size - 1
elif self.level % 2 == 0:
self.plot_size = self.plot_size - 1
p1 = int((self.config.returnDiggingWindowPos2()[0] / 2) + self.config.returnDiggingWindowPos2()[2])
p2 = int((self.config.returnDiggingWindowPos2()[1] / 2) + self.config.returnDiggingWindowPos2()[3])
# start 705 , 564 -> click
# move L D -> click
# move U , U , R, R , D , D , L , L
# move L D
# move U , U , U , U , R, R , R, R, D, D, D, D, L, L, L , L
dig_point(p1, p2, self.DIG_TIME)
# cv.circle(screenshot, (p1, p2), 7, (0, 255, 0), -1)
i = 0
for e in range(2, self.width, 2):
i = i + 1
tp1 = p1 - (i * self.plot_size)
tp2 = p2 + (i * self.plot_size)
for f in range(0, e, 1):
# up click
tp2 = tp2 - self.plot_size
if tp2 >= self.config.returnDiggingWindowPos2()[1] + (self.plot_size / 2):
continue
if tp2 <= self.config.returnDiggingWindowPos2()[3] + (self.plot_size / 2):
continue
'''
x = int(tp1 - (plot_size / 2))
y = int(tp2 - ((e * plot_size) - (plot_size / 2)))
w = plot_size
h = plot_size * e
capture_win_lanes = WindowCapture(None, "lanes", None, (w, h, x+w, y+h))
screenshot = capture_win_lanes.get_screenshot()
needlew = cv.imread("test1.jpg", cv.IMREAD_UNCHANGED)
res = vision_stun.find(needlew, screenshot, 0.9, 1)
if len(res) >= 1:
break
#vision_stun.draw_rectangles(needlew, res)
#cv.imshow("screenshot", needlew)
#cv.waitKey(150)
# ul[0], ul[1], plot_size, plotsize*e
# ll -> tp1 - plot/2
# -> tp2 + plot/2
# ul -> tp1 - plot/2
# -> tp2 - e*plot - plot/2
# lr -> tp1 + plot/2
# -> tp2 - plot/2
# ur -> tp1 + plot/2
# -> tp2 - e*plot - plot/2
'''
dig_point(tp1, tp2, self.DIG_TIME)
# cv.circle(screenshot, (tp1, tp2), 7, (255, 0, 255), -1)
# cv.imshow("screenshot", screenshot)
# cv.waitKey(150)
check_for_ok_button(self.capture_window, self.vision_stun, self.config)
if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused':
break
tp1 = p1 - (i * self.plot_size)
tp2 = p2 - (i * self.plot_size)
for g in range(0, e, 1):
# right click
tp1 = tp1 + self.plot_size
if tp2 <= self.config.returnDiggingWindowPos2()[3] + (self.plot_size / 2):
continue
# ll -> tp1 - plot/2
# -> tp2 + plot/2
# ul -> tp1 - plot/2
# -> tp2 - plot/2
# lr -> tp1 + e*plot + plot/2
# -> tp2 + plot/2
# ur -> tp1 + e*plot + plot/2
# -> tp2 - plot/2
dig_point(tp1, tp2, self.DIG_TIME)
# cv.circle(screenshot, (tp1, tp2), 7, (127, 0, 255), -1)
# cv.imshow("screenshot", screenshot)
# cv.waitKey(150)
check_for_ok_button(self.capture_window, self.vision_stun, self.config)
if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused':
break
tp1 = p1 + (i * self.plot_size)
tp2 = p2 - (i * self.plot_size)
for r in range(0, e, 1):
# down click
tp2 = tp2 + self.plot_size
if tp2 >= self.config.returnDiggingWindowPos2()[1] + (self.plot_size / 2):
continue
if tp2 <= self.config.returnDiggingWindowPos2()[3] + (self.plot_size / 2):
continue
dig_point(tp1, tp2, self.DIG_TIME)
# cv.circle(screenshot, (tp1, tp2), 7, (255, 0, 127), -1)
# cv.imshow("screenshot", screenshot)
# cv.waitKey(150)
check_for_ok_button(self.capture_window, self.vision_stun, self.config)
if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused':
break
tp1 = p1 + (i * self.plot_size)
tp2 = p2 + (i * self.plot_size)
for u in range(0, e, 1):
# left click
tp1 = tp1 - self.plot_size
if tp2 >= self.config.returnDiggingWindowPos2()[1] + (self.plot_size / 2):
continue
dig_point(tp1, tp2, self.DIG_TIME)
# cv.circle(screenshot, (tp1, tp2), 7, (0, 0, 255), -1)
# cv.imshow("screenshot", screenshot)
# cv.waitKey(150)
check_for_ok_button(self.capture_window, self.vision_stun, self.config)
if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused':
break
if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused':
break
self.level = self.level + 1

View File

@@ -6,6 +6,7 @@ from crops import Crops
from farm import Farm from farm import Farm
from magic import Magic from magic import Magic
from craft import Craft from craft import Craft
from Mine import Mine
def run(): def run():
@@ -49,6 +50,9 @@ def run():
elif overlay.rb_int.get() == 5: elif overlay.rb_int.get() == 5:
craft = Craft(overlay) craft = Craft(overlay)
craft.execute_main_loop() craft.execute_main_loop()
elif overlay.rb_int.get() == 6:
mine = Mine(overlay)
mine.execute_main_loop()
if __name__ == "__main__": if __name__ == "__main__":
run() run()