feat(task): 培育支持从考试场景直接开始
This commit is contained in:
parent
d9f2be5f93
commit
97e7e0ca93
|
@ -295,27 +295,6 @@ def click_recommended_card(timeout: float = 7, card_count: int = 3) -> int:
|
||||||
return return_value
|
return return_value
|
||||||
return -1
|
return -1
|
||||||
|
|
||||||
@deprecated('此方法待改进')
|
|
||||||
def skill_card_count1():
|
|
||||||
"""获取当前持有的技能卡数量"""
|
|
||||||
img = device.screenshot()
|
|
||||||
img = crop(img, y1=0.83, y2=0.90)
|
|
||||||
# 黑白
|
|
||||||
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
|
|
||||||
# 白色 -> 黑色
|
|
||||||
# 仅将白色(255)替换为黑色(0),保持其他颜色不变
|
|
||||||
img[img == 255] = 0
|
|
||||||
# 二值化
|
|
||||||
_, img = cv2.threshold(img, 240, 255, cv2.THRESH_BINARY)
|
|
||||||
|
|
||||||
ret = ocr.raw('en').ocr(img)
|
|
||||||
# 统计字母 A、M 数量
|
|
||||||
count = 0
|
|
||||||
for item in ret:
|
|
||||||
if 'A' in item.text or 'M' in item.text:
|
|
||||||
count += 1
|
|
||||||
logger.info("Current skill card count: %d", count)
|
|
||||||
return count
|
|
||||||
|
|
||||||
@action('获取当前卡片数量')
|
@action('获取当前卡片数量')
|
||||||
def skill_card_count():
|
def skill_card_count():
|
||||||
|
@ -654,16 +633,23 @@ def hajime_regular(week: int = -1, start_from: int = 1):
|
||||||
logger.info("Week %d started.", i + start_from)
|
logger.info("Week %d started.", i + start_from)
|
||||||
w()
|
w()
|
||||||
|
|
||||||
|
@action('是否在考试场景')
|
||||||
|
def is_exam_scene():
|
||||||
|
"""是否在考试场景"""
|
||||||
|
return ocr.find(contains('残りターン'), rect=R.InPurodyuusu.BoxExamTop) is not None
|
||||||
|
|
||||||
ProduceStage = Literal[
|
ProduceStage = Literal[
|
||||||
'action', # 行动场景
|
'action', # 行动场景
|
||||||
'practice', # 练习场景
|
'practice', # 练习场景
|
||||||
'exam', # 考试场景
|
'exam-start', # 考试开始确认页面
|
||||||
|
'exam-ongoing', # 考试进行中
|
||||||
|
'exam-end', # 考试结束
|
||||||
'unknown', # 未知场景
|
'unknown', # 未知场景
|
||||||
]
|
]
|
||||||
@action('检测培育阶段并开始培育', dispatcher=True)
|
@action('检测培育阶段并开始培育', dispatcher=True)
|
||||||
|
|
||||||
def detect_regular_produce_stage(ctx: DispatcherContext) -> ProduceStage:
|
def detect_regular_produce_stage(ctx: DispatcherContext) -> ProduceStage:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
判断当前是培育的什么阶段,并开始 Regular 培育。
|
判断当前是培育的什么阶段,并开始 Regular 培育。
|
||||||
|
|
||||||
前置条件:培育中的任意场景\n
|
前置条件:培育中的任意场景\n
|
||||||
|
@ -681,11 +667,14 @@ def detect_regular_produce_stage(ctx: DispatcherContext) -> ProduceStage:
|
||||||
week = week_ret.numbers()
|
week = week_ret.numbers()
|
||||||
if week:
|
if week:
|
||||||
logger.info("Detection result: At action scene. Current week: %d", week[0])
|
logger.info("Detection result: At action scene. Current week: %d", week[0])
|
||||||
# hajime_regular(week=week[0])
|
|
||||||
ctx.finish()
|
ctx.finish()
|
||||||
return 'action'
|
return 'action'
|
||||||
else:
|
else:
|
||||||
return 'unknown'
|
return 'unknown'
|
||||||
|
elif is_exam_scene():
|
||||||
|
logger.info("Detection result: At exam scene.")
|
||||||
|
ctx.finish()
|
||||||
|
return 'exam-ongoing'
|
||||||
else:
|
else:
|
||||||
return 'unknown'
|
return 'unknown'
|
||||||
|
|
||||||
|
@ -712,6 +701,11 @@ def hajime_regular_from_stage(stage: ProduceStage):
|
||||||
hajime_regular(start_from=week)
|
hajime_regular(start_from=week)
|
||||||
else:
|
else:
|
||||||
raise UnrecoverableError("Failed to detect produce stage.")
|
raise UnrecoverableError("Failed to detect produce stage.")
|
||||||
|
elif stage == 'exam-ongoing':
|
||||||
|
# TODO: 应该直接调用 week_final_exam 而不是再写一次
|
||||||
|
logger.info("Exam ongoing. Start exam.")
|
||||||
|
exam()
|
||||||
|
produce_end()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
from logging import getLogger
|
from logging import getLogger
|
||||||
|
@ -720,6 +714,8 @@ if __name__ == '__main__':
|
||||||
getLogger('kotonebot').setLevel(logging.DEBUG)
|
getLogger('kotonebot').setLevel(logging.DEBUG)
|
||||||
getLogger(__name__).setLevel(logging.DEBUG)
|
getLogger(__name__).setLevel(logging.DEBUG)
|
||||||
|
|
||||||
stage = (detect_regular_produce_stage())
|
# stage = (detect_regular_produce_stage())
|
||||||
hajime_regular_from_stage(stage)
|
# hajime_regular_from_stage(stage)
|
||||||
|
|
||||||
|
# click_recommended_card(card_count=skill_card_count())
|
||||||
|
# exam()
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 1.1 MiB |
|
@ -0,0 +1 @@
|
||||||
|
{"definitions":{"1fbb6008-7112-46ce-b6aa-413648acc5e5":{"name":"InPurodyuusu.BoxExamTop","displayName":"考试场景 最上方排名区域","type":"hint-box","annotationId":"1fbb6008-7112-46ce-b6aa-413648acc5e5","useHintRect":false}},"annotations":[{"id":"1fbb6008-7112-46ce-b6aa-413648acc5e5","type":"rect","data":{"x1":5,"y1":2,"x2":712,"y2":55}}]}
|
Loading…
Reference in New Issue