Skip to content

Commit b171687

Browse files
authored
Merge pull request #15 from renatofmmaia/develop
- fix error "'int' object is not callable" - add log on change state - improve scroll
2 parents 2ff98d6 + 72284fb commit b171687

File tree

4 files changed

+47
-19
lines changed

4 files changed

+47
-19
lines changed

main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from module.telegram import TelegramBot
1616
from module.window import get_resolution, WindowsResolutionEnum
1717

18-
__version__ = "0.0.6"
18+
__version__ = "0.0.7"
1919

2020

2121
def main(config_file):

module/manager.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,15 @@ def is_starting(self):
6363
return self.state == StateEnum.STARTING
6464

6565
def set_fighting(self):
66+
logger("💪 change state to fighting")
6667
self.state = StateEnum.FIGHTING
6768

6869
@property
6970
def is_fighting(self):
7071
return self.state == StateEnum.FIGHTING
7172

7273
def set_recharge(self):
74+
logger("💤 change state to recharge")
7375
self.state = StateEnum.RECHARGE
7476

7577
@property

module/mouse.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,14 @@ def move_to_logical():
8686

8787
return do_with_timeout(move_to_logical)
8888

89+
def move_to_one_of_targets(targets: list, target_global: bool = False):
90+
for target in targets:
91+
if move_to(target):
92+
return True
93+
94+
def move_to_when_one_of_targets_appears(targets: list, time_beteween: float = 0.5, timeout: float = 10, target_global = False):
95+
return do_with_timeout(move_to_one_of_targets, args = [targets, target_global], time_beteween=time_beteween, timeout=timeout)
96+
8997
def scroll_and_click_on_targets(safe_scroll_target: str, repeat: int, distance:float, duration: float, wait:float, function_between, execute_before=True):
9098
res = []
9199
if execute_before:
@@ -103,8 +111,13 @@ def scroll_and_click_on_targets(safe_scroll_target: str, repeat: int, distance:f
103111

104112
return res
105113

106-
def scroll(safe_scroll_target: str, distance:float, duration: float, wait:float):
107-
move_to(safe_scroll_target)
114+
def scroll(safe_scroll_target, distance:float, duration: float, wait:float):
115+
116+
if type(safe_scroll_target) is list:
117+
move_to_when_one_of_targets_appears(safe_scroll_target)
118+
else:
119+
move_to(safe_scroll_target)
120+
108121
pyautogui.mouseDown(duration=0.1)
109122
pyautogui.moveRel(0, distance, duration)
110123
time.sleep(0.3)

module/spaceScreen.py

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def check_screen():
4141
)
4242

4343
if res is None:
44-
raise Exception(f'Timeout waiting for screen {spaceScreenEnum(spaceScreenEnum).name}.')
44+
raise Exception(f'Timeout waiting for screen {SpaceScreenEnum(spaceScreenEnum).name}.')
4545

4646
return res
4747

@@ -132,15 +132,20 @@ def go_to_home(manager):
132132

133133
def go_to_fight(manager):
134134
current_screen = SpaceScreen.get_current_screen()
135-
if current_screen != SpaceScreenEnum.FIGHT.value:
135+
if current_screen == SpaceScreenEnum.FIGHT.value:
136+
return
137+
elif current_screen == SpaceScreenEnum.LOSE.value:
138+
click_when_target_appears("button_confirm_without_time")
139+
else:
136140
SpaceScreen.go_to_home(manager)
137141
click_when_target_appears("btn_fight_boss")
138-
SpaceScreen.wait_for_screen(SpaceScreenEnum.FIGHT.value)
139-
else:
140-
Login.do_login(manager)
141-
return
142142

143-
SpaceScreen.wait_for_screen(SpaceScreenEnum.FIGHT.value)
143+
new_screen = SpaceScreen.wait_for_possible_screen([
144+
SpaceScreenEnum.FIGHT,
145+
SpaceScreenEnum.LOSE,
146+
])
147+
if new_screen == SpaceScreenEnum.LOSE.value:
148+
SpaceScreenEnum.go_to_fight(manager)
144149

145150
def do_print_token(manager):
146151
logger_translated("print token", LoggerEnum.ACTION)
@@ -250,7 +255,7 @@ def click_first(btns_pos, search_img):
250255

251256
ship_life = 50 + (life_index * scale_factor)
252257

253-
logger(f"{ship_life}%", end=" ", datetime=False)
258+
logger(f"{ship_life}%", end=" ", datetime=False)
254259

255260
if ship_life >= ship_work_percent:
256261
click_randomly_in_position(x,y,w,h)
@@ -259,7 +264,7 @@ def click_first(btns_pos, search_img):
259264
else:
260265
logger("💤;", datetime=False)
261266

262-
return False
267+
return False
263268

264269
logger(f"Sending ships to fight:")
265270

@@ -272,12 +277,7 @@ def click_first(btns_pos, search_img):
272277
buttons_position = Image.get_target_positions("button_fight_on", not_target="button_fight_off", screen_image=screen_img)
273278

274279
if not buttons_position:
275-
scroll(
276-
safe_scroll_target="ship_bar_vertical",
277-
distance=Config.get('screen','scroll', 'distance'),
278-
duration=Config.get('screen','scroll', 'duration'),
279-
wait=Config.get('screen','scroll', 'wait'),
280-
)
280+
Ship.scroll_ships()
281281
scroll_times += 1
282282
continue
283283

@@ -287,7 +287,7 @@ def click_first(btns_pos, search_img):
287287
final_x = inital_x + width_search_area
288288

289289
search_img = screen_img[:,inital_x:final_x, :]
290-
logger("↳", end=" ", datetime=False)
290+
291291

292292
ship_work_percent = Config.get('ship_work_percent')
293293

@@ -298,6 +298,11 @@ def click_first(btns_pos, search_img):
298298
if time.time() - start_time > 15:
299299
if not Ship.check_number_of_ships(Image.screen(), n_ships):
300300
raise Exception(f"Error trying to send {n_ships} ships to fight.")
301+
else:
302+
Ship.scroll_ships()
303+
scroll_times += 1
304+
continue
305+
301306

302307

303308
if n_ships < Config.get('n_minimum_ships_to_fight'):
@@ -322,6 +327,14 @@ def click_first(btns_pos, search_img):
322327
manager.set_refresh_timer("refresh_ships")
323328
return True
324329

330+
def scroll_ships():
331+
return scroll(
332+
safe_scroll_target=["button_fight_on", "button_fight_off"],
333+
distance=Config.get('screen','scroll', 'distance'),
334+
duration=Config.get('screen','scroll', 'duration'),
335+
wait=Config.get('screen','scroll', 'wait'),
336+
)
337+
325338
def check_number_of_ships(screen_img, n_ships):
326339
# CROP SCREEN FROM TEXT 'BATTLE':
327340
x, y, w, h = Image.get_one_target_position("identify_n_space_shipts_in_battle_start_area", screen_image=screen_img)

0 commit comments

Comments
 (0)