def _tactical_get_finish(self): """ Get the future finish time. """ logger.hr('Tactical get finish') grids = ButtonGrid(origin=(421, 596), delta=(223, 0), button_shape=(139, 27), grid_shape=(4, 1), name='TACTICAL_REMAIN') is_running = [ self.image_color_count(button, color=(148, 255, 99), count=50) for button in grids.buttons ] logger.info( f'Tactical status: {["running" if s else "empty" for s in is_running]}' ) buttons = [b for b, s in zip(grids.buttons, is_running) if s] ocr = Duration(buttons, letter=(148, 255, 99), name='TACTICAL_REMAIN') remains = ocr.ocr(self.device.image) remains = [remains] if not isinstance(remains, list) else remains now = datetime.now() self.tactical_finish = [(now + remain).replace(microsecond=0) for remain in remains if remain.total_seconds()] logger.info( f'Tactical finish: {[str(f) for f in self.tactical_finish]}')
def _tactical_get_finish(self): """ Get the future finish time. """ logger.hr('Tactical get finish') grids = ButtonGrid(origin=(421, 596), delta=(223, 0), button_shape=(139, 27), grid_shape=(4, 1), name='TACTICAL_REMAIN') # tactical cards can't be loaded that fast, confirm if it's empty. confirm_timer = Timer(0.6, count=2).start() while 1: is_running = [ self.image_color_count(button, color=(148, 255, 99), count=50) for button in grids.buttons ] logger.info( f'Tactical status: {["running" if s else "empty" for s in is_running]}' ) if any(is_running): break if confirm_timer.reached(): break self.device.screenshot() buttons = [b for b, s in zip(grids.buttons, is_running) if s] ocr = Duration(buttons, letter=(148, 255, 99), name='TACTICAL_REMAIN') remains = ocr.ocr(self.device.image) remains = [remains] if not isinstance(remains, list) else remains now = datetime.now() self.tactical_finish = [(now + remain).replace(microsecond=0) for remain in remains if remain.total_seconds()] logger.info( f'Tactical finish: {[str(f) for f in self.tactical_finish]}')