22
33from module .base .button import ButtonGrid
44from module .base .decorator import Config
5+ from module .base .timer import Timer
56from module .handler .assets import *
67from module .handler .enemy_searching import EnemySearchingHandler
78from module .logger import logger
@@ -49,21 +50,14 @@ def _fleet_sidebar(self):
4950 origin = (1185 , 155 + offset ), delta = (0 , 111 ),
5051 button_shape = (53 , 104 ), grid_shape = (1 , 3 ), name = 'FLEET_SIDEBAR' )
5152
52- def _fleet_preparation_sidebar_click (self , index ):
53+ def _fleet_preparation_get (self ):
5354 """
54- Args :
55- index ( int) :
55+ Returns :
56+ int:
5657 1 for formation
5758 2 for meowfficers
5859 3 for auto search setting
59-
60- Returns:
61- bool: If changed.
6260 """
63- if index <= 0 or index > 3 :
64- logger .warning (f'Sidebar index cannot be clicked, { index } , limit to 1 through 5 only' )
65- return False
66-
6761 current = 0
6862 total = 0
6963 sidebar = self ._fleet_sidebar ()
@@ -81,46 +75,38 @@ def _fleet_preparation_sidebar_click(self, index):
8175 if not current :
8276 logger .warning ('No fleet sidebar active.' )
8377 logger .attr ('Fleet_sidebar' , f'{ current } /{ total } ' )
84- if current == index :
85- return False
78+ return current
8679
87- self .device .click (sidebar [0 , index - 1 ])
88- return True
89-
90- def fleet_preparation_sidebar_ensure (self , index , skip_first_screenshot = True ):
80+ def fleet_preparation_sidebar_ensure (self , index ):
9181 """
9282 Args:
9383 index (int):
9484 1 for formation
9585 2 for meowfficers
9686 3 for auto search setting
97- skip_first_screenshot (bool):
9887
99- Returns:
100- bool: whether sidebar could be ensured
101- at most 3 attempts are made before
102- return False otherwise True
88+ Returns:
89+ bool: whether sidebar could be ensured
90+ at most 3 attempts are made before
91+ return False otherwise True
10392 """
10493 if index <= 0 or index > 5 :
10594 logger .warning (f'Sidebar index cannot be ensured, { index } , limit 1 through 5 only' )
10695 return False
10796
108- counter = 0
109- while 1 :
110- if skip_first_screenshot :
111- skip_first_screenshot = False
112- else :
113- self .device .screenshot ()
114-
115- if self ._fleet_preparation_sidebar_click (index ):
116- if counter >= 2 :
117- logger .warning ('Sidebar could not be ensured' )
118- return False
119- counter += 1
120- self .device .sleep ((0.3 , 0.5 ))
121- continue
122- else :
97+ interval = Timer (1 , count = 2 )
98+ sidebar = self ._fleet_sidebar ()
99+ for _ in self .loop (timeout = 3 ):
100+ current = self ._fleet_preparation_get ()
101+ if current == index :
123102 return True
103+ if interval .reached ():
104+ self .device .click (sidebar [0 , index - 1 ])
105+ interval .reset ()
106+ continue
107+ else :
108+ logger .warning ('Sidebar could not be ensured' )
109+ return False
124110
125111 def _auto_search_set_click (self , setting ):
126112 """
0 commit comments