1
0
mirror of https://gitee.com/sui-feng-cb/AzurLaneAutoScript1 synced 2026-04-11 01:55:08 +08:00

Merge pull request #185 from noname94/patch

Opt: [JP] Research optmization
This commit is contained in:
LmeSzinc
2020-09-17 21:10:38 +08:00
committed by GitHub
9 changed files with 58 additions and 57 deletions

View File

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

View File

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

View File

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -33,7 +33,7 @@ OCR_RESEARCH_5 = Button(area={'cn': (1042, 277, 1222, 329), 'en': (1042, 277, 12
RESEARCH_COST_CHECKER = Button(area={'cn': (809, 365, 972, 386), 'en': (809, 365, 972, 386), 'jp': (809, 365, 972, 386)}, color={'cn': (105, 114, 128), 'en': (105, 114, 128), 'jp': (105, 114, 128)}, button={'cn': (809, 365, 972, 386), 'en': (809, 365, 972, 386), 'jp': (809, 365, 972, 386)}, file={'cn': './assets/cn/research/RESEARCH_COST_CHECKER.png', 'en': './assets/en/research/RESEARCH_COST_CHECKER.png', 'jp': './assets/jp/research/RESEARCH_COST_CHECKER.png'}) RESEARCH_COST_CHECKER = Button(area={'cn': (809, 365, 972, 386), 'en': (809, 365, 972, 386), 'jp': (809, 365, 972, 386)}, color={'cn': (105, 114, 128), 'en': (105, 114, 128), 'jp': (105, 114, 128)}, button={'cn': (809, 365, 972, 386), 'en': (809, 365, 972, 386), 'jp': (809, 365, 972, 386)}, file={'cn': './assets/cn/research/RESEARCH_COST_CHECKER.png', 'en': './assets/en/research/RESEARCH_COST_CHECKER.png', 'jp': './assets/jp/research/RESEARCH_COST_CHECKER.png'})
RESEARCH_FINISHED = Button(area={'cn': (384, 547, 502, 585), 'en': (382, 545, 504, 587), 'jp': (383, 545, 504, 587)}, color={'cn': (233, 163, 69), 'en': (235, 174, 92), 'jp': (230, 162, 70)}, button={'cn': (384, 547, 502, 585), 'en': (382, 545, 504, 587), 'jp': (383, 545, 504, 587)}, file={'cn': './assets/cn/research/RESEARCH_FINISHED.png', 'en': './assets/en/research/RESEARCH_FINISHED.png', 'jp': './assets/jp/research/RESEARCH_FINISHED.png'}) RESEARCH_FINISHED = Button(area={'cn': (384, 547, 502, 585), 'en': (382, 545, 504, 587), 'jp': (383, 545, 504, 587)}, color={'cn': (233, 163, 69), 'en': (235, 174, 92), 'jp': (230, 162, 70)}, button={'cn': (384, 547, 502, 585), 'en': (382, 545, 504, 587), 'jp': (383, 545, 504, 587)}, file={'cn': './assets/cn/research/RESEARCH_FINISHED.png', 'en': './assets/en/research/RESEARCH_FINISHED.png', 'jp': './assets/jp/research/RESEARCH_FINISHED.png'})
RESEARCH_PENDING = Button(area={'cn': (227, 589, 269, 607), 'en': (227, 589, 269, 607), 'jp': (221, 588, 282, 612)}, color={'cn': (108, 163, 168), 'en': (98, 152, 158), 'jp': (101, 148, 156)}, button={'cn': (227, 589, 269, 607), 'en': (227, 589, 269, 607), 'jp': (221, 588, 282, 612)}, file={'cn': './assets/cn/research/RESEARCH_PENDING.png', 'en': './assets/en/research/RESEARCH_PENDING.png', 'jp': './assets/jp/research/RESEARCH_PENDING.png'}) RESEARCH_PENDING = Button(area={'cn': (227, 589, 269, 607), 'en': (227, 589, 269, 607), 'jp': (221, 588, 282, 612)}, color={'cn': (108, 163, 168), 'en': (98, 152, 158), 'jp': (101, 148, 156)}, button={'cn': (227, 589, 269, 607), 'en': (227, 589, 269, 607), 'jp': (221, 588, 282, 612)}, file={'cn': './assets/cn/research/RESEARCH_PENDING.png', 'en': './assets/en/research/RESEARCH_PENDING.png', 'jp': './assets/jp/research/RESEARCH_PENDING.png'})
RESEARCH_SELECT_QUIT = Button(area={'cn': (695, 656, 784, 707), 'en': (695, 656, 784, 707), 'jp': (695, 656, 784, 707)}, color={'cn': (50, 57, 74), 'en': (50, 57, 74), 'jp': (50, 57, 74)}, button={'cn': (695, 656, 784, 707), 'en': (695, 656, 784, 707), 'jp': (695, 656, 784, 707)}, file={'cn': './assets/cn/research/RESEARCH_SELECT_QUIT.png', 'en': './assets/en/research/RESEARCH_SELECT_QUIT.png', 'jp': './assets/jp/research/RESEARCH_SELECT_QUIT.png'}) RESEARCH_DETAIL_QUIT = Button(area={'cn': (695, 656, 784, 707), 'en': (695, 656, 784, 707), 'jp': (695, 656, 784, 707)}, color={'cn': (50, 57, 74), 'en': (50, 57, 74), 'jp': (50, 57, 74)}, button={'cn': (695, 656, 784, 707), 'en': (695, 656, 784, 707), 'jp': (695, 656, 784, 707)}, file={'cn': './assets/cn/research/RESEARCH_DETAIL_QUIT.png', 'en': './assets/en/research/RESEARCH_DETAIL_QUIT.png', 'jp': './assets/jp/research/RESEARCH_DETAIL_QUIT.png'})
RESEARCH_START = Button(area={'cn': (446, 570, 568, 596), 'en': (434, 573, 577, 593), 'jp': (421, 562, 594, 605)}, color={'cn': (170, 209, 241), 'en': (136, 182, 225), 'jp': (123, 173, 222)}, button={'cn': (446, 570, 568, 596), 'en': (434, 573, 577, 593), 'jp': (421, 562, 594, 605)}, file={'cn': './assets/cn/research/RESEARCH_START.png', 'en': './assets/en/research/RESEARCH_START.png', 'jp': './assets/jp/research/RESEARCH_START.png'}) RESEARCH_START = Button(area={'cn': (446, 570, 568, 596), 'en': (434, 573, 577, 593), 'jp': (421, 562, 594, 605)}, color={'cn': (170, 209, 241), 'en': (136, 182, 225), 'jp': (123, 173, 222)}, button={'cn': (446, 570, 568, 596), 'en': (434, 573, 577, 593), 'jp': (421, 562, 594, 605)}, file={'cn': './assets/cn/research/RESEARCH_START.png', 'en': './assets/en/research/RESEARCH_START.png', 'jp': './assets/jp/research/RESEARCH_START.png'})
RESEARCH_STOP = Button(area={'cn': (419, 559, 594, 604), 'en': (417, 557, 596, 606), 'jp': (421, 562, 593, 605)}, color={'cn': (225, 137, 118), 'en': (217, 122, 99), 'jp': (225, 137, 117)}, button={'cn': (419, 559, 594, 604), 'en': (417, 557, 596, 606), 'jp': (421, 562, 593, 605)}, file={'cn': './assets/cn/research/RESEARCH_STOP.png', 'en': './assets/en/research/RESEARCH_STOP.png', 'jp': './assets/jp/research/RESEARCH_STOP.png'}) RESEARCH_STOP = Button(area={'cn': (419, 559, 594, 604), 'en': (417, 557, 596, 606), 'jp': (421, 562, 593, 605)}, color={'cn': (225, 137, 118), 'en': (217, 122, 99), 'jp': (225, 137, 117)}, button={'cn': (419, 559, 594, 604), 'en': (417, 557, 596, 606), 'jp': (421, 562, 593, 605)}, file={'cn': './assets/cn/research/RESEARCH_STOP.png', 'en': './assets/en/research/RESEARCH_STOP.png', 'jp': './assets/jp/research/RESEARCH_STOP.png'})
RESEARCH_TITLE = Button(area={'cn': (118, 15, 170, 39), 'en': (118, 14, 279, 35), 'jp': (116, 12, 256, 42)}, color={'cn': (165, 179, 215), 'en': (100, 113, 152), 'jp': (129, 145, 185)}, button={'cn': (118, 15, 170, 39), 'en': (118, 14, 279, 35), 'jp': (116, 12, 256, 42)}, file={'cn': './assets/cn/research/RESEARCH_TITLE.png', 'en': './assets/en/research/RESEARCH_TITLE.png', 'jp': './assets/jp/research/RESEARCH_TITLE.png'}) RESEARCH_TITLE = Button(area={'cn': (118, 15, 170, 39), 'en': (118, 14, 279, 35), 'jp': (116, 12, 256, 42)}, color={'cn': (165, 179, 215), 'en': (100, 113, 152), 'jp': (129, 145, 185)}, button={'cn': (118, 15, 170, 39), 'en': (118, 14, 279, 35), 'jp': (116, 12, 256, 42)}, file={'cn': './assets/cn/research/RESEARCH_TITLE.png', 'en': './assets/en/research/RESEARCH_TITLE.png', 'jp': './assets/jp/research/RESEARCH_TITLE.png'})
@@ -47,7 +47,6 @@ SERIES_5 = Button(area={'cn': (1056, 156, 1084, 175), 'en': (1056, 156, 1084, 17
SERIES_DETAIL = Button(area={'cn': (284, 109, 318, 134), 'en': (284, 109, 318, 134), 'jp': (284, 109, 318, 134)}, color={'cn': (217, 141, 124), 'en': (217, 141, 124), 'jp': (217, 141, 124)}, button={'cn': (284, 109, 318, 134), 'en': (284, 109, 318, 134), 'jp': (284, 109, 318, 134)}, file={'cn': './assets/cn/research/SERIES_DETAIL.png', 'en': './assets/en/research/SERIES_DETAIL.png', 'jp': './assets/jp/research/SERIES_DETAIL.png'}) SERIES_DETAIL = Button(area={'cn': (284, 109, 318, 134), 'en': (284, 109, 318, 134), 'jp': (284, 109, 318, 134)}, color={'cn': (217, 141, 124), 'en': (217, 141, 124), 'jp': (217, 141, 124)}, button={'cn': (284, 109, 318, 134), 'en': (284, 109, 318, 134), 'jp': (284, 109, 318, 134)}, file={'cn': './assets/cn/research/SERIES_DETAIL.png', 'en': './assets/en/research/SERIES_DETAIL.png', 'jp': './assets/jp/research/SERIES_DETAIL.png'})
STABLE_CHECKER = Button(area={'cn': (776, 324, 1245, 622), 'en': (776, 324, 1245, 622), 'jp': (776, 324, 1245, 622)}, color={'cn': (124, 142, 164), 'en': (124, 142, 164), 'jp': (124, 142, 164)}, button={'cn': (776, 324, 1245, 622), 'en': (776, 324, 1245, 622), 'jp': (776, 324, 1245, 622)}, file={'cn': './assets/cn/research/STABLE_CHECKER.png', 'en': './assets/en/research/STABLE_CHECKER.png', 'jp': './assets/jp/research/STABLE_CHECKER.png'}) STABLE_CHECKER = Button(area={'cn': (776, 324, 1245, 622), 'en': (776, 324, 1245, 622), 'jp': (776, 324, 1245, 622)}, color={'cn': (124, 142, 164), 'en': (124, 142, 164), 'jp': (124, 142, 164)}, button={'cn': (776, 324, 1245, 622), 'en': (776, 324, 1245, 622), 'jp': (776, 324, 1245, 622)}, file={'cn': './assets/cn/research/STABLE_CHECKER.png', 'en': './assets/en/research/STABLE_CHECKER.png', 'jp': './assets/jp/research/STABLE_CHECKER.png'})
STABLE_CHECKER_CENTER = Button(area={'cn': (506, 524, 770, 684), 'en': (506, 524, 770, 684), 'jp': (506, 524, 770, 684)}, color={'cn': (155, 154, 156), 'en': (155, 154, 156), 'jp': (155, 154, 156)}, button={'cn': (506, 524, 770, 684), 'en': (506, 524, 770, 684), 'jp': (506, 524, 770, 684)}, file={'cn': './assets/cn/research/STABLE_CHECKER_CENTER.png', 'en': './assets/en/research/STABLE_CHECKER_CENTER.png', 'jp': './assets/jp/research/STABLE_CHECKER_CENTER.png'}) STABLE_CHECKER_CENTER = Button(area={'cn': (506, 524, 770, 684), 'en': (506, 524, 770, 684), 'jp': (506, 524, 770, 684)}, color={'cn': (155, 154, 156), 'en': (155, 154, 156), 'jp': (155, 154, 156)}, button={'cn': (506, 524, 770, 684), 'en': (506, 524, 770, 684), 'jp': (506, 524, 770, 684)}, file={'cn': './assets/cn/research/STABLE_CHECKER_CENTER.png', 'en': './assets/en/research/STABLE_CHECKER_CENTER.png', 'jp': './assets/jp/research/STABLE_CHECKER_CENTER.png'})
STABLE_CHECKER_DETAIL = Button(area={'cn': (635, 129, 984, 248), 'en': (635, 129, 984, 248), 'jp': (635, 129, 984, 248)}, color={'cn': (141, 121, 198), 'en': (141, 121, 198), 'jp': (141, 121, 198)}, button={'cn': (635, 129, 984, 248), 'en': (635, 129, 984, 248), 'jp': (635, 129, 984, 248)}, file={'cn': './assets/cn/research/STABLE_CHECKER_DETAIL.png', 'en': './assets/en/research/STABLE_CHECKER_DETAIL.png', 'jp': './assets/jp/research/STABLE_CHECKER_DETAIL.png'})
STATUS_1 = Button(area={'cn': (59, 531, 63, 539), 'en': (59, 531, 63, 539), 'jp': (59, 531, 63, 539)}, color={'cn': (123, 166, 222), 'en': (123, 166, 222), 'jp': (123, 166, 222)}, button={'cn': (59, 531, 63, 539), 'en': (59, 531, 63, 539), 'jp': (59, 531, 63, 539)}, file={'cn': './assets/cn/research/STATUS_1.png', 'en': './assets/en/research/STATUS_1.png', 'jp': './assets/jp/research/STATUS_1.png'}) STATUS_1 = Button(area={'cn': (59, 531, 63, 539), 'en': (59, 531, 63, 539), 'jp': (59, 531, 63, 539)}, color={'cn': (123, 166, 222), 'en': (123, 166, 222), 'jp': (123, 166, 222)}, button={'cn': (59, 531, 63, 539), 'en': (59, 531, 63, 539), 'jp': (59, 531, 63, 539)}, file={'cn': './assets/cn/research/STATUS_1.png', 'en': './assets/en/research/STATUS_1.png', 'jp': './assets/jp/research/STATUS_1.png'})
STATUS_2 = Button(area={'cn': (304, 558, 309, 567), 'en': (304, 558, 309, 567), 'jp': (304, 558, 309, 567)}, color={'cn': (115, 166, 222), 'en': (115, 166, 222), 'jp': (115, 166, 222)}, button={'cn': (304, 558, 309, 567), 'en': (304, 558, 309, 567), 'jp': (304, 558, 309, 567)}, file={'cn': './assets/cn/research/STATUS_2.png', 'en': './assets/en/research/STATUS_2.png', 'jp': './assets/jp/research/STATUS_2.png'}) STATUS_2 = Button(area={'cn': (304, 558, 309, 567), 'en': (304, 558, 309, 567), 'jp': (304, 558, 309, 567)}, color={'cn': (115, 166, 222), 'en': (115, 166, 222), 'jp': (115, 166, 222)}, button={'cn': (304, 558, 309, 567), 'en': (304, 558, 309, 567), 'jp': (304, 558, 309, 567)}, file={'cn': './assets/cn/research/STATUS_2.png', 'en': './assets/en/research/STATUS_2.png', 'jp': './assets/jp/research/STATUS_2.png'})
STATUS_3 = Button(area={'cn': (549, 585, 555, 596), 'en': (549, 585, 555, 596), 'jp': (549, 585, 555, 596)}, color={'cn': (115, 166, 222), 'en': (115, 166, 222), 'jp': (115, 166, 222)}, button={'cn': (549, 585, 555, 596), 'en': (549, 585, 555, 596), 'jp': (549, 585, 555, 596)}, file={'cn': './assets/cn/research/STATUS_3.png', 'en': './assets/en/research/STATUS_3.png', 'jp': './assets/jp/research/STATUS_3.png'}) STATUS_3 = Button(area={'cn': (549, 585, 555, 596), 'en': (549, 585, 555, 596), 'jp': (549, 585, 555, 596)}, color={'cn': (115, 166, 222), 'en': (115, 166, 222), 'jp': (115, 166, 222)}, button={'cn': (549, 585, 555, 596), 'en': (549, 585, 555, 596), 'jp': (549, 585, 555, 596)}, file={'cn': './assets/cn/research/STATUS_3.png', 'en': './assets/en/research/STATUS_3.png', 'jp': './assets/jp/research/STATUS_3.png'})

View File

@@ -4,6 +4,7 @@ from datetime import timedelta
from scipy import signal from scipy import signal
from module.base.decorator import Config from module.base.decorator import Config
from module.base.timer import Timer
from module.base.utils import * from module.base.utils import *
from module.logger import logger from module.logger import logger
from module.ocr.ocr import Ocr from module.ocr.ocr import Ocr
@@ -254,7 +255,7 @@ def research_jp_detect(image):
for cost in costs: for cost in costs:
project.__setattr__(cost, costs[cost]) project.__setattr__(cost, costs[cost])
if project.genre.lower() == 'd': if project.genre.lower() == 'd':
project.ship = get_research_ship_jp(image) project.ship = get_research_ship_jp(image).lower()
if project.ship: if project.ship:
project.ship_rarity = 'dr' if project.ship in project.DR_SHIP else 'pry' project.ship_rarity = 'dr' if project.ship in project.DR_SHIP else 'pry'
project.name = f'{project.series}-{project.genre}-{project.duration}{project.ship}' project.name = f'{project.series}-{project.genre}-{project.duration}{project.ship}'
@@ -363,9 +364,10 @@ class ResearchProject:
class ResearchProjectJp: class ResearchProjectJp:
GENRE = ['b', 'c', 'd', 'e', 'g', 'h', 'q', 't'] GENRE = ['b', 'c', 'd', 'e', 'g', 'h', 'q', 't']
DURATION = ['0.5', '1', '1.5', '2', '2.5', '3', '4', '5', '6', '8', '12'] DURATION = ['0.5', '1', '1.5', '2', '2.5', '3', '4', '5', '6', '8', '12']
REGEX_SHIP = re.compile( SHIP_S1 = ['neptune', 'monarch', 'ibuki', 'izumo', 'roon', 'saintlouis']
'(neptune|monarch|ibuki|izumo|roon|saintlouis|seattle|georgia|kitakaze|azuma|friedrich|gascogne|champagne|cheshire|drake|mainz|odin)') SHIP_S2 = ['seattle', 'georgia', 'kitakaze', 'azuma', 'friedrich', 'gascogne']
REGEX_INPUT = re.compile('(coin|cube|part)') SHIP_S3 = ['champagne', 'cheshire', 'drake', 'mainz', 'odin']
SHIP_ALL = SHIP_S1 + SHIP_S2 + SHIP_S3
DR_SHIP = ['azuma', 'friedrich', 'drake'] DR_SHIP = ['azuma', 'friedrich', 'drake']
def __init__(self): def __init__(self):
@@ -382,12 +384,14 @@ class ResearchProjectJp:
def check_valid(self): def check_valid(self):
self.valid = False self.valid = False
if self.series == "S0": if self.series.lower() == "s0":
return False return False
if self.genre.lower() not in self.GENRE: if self.genre.lower() not in self.GENRE:
return False return False
if self.duration not in self.DURATION: if self.duration not in self.DURATION:
return False return False
if self.ship not in self.SHIP_ALL:
self.ship = ''
if self.genre.lower() == 'd' and not self.ship: if self.genre.lower() == 'd' and not self.ship:
return False return False
self.valid = True self.valid = True
@@ -403,24 +407,43 @@ class ResearchProjectJp:
class ResearchSelector(UI): class ResearchSelector(UI):
projects: list projects: list
def ensure_detail_stable(self): def research_goto_detail(self, index, skip_first_screenshot=True):
""" logger.info(f'Research goto detail (project {index})')
Check first STABLE_CHECKER_DETAIL then RESEARCH_COST_CHECKER click_timer = Timer(10)
to ensure that the research detail page is fully loaded. while 1:
""" if skip_first_screenshot:
self.wait_until_stable(STABLE_CHECKER_DETAIL) skip_first_screenshot = False
self.wait_until_appear(RESEARCH_COST_CHECKER, offset=5, skip_first_screenshot=False) else:
self.device.screenshot()
def research_jp_next(self): # DETAIL_NEXT appears even when the research detail page is not fully loaded.
self.appear_then_click(DETAIL_NEXT, offset=(20, 20), interval=0) if not self.appear(DETAIL_NEXT, offset=(20, 20)):
# Wait for the touch effect on DETAIL_NEXT to fade. if click_timer.reached():
self.wait_until_appear(DETAIL_NEXT, offset=5, skip_first_screenshot=False) self.device.click(RESEARCH_ENTRANCE[index])
self.ensure_detail_stable() click_timer.reset()
else:
# Check RESEARCH_COST_CHECKER to ensure that the research detail page is fully loaded.
self.wait_until_appear(RESEARCH_COST_CHECKER, offset=(20, 20), skip_first_screenshot=True)
break
def detail_quit(self): def research_detail_quit(self, skip_first_screenshot=True):
self.device.click(RESEARCH_SELECT_QUIT) logger.info('Research detail quit')
self.wait_until_disappear(RESEARCH_COST_CHECKER, offset=5) click_timer = Timer(10)
self.wait_until_stable(STABLE_CHECKER) while 1:
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()
if self.appear(RESEARCH_UNAVAILABLE, offset=(20, 20)) \
or self.appear(RESEARCH_START, offset=(20, 20)) \
or self.appear(RESEARCH_STOP, offset=(20, 20)):
if click_timer.reached():
self.device.click(RESEARCH_DETAIL_QUIT)
click_timer.reset()
else:
self.wait_until_stable(STABLE_CHECKER_CENTER)
break
@Config.when(SERVER='jp') @Config.when(SERVER='jp')
def research_detect(self, image): def research_detect(self, image):
@@ -434,11 +457,12 @@ class ResearchSelector(UI):
projects = [] projects = []
proj_sorted = [] proj_sorted = []
# Enter the middle entrance first.
self.device.click(RESEARCH_ENTRANCE[2])
self.ensure_detail_stable()
for _ in range(5): for _ in range(5):
"""
Every time entering the 4th(mid-right) entrance,
all research subjects shift 1 position from right to left.
"""
self.research_goto_detail(3)
""" """
'image' is a null argument as described above. 'image' is a null argument as described above.
What we need here is the current screen 'self.device.image'. What we need here is the current screen 'self.device.image'.
@@ -446,18 +470,16 @@ class ResearchSelector(UI):
project = research_jp_detect(self.device.image) project = research_jp_detect(self.device.image)
logger.attr('Project', project) logger.attr('Project', project)
projects.append(project) projects.append(project)
self.research_jp_next() self.research_detail_quit()
""" """
The page_research should remain the same as before. page_research should remain the same as before.
Since We entered the middle entrance first, Since we entered the 4th entrance first,
the index from left to right is (3, 4, 0, 1, 2). the indexes from left to right are (2, 3, 4, 0, 1).
""" """
for pos in range(5): for pos in range(5):
proj_sorted.append(projects[(pos + 3) % 5]) proj_sorted.append(projects[(pos + 2) % 5])
self.projects = proj_sorted self.projects = proj_sorted
# All done and we go back to page_research.
self.detail_quit()
@Config.when(SERVER=None) @Config.when(SERVER=None)
def research_detect(self, image): def research_detect(self, image):

View File

@@ -126,26 +126,6 @@ class RewardResearch(ResearchSelector):
return True return True
def research_select_quit(self, skip_first_screenshot=True):
logger.info('Research select quit')
click_timer = Timer(10)
while 1:
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()
if self.appear(RESEARCH_UNAVAILABLE, offset=(20, 20)) \
or self.appear(RESEARCH_START, offset=(20, 20)) \
or self.appear(RESEARCH_STOP, offset=(20, 20)):
if click_timer.reached():
self.device.click(RESEARCH_SELECT_QUIT)
else:
click_timer.reset()
else:
self.wait_until_stable(STABLE_CHECKER_CENTER)
break
def research_select(self, priority, save_get_items=False): def research_select(self, priority, save_get_items=False):
""" """
Args: Args:
@@ -220,12 +200,12 @@ class RewardResearch(ResearchSelector):
# End # End
if self.appear(RESEARCH_STOP): if self.appear(RESEARCH_STOP):
self.research_select_quit() self.research_detail_quit()
self.ensure_no_info_bar(timeout=3) # Research started self.ensure_no_info_bar(timeout=3) # Research started
return True return True
if max_rgb < 235 and self.appear(RESEARCH_UNAVAILABLE, offset=(5, 20)): if max_rgb < 235 and self.appear(RESEARCH_UNAVAILABLE, offset=(5, 20)):
logger.info('Not enough resources to start this project') logger.info('Not enough resources to start this project')
self.research_select_quit() self.research_detail_quit()
return False return False
def research_receive(self, skip_first_screenshot=True, save_get_items=False): def research_receive(self, skip_first_screenshot=True, save_get_items=False):