refactoring

bug fix equip multi
This commit is contained in:
2022-10-22 12:05:45 +02:00
parent 4bfa9aa408
commit f1bde80746
4 changed files with 71 additions and 65 deletions

2
.idea/misc.xml generated
View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (lc_py_b)" project-jdk-type="Python SDK" />
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (lc-py-b)" project-jdk-type="Python SDK" />
</project>

View File

@@ -126,7 +126,8 @@ class Crops(GameBase):
color_list = [PURPLE, BLUE, RED, YELLOW, GREEN]
random.shuffle(color_list)
self.set_color_order(color_list)
self.current_strategy = random.choice([RAINBOW_STRATEGY, BIGBOMB_STRATEGY, ROCKET_STRATEGY, BOMB_STRATEGY])
self.current_strategy = random.choice([RAINBOW_STRATEGY, BIGBOMB_STRATEGY,
ROCKET_STRATEGY, BOMB_STRATEGY])
self.reset_counter = 0
return
else:
@@ -256,7 +257,8 @@ class Crops(GameBase):
self.execute_move(res_dic[key])
break
def convert_moves_to_dic_by_color(self, reserve_moves):
@staticmethod
def convert_moves_to_dic_by_color(reserve_moves):
dic = {}
for color, move in reserve_moves:
if color in dic:
@@ -295,7 +297,8 @@ class Crops(GameBase):
pydirectinput.mouseUp()
cv.waitKey(50)
def get_directions_array(self, current_x, current_y):
@staticmethod
def get_directions_array(current_x, current_y):
left_x = current_x
left_y = current_y - 1

View File

@@ -21,16 +21,15 @@ HSV_DEFAULT = HsvFilter(0, 0, 0, 179, 255, 255, 0, 0, 0, 0)
class Equipment(GameBase):
needles = []
hsvs = []
tresholds = []
masks = []
emitters = []
def __init__(self, overlay):
super().__init__(overlay)
self.needles = []
self.hsvs = []
self.tresholds = []
self.masks = []
self.emitters = []
# initialize the StunWindowCapture class
self.capture_window = WindowCapture(None, "equip", self.config)
@@ -38,49 +37,7 @@ class Equipment(GameBase):
self.SPAWN_COUNT = int(overlay.spawn_use.get())
self.ENERGY_TO_USE = int(overlay.energy_use.get())
if self.EMITTER_TO_USE == EMITTER_MULTI:
self.emitters.append(EMITTER_RING)
self.emitters.append(EMITTER_WAND)
self.emitters.append(EMITTER_SWORD)
self.emitters.append(EMITTER_AMU)
self.emitters.append(EMITTER_STAFF)
else:
self.emitters.append(self.EMITTER_TO_USE)
for emitter in self.emitters:
if emitter == EMITTER_MUSH:
self.include_books()
self.include_mushs()
self.include_pots()
self.include_bags()
elif emitter == EMITTER_AMU:
self.include_books()
self.include_amus()
self.include_bags()
elif emitter == EMITTER_MAIN:
self.include_books()
self.include_chests()
self.include_keys()
self.include_pots()
self.include_bags()
self.include_coins()
self.include_runes()
elif emitter == EMITTER_SWORD:
self.include_books()
self.include_swords()
self.include_bags()
elif emitter == EMITTER_STAFF:
self.include_books()
self.include_staffs()
self.include_bags()
elif emitter == EMITTER_RING:
self.include_books()
self.include_rings()
self.include_bags()
elif emitter == EMITTER_WAND:
self.include_books()
self.include_wands()
self.include_bags()
self.init_emitters_to_use()
self.c_needle = cv.imread("equip/chests/chest_4_32.jpg", cv.IMREAD_UNCHANGED)
self.c_mask = cv.imread("equip/chests/chest_4_32-mask.png", cv.IMREAD_COLOR)
@@ -90,14 +47,55 @@ class Equipment(GameBase):
self.energy_counter = 0
def init_emitters_to_use(self):
self.emitters.clear()
if self.EMITTER_TO_USE == EMITTER_MULTI:
self.emitters.append(EMITTER_RING)
self.emitters.append(EMITTER_WAND)
self.emitters.append(EMITTER_SWORD)
self.emitters.append(EMITTER_AMU)
self.emitters.append(EMITTER_STAFF)
else:
self.emitters.append(self.EMITTER_TO_USE)
def init_needles_for_emitter_to_use(self, emitter):
self.needles.clear()
self.hsvs.clear()
self.tresholds.clear()
self.masks.clear()
self.include_books()
self.include_bags()
if emitter == EMITTER_MUSH:
self.include_mushs()
self.include_pots()
elif emitter == EMITTER_AMU:
self.include_amus()
elif emitter == EMITTER_MAIN:
self.include_chests()
self.include_keys()
self.include_pots()
self.include_coins()
self.include_runes()
elif emitter == EMITTER_SWORD:
self.include_swords()
elif emitter == EMITTER_STAFF:
self.include_staffs()
elif emitter == EMITTER_RING:
self.include_rings()
elif emitter == EMITTER_WAND:
self.include_wands()
def execute_main_loop(self):
start_time = time()
breaks = self.init_breaks()
for emitter in self.emitters:
self.init_needles_for_emitter_to_use(emitter)
while True:
self.check_breaks(start_time, breaks)
if self.overlay.run_mode == 'paused':
cv.waitKey(1)
cv.waitKey(10)
continue
elif self.overlay.run_mode == 'stopped':
break
@@ -124,11 +122,8 @@ class Equipment(GameBase):
else:
spawn_0 = self.find_emitter(emitter, screenshot, 0)
points = self.vision_stun.get_click_points(spawn_0)
for point in points:
if len(points) >= 1:
self.click_point(points[0][0], points[0][1])
if self.overlay.run_mode == 'stopped' or self.overlay.run_mode == 'paused':
break
continue
cv.waitKey(500)

View File

@@ -78,10 +78,12 @@ class GameBase:
def init_breaks(self):
breaks = []
if int(self.breaks) == 0:
return breaks
#breaks.append(7)
for i in range(1, int(self.breaks) + 1, 1):
avr_in_sec = int(self.stop_time) * 60 * 60 / int(self.breaks)
breaks.append(random.randint(i * avr_in_sec * 0.60, i * avr_in_sec))
breaks.append(random.randint(int(i * avr_in_sec * 0.60), int(i * avr_in_sec)))
return breaks
def check_breaks(self, start_time, breaks):
@@ -178,21 +180,24 @@ class GameBase:
continue
return False
def is_direction_in_bounce_and_same_color(self, state, loc, color):
@staticmethod
def is_direction_in_bounce_and_same_color(state, loc, color):
x, y = loc
if x <= 7 and x >= 0 and y <= 13 and y >= 0:
if state[x, y] == color:
return 1
return 0
def local_pos_check(self, state, e, i, e_check, i_check, needle):
@staticmethod
def local_pos_check(state, e, i, e_check, i_check, needle):
if e + e_check >= 0 and e + e_check <= 7 and i + i_check >= 0 and i + i_check <= 13:
if state[e + e_check, i + i_check] == needle:
return True
else:
return False
def local_pos_checks(self, state, e, i, e_check, i_check, needles):
@staticmethod
def local_pos_checks(state, e, i, e_check, i_check, needles):
if e + e_check >= 0 and e + e_check <= 7 and i + i_check >= 0 and i + i_check <= 13:
for needle in needles:
if state[e + e_check, i + i_check] == needle:
@@ -201,7 +206,8 @@ class GameBase:
continue
return False
def get_click_point(self, rectangle):
@staticmethod
def get_click_point(rectangle):
# Loop over all the rectangles
x, y, w, h = rectangle
# Determine the center position
@@ -237,7 +243,8 @@ class GameBase:
for pointi in pointis:
self.dig_point(pointi[0], pointi[1], 150)
def dig_point(self, point1, point2, dig_time):
@staticmethod
def dig_point(point1, point2, dig_time):
pydirectinput.moveTo(point1, point2)
cv.waitKey(dig_time)
pydirectinput.mouseDown()
@@ -245,7 +252,8 @@ class GameBase:
cv.waitKey(w)
pydirectinput.mouseUp()
def move_to(self, x, y):
@staticmethod
def move_to(x, y):
point_src = (1113, 598)
pydirectinput.moveTo(point_src[0], point_src[1])
pydirectinput.mouseDown()