From 7523847fac78f4af0fb244632c810b0659d54fe8 Mon Sep 17 00:00:00 2001 From: LmeSzinc Date: Mon, 6 Apr 2020 19:01:22 +0800 Subject: [PATCH] =?UTF-8?q?Add:=20=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=8C=82?= =?UTF-8?q?=E5=A7=94=E6=89=98=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/reward/COMMISSION_ADVICE.png | Bin 0 -> 14005 bytes assets/reward/COMMISSION_DAILY.png | Bin 0 -> 7733 bytes assets/reward/COMMISSION_HAS_PENDING.png | Bin 0 -> 5569 bytes .../reward/COMMISSION_NOTICE_AT_CAMPAIGN.png | Bin 0 -> 5571 bytes assets/reward/COMMISSION_OIL_CONFIRM.png | Bin 0 -> 10023 bytes assets/reward/COMMISSION_START.png | Bin 0 -> 13432 bytes assets/reward/COMMISSION_STOP_SCROLLING.png | Bin 0 -> 11447 bytes assets/reward/COMMISSION_URGENT.png | Bin 0 -> 7787 bytes assets/ui/COMMISSION_CHECK.png | Bin 0 -> 7410 bytes assets/ui/REWARD_GOTO_COMMISSION.png | Bin 0 -> 8481 bytes config/main_template.conf | 20 + main.pyw | 30 ++ module/base/ocr.py | 9 +- module/base/timer.py | 15 + module/config/config.py | 37 +- module/config/dictionary.py | 20 + module/reward/assets.py | 8 + module/reward/commission.py | 465 ++++++++++++++++++ module/reward/reward.py | 18 +- module/ui/assets.py | 2 + module/ui/page.py | 7 + 21 files changed, 619 insertions(+), 12 deletions(-) create mode 100644 assets/reward/COMMISSION_ADVICE.png create mode 100644 assets/reward/COMMISSION_DAILY.png create mode 100644 assets/reward/COMMISSION_HAS_PENDING.png create mode 100644 assets/reward/COMMISSION_NOTICE_AT_CAMPAIGN.png create mode 100644 assets/reward/COMMISSION_OIL_CONFIRM.png create mode 100644 assets/reward/COMMISSION_START.png create mode 100644 assets/reward/COMMISSION_STOP_SCROLLING.png create mode 100644 assets/reward/COMMISSION_URGENT.png create mode 100644 assets/ui/COMMISSION_CHECK.png create mode 100644 assets/ui/REWARD_GOTO_COMMISSION.png create mode 100644 module/reward/commission.py diff --git a/assets/reward/COMMISSION_ADVICE.png b/assets/reward/COMMISSION_ADVICE.png new file mode 100644 index 0000000000000000000000000000000000000000..8f8c8c4040ea5b0e22a22f997c2e2d222aab40ee GIT binary patch literal 14005 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 UxccVCW%dqes_Cj$Kd^c6KhA;``Tzg` literal 0 HcmV?d00001 diff --git a/assets/reward/COMMISSION_HAS_PENDING.png b/assets/reward/COMMISSION_HAS_PENDING.png new file mode 100644 index 0000000000000000000000000000000000000000..6132f09e0c9def5ea71ee70ca73f505cf160a37a GIT binary patch literal 5569 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 literal 0 HcmV?d00001 diff --git a/assets/reward/COMMISSION_OIL_CONFIRM.png b/assets/reward/COMMISSION_OIL_CONFIRM.png new file mode 100644 index 0000000000000000000000000000000000000000..2334f0bcd9a4ca12555e2ec5778d35289c8f63dc GIT binary patch literal 10023 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 a$pyfh_f56T?RE0m@~Vnj3KdUZy#61xI8P1$ literal 0 HcmV?d00001 diff --git a/assets/reward/COMMISSION_START.png b/assets/reward/COMMISSION_START.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf507b598aa11133191e72d5514715ff193483c GIT binary patch literal 13432 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 literal 0 HcmV?d00001 diff --git a/assets/reward/COMMISSION_STOP_SCROLLING.png b/assets/reward/COMMISSION_STOP_SCROLLING.png new file mode 100644 index 0000000000000000000000000000000000000000..8be7ef16b7cae860714eed7c3dbbd539ace49011 GIT binary patch literal 11447 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 literal 0 HcmV?d00001 diff --git a/assets/reward/COMMISSION_URGENT.png b/assets/reward/COMMISSION_URGENT.png new file mode 100644 index 0000000000000000000000000000000000000000..0fb8a0a241ad4c6f993297ac14d8329261a0f5b2 GIT binary patch literal 7787 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 H^!$GSB7$fD literal 0 HcmV?d00001 diff --git a/assets/ui/COMMISSION_CHECK.png b/assets/ui/COMMISSION_CHECK.png new file mode 100644 index 0000000000000000000000000000000000000000..5e52c15d7096838bd23ccad68391c6be16cdf1d8 GIT binary patch literal 7410 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 literal 0 HcmV?d00001 diff --git a/assets/ui/REWARD_GOTO_COMMISSION.png b/assets/ui/REWARD_GOTO_COMMISSION.png new file mode 100644 index 0000000000000000000000000000000000000000..5dd5ab6334627362206d75c659b3e219ea6ef641 GIT binary patch literal 8481 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 OsHUu;RP@O5_5T3|!`uu2 literal 0 HcmV?d00001 diff --git a/config/main_template.conf b/config/main_template.conf index 5a823e808..814e1042d 100644 --- a/config/main_template.conf +++ b/config/main_template.conf @@ -46,6 +46,26 @@ reward_interval = 20 enable_oil_reward = yes enable_coin_reward = yes enable_mission_reward = yes +enable_commission_reward = yes +commission_time_limit = 23:30 +duration_shorter_than_2 = 11 +duration_longer_than_6 = -11 +expire_shorter_than_2 = 11 +expire_longer_than_6 = -11 +daily_comm = 100 +major_comm = 0 +extra_drill = 20 +extra_part = 60 +extra_cube = 80 +extra_oil = 90 +extra_book = 70 +urgent_drill = 45 +urgent_part = 95 +urgent_cube = 165 +urgent_book = 145 +urgent_box = 195 +urgent_gem = 205 +urgent_ship = 155 [Emulator] command = emulator diff --git a/main.pyw b/main.pyw index f113c8b27..c61ad6660 100644 --- a/main.pyw +++ b/main.pyw @@ -154,6 +154,36 @@ def main(): reward_mission = reward_parser.add_argument_group('任务奖励', '') reward_mission.add_argument('--启用任务收获', default=default('--启用任务收获'), choices=['是', '否']) + reward_commission = reward_parser.add_argument_group('委托设置', '') + reward_commission.add_argument('--启用委托收获', default=default('--启用委托收获'), choices=['是', '否']) + reward_commission.add_argument('--委托时间限制', default=default('--委托时间限制'), help='忽略完成时间超过限制的委托, 格式: 23:30') + + priority1 = reward_commission.add_argument_group('委托耗时优先级', '') + priority1.add_argument('--委托耗时小于2h', default=default('--委托耗时小于2h'), help='') + priority1.add_argument('--委托耗时超过6h', default=default('--委托耗时超过6h'), help='') + priority1.add_argument('--委托过期小于2h', default=default('--委托过期小于2h'), help='') + priority1.add_argument('--委托过期大于6h', default=default('--委托过期大于6h'), help='') + + priority2 = reward_commission.add_argument_group('日常委托优先级', '') + priority2.add_argument('--日常委托', default=default('--日常委托'), help='日常资源开发, 高阶战术研发') + priority2.add_argument('--主要委托', default=default('--主要委托'), help='1200油/1000油委托') + + priority3 = reward_commission.add_argument_group('额外委托优先级', '') + priority3.add_argument('--钻头类额外委托', default=default('--钻头类额外委托'), help='短距离航行训练, 近海防卫巡逻') + priority3.add_argument('--部件类额外委托', default=default('--部件类额外委托'), help='矿脉护卫委托, 林木护卫委托') + priority3.add_argument('--魔方类额外委托', default=default('--魔方类额外委托'), help='舰队高阶演习, 舰队护卫演习') + priority3.add_argument('--石油类额外委托', default=default('--石油类额外委托'), help='小型油田开发, 大型油田开发') + priority3.add_argument('--教材类额外委托', default=default('--教材类额外委托'), help='小型商船护卫, 大型商船护卫') + + priority4 = reward_commission.add_argument_group('紧急委托优先级', '') + priority4.add_argument('--钻头类紧急委托', default=default('--钻头类紧急委托'), help='保卫运输部队, 歼灭敌精锐部队') + priority4.add_argument('--部件类紧急委托', default=default('--部件类紧急委托'), help='支援维拉维拉岛, 支援恐班纳') + priority4.add_argument('--魔方类紧急委托', default=default('--魔方类紧急委托'), help='解救商船, 敌袭') + priority4.add_argument('--教材类紧急委托', default=default('--教材类紧急委托'), help='支援土豪尔岛, 支援萌岛') + priority4.add_argument('--装备类紧急委托', default=default('--装备类紧急委托'), help='BIW装备运输, NYB装备研发') + priority4.add_argument('--钻石类紧急委托', default=default('--钻石类紧急委托'), help='BIW要员护卫, NYB巡视护卫') + priority4.add_argument('--观舰类紧急委托', default=default('--观舰类紧急委托'), help='小型观舰仪式, 同盟观舰仪式') + # ==========设备设置========== emulator_parser = subs.add_parser('设备设置') emulator = emulator_parser.add_argument_group('模拟器', '') diff --git a/module/base/ocr.py b/module/base/ocr.py index 1687d92c2..358b35bbd 100644 --- a/module/base/ocr.py +++ b/module/base/ocr.py @@ -16,6 +16,8 @@ OCR_MODELS = { # Font: Impact # Charset: 0123456789ABCDEFSP-:/ 'stage': CnOcr(root='./cnocr_models/stage', model_epoch=56), + + 'cnocr': CnOcr(root='./cnocr_models/cnocr', model_epoch=20) } image_shape = (280, 32) width_range = (0.6, 1.4) @@ -26,7 +28,7 @@ y_range = (-2, 2) class Ocr: def __init__(self, buttons, lang, letter=(255, 255, 255), back=(0, 0, 0), mid_process_height=70, threshold=127, - additional_preprocess=None, length=None, white_list=None, name='OCR'): + additional_preprocess=None, use_binary=True, length=None, white_list=None, name='OCR'): """ Args: lang (str): OCR model. in ['digit', 'cnocr']. @@ -34,6 +36,7 @@ class Ocr: back (tuple(int)): Background RGB. mid_process_height (int): 70 additional_preprocess (callable): + use_binary (bool): length (int, tuple(int)): Expected length. white_list (str): Expected str. buttons (Button, List[Button]): Button or list of Button instance. @@ -45,6 +48,7 @@ class Ocr: self.mid_process_height = mid_process_height self.threshold = threshold self.additional_preprocess = additional_preprocess + self.use_binary=use_binary self.length = (length, length) if isinstance(length, int) else length self.white_list = white_list self.buttons = buttons if isinstance(buttons, list) else [buttons] @@ -80,7 +84,8 @@ class Ocr: image = self.additional_preprocess(image) # Binarization. - _, image = cv2.threshold(image, self.threshold, 255, cv2.THRESH_BINARY) + if self.use_binary: + _, image = cv2.threshold(image, self.threshold, 255, cv2.THRESH_BINARY) # Resize to input size. size = (int(image.shape[1] / image.shape[0] * image_shape[1]), image_shape[1]) diff --git a/module/base/timer.py b/module/base/timer.py index 454cf4634..2ba3b242b 100644 --- a/module/base/timer.py +++ b/module/base/timer.py @@ -1,4 +1,5 @@ import time +from datetime import datetime, timedelta from functools import wraps from module.logger import logger @@ -16,6 +17,20 @@ def timer(function): return function_timer +def future_time(string): + """ + Args: + string (str): Such as 14:59. + + Returns: + datetime: Time with given hour, minute, second in the future. + """ + hour, minute = [int(x) for x in string.split(':')] + future = datetime.now().replace(hour=hour, minute=minute, second=0, microsecond=0) + future = future + timedelta(days=1) if future < datetime.now() else future + return future + + class Timer: def __init__(self, limit): self.limit = limit diff --git a/module/config/config.py b/module/config/config.py index 5aa950ce8..1c3fcd6b4 100644 --- a/module/config/config.py +++ b/module/config/config.py @@ -2,12 +2,13 @@ import codecs import configparser import copy import os -from datetime import datetime, timedelta -import cv2 +from datetime import datetime +import cv2 import numpy as np from PIL import Image +from module.base.timer import future_time from module.config.dictionary import * from module.logger import logger @@ -240,6 +241,28 @@ class AzurLaneConfig: ENABLE_OIL_REWARD = True ENABLE_COIN_REWARD = True ENABLE_MISSION_REWARD = True + ENABLE_COMMISSION_REWARD = True + COMMISSION_PRIORITY = { + 'major_comm': 0, + 'daily_comm': 100, + 'extra_drill': 20, + 'extra_part': 60, + 'extra_cube': 80, + 'extra_oil': 90, + 'extra_book': 70, + 'urgent_drill': 45, + 'urgent_part': 95, + 'urgent_book': 145, + 'urgent_box': 195, + 'urgent_cube': 165, + 'urgent_gem': 205, + 'urgent_ship': 155, + 'expire_shorter_than_2': 11, + 'expire_longer_than_6': -11, + 'duration_shorter_than_2': 11, + 'duration_longer_than_6': -11, + } + COMMISSION_TIME_LIMIT = 0 """ C_7_2_mystery_farming @@ -302,10 +325,7 @@ class AzurLaneConfig: self.ENABLE_STOP_CONDITION = to_bool(option['enable_stop_condition']) self.STOP_IF_COUNT_GREATER_THAN = int(option['if_count_greater_than']) if not option['if_time_reach'].isdigit(): - hour, minute = [int(x) for x in option['if_time_reach'].split(':')] - limit = datetime.now().replace(hour=hour, minute=minute, second=0, microsecond=0) - limit = limit + timedelta(1) if limit < datetime.now() else limit - self.STOP_IF_TIME_REACH = limit + self.STOP_IF_TIME_REACH = future_time(option['if_time_reach']) else: self.STOP_IF_TIME_REACH = 0 self.STOP_IF_OIL_LOWER_THAN = int(option['if_oil_lower_than']) @@ -340,8 +360,11 @@ class AzurLaneConfig: # Reward option = config['Reward'] self.REWARD_INTERVAL = int(option['reward_interval']) - for attr in ['enable_reward', 'enable_oil_reward', 'enable_coin_reward', 'enable_mission_reward']: + for attr in ['enable_reward', 'enable_oil_reward', 'enable_coin_reward', 'enable_mission_reward', 'enable_commission_reward']: self.__setattr__(attr.upper(), to_bool(option[attr])) + self.COMMISSION_TIME_LIMIT = future_time(option['commission_time_limit']) + for attr in self.COMMISSION_PRIORITY.keys(): + self.COMMISSION_PRIORITY[attr] = int(option[attr]) option = config['Main'] self.CAMPAIGN_NAME = option['main_stage'] diff --git a/module/config/dictionary.py b/module/config/dictionary.py index a6d38be70..2384a2701 100644 --- a/module/config/dictionary.py +++ b/module/config/dictionary.py @@ -76,6 +76,26 @@ dic_chi_to_eng = { '启用石油收获': 'enable_oil_reward', '启用物资收获': 'enable_coin_reward', '启用任务收获': 'enable_mission_reward', + '启用委托收获': 'enable_commission_reward', + '委托时间限制': 'commission_time_limit', + '委托耗时小于2h': 'duration_shorter_than_2', + '委托耗时超过6h': 'duration_longer_than_6', + '委托过期小于2h': 'expire_shorter_than_2', + '委托过期大于6h': 'expire_longer_than_6', + '日常委托': 'daily_comm', + '主要委托': 'major_comm', + '钻头类额外委托': 'extra_drill', + '部件类额外委托': 'extra_part', + '魔方类额外委托': 'extra_cube', + '石油类额外委托': 'extra_oil', + '教材类额外委托': 'extra_book', + '钻头类紧急委托': 'urgent_drill', + '部件类紧急委托': 'urgent_part', + '魔方类紧急委托': 'urgent_cube', + '教材类紧急委托': 'urgent_book', + '装备类紧急委托': 'urgent_box', + '钻石类紧急委托': 'urgent_gem', + '观舰类紧急委托': 'urgent_ship', '设备': 'serial', '打每日': 'enable_daily_mission', '打困难': 'enable_hard_campaign', diff --git a/module/reward/assets.py b/module/reward/assets.py index d50479cef..ca05b2e7a 100644 --- a/module/reward/assets.py +++ b/module/reward/assets.py @@ -5,6 +5,14 @@ from module.base.template import Template # Don't modified it manually. COIN = Button(area=(403, 64, 436, 88), color=(226, 173, 72), button=(403, 64, 436, 88), file='./assets/reward/COIN.png') +COMMISSION_ADVICE = Button(area=(871, 322, 999, 383), color=(230, 177, 116), button=(871, 322, 999, 383), file='./assets/reward/COMMISSION_ADVICE.png') +COMMISSION_DAILY = Button(area=(35, 132, 67, 186), color=(208, 172, 118), button=(35, 132, 67, 186), file='./assets/reward/COMMISSION_DAILY.png') +COMMISSION_HAS_PENDING = Button(area=(357, 300, 359, 330), color=(86, 201, 173), button=(357, 300, 359, 330), file='./assets/reward/COMMISSION_HAS_PENDING.png') +COMMISSION_NOTICE_AT_CAMPAIGN = Button(area=(1054, 647, 1061, 654), color=(197, 89, 64), button=(1054, 647, 1061, 654), file='./assets/reward/COMMISSION_NOTICE_AT_CAMPAIGN.png') +COMMISSION_OIL_CONFIRM = Button(area=(704, 493, 876, 550), color=(96, 145, 204), button=(704, 493, 876, 550), file='./assets/reward/COMMISSION_OIL_CONFIRM.png') +COMMISSION_START = Button(area=(1028, 322, 1156, 383), color=(229, 175, 113), button=(1028, 322, 1156, 383), file='./assets/reward/COMMISSION_START.png') +COMMISSION_STOP_SCROLLING = Button(area=(115, 236, 179, 487), color=(50, 55, 74), button=(115, 236, 179, 487), file='./assets/reward/COMMISSION_STOP_SCROLLING.png') +COMMISSION_URGENT = Button(area=(35, 231, 68, 281), color=(215, 188, 124), button=(35, 231, 68, 281), file='./assets/reward/COMMISSION_URGENT.png') EXP_INFO_S_REWARD = Button(area=(498, 140, 557, 154), color=(233, 241, 127), button=(498, 140, 557, 154), file='./assets/reward/EXP_INFO_S_REWARD.png') MISSION_MULTI = Button(area=(1041, 8, 1101, 39), color=(226, 192, 142), button=(1041, 8, 1101, 39), file='./assets/reward/MISSION_MULTI.png') MISSION_NOTICE = Button(area=(940, 670, 945, 681), color=(183, 83, 66), button=(940, 670, 945, 681), file='./assets/reward/MISSION_NOTICE.png') diff --git a/module/reward/commission.py b/module/reward/commission.py new file mode 100644 index 000000000..91ca35529 --- /dev/null +++ b/module/reward/commission.py @@ -0,0 +1,465 @@ +import re +from datetime import datetime, timedelta + +import cv2 +import numpy as np +from scipy import signal + +from module.base.ocr import Ocr +from module.base.timer import Timer +from module.base.utils import area_offset, get_color +from module.handler.info_bar import InfoBarHandler +from module.logger import logger +from module.reward.assets import * +from module.ui.page import page_reward, page_commission +from module.ui.ui import UI + +dictionary = { + 'major_comm': ['自主训练', '对抗演习', '科研任务', '工具整备', '战术课程', '货物运输'], + 'daily_comm': ['日常资源开发', '高阶战术研发'], + 'extra_drill': ['航行训练', '防卫巡逻', '海域浮标检查作业'], + 'extra_part': ['委托'], + 'extra_cube': ['演习'], + 'extra_oil': ['油田'], + 'extra_book': ['商船护卫'], + 'urgent_drill': ['运输部队', '侦查部队', '主力部队', '精锐部队'], + 'urgent_part': ['维拉', '伊', '多伦瓦', '恐班纳'], + 'urgent_book': ['土豪尔', '姆波罗', '马拉基', '卡波罗', '马内', '玛丽', '萌', '特林'], + 'urgent_box': ['装备', '物资'], + 'urgent_cube': ['解救', '敌袭'], + 'urgent_gem': ['要员', '度假', '巡视'], + 'urgent_ship': ['观舰'] +} + + +class Commission: + def __init__(self, image, y): + self.y = y + self.stack_y = y + self.area = (188, y - 119, 1199, y) + self.image = image + self.valid = True + + # Name + area = area_offset((211, 26, 415, 49), self.area[0:2]) + button = Button(area=area, color=(), button=area, name='COMMISSION') + ocr = Ocr(button, lang='cnocr', back=(74, 97, 148), use_binary=False) + self.button = button + self.name = ocr.ocr(image) + self.genre = self.parse_name(self.name) + + # Duration time + area = area_offset((290, 74, 390, 92), self.area[0:2]) + button = Button(area=area, color=(), button=area, name='DURATION') + ocr = Ocr(button, lang='stage', back=(57, 85, 132)) + self.duration = self.parse_time(ocr.ocr(image)) + + # Expire time + area = area_offset((-49, 68, -45, 84), self.area[0:2]) + button = Button(area=area, color=(189, 65, 66), button=area, name='IS_URGENT') + if button.appear_on(image): + area = area_offset((-49, 73, 45, 91), self.area[0:2]) + button = Button(area=area, color=(), button=area, name='EXPIRE') + ocr = Ocr(button, lang='stage', back=(189, 65, 66)) + self.expire = self.parse_time(ocr.ocr(image)) + else: + self.expire = None + + # Status + area = area_offset((179, 71, 187, 93), self.area[0:2]) + dic = { + 0: 'finished', + 1: 'running', + 2: 'pending' + } + self.status = dic[int(np.argmax(get_color(image, area)))] + + def __str__(self): + if self.valid: + if self.expire: + return f'{self.name} (Genre: {self.genre}, Status: {self.status}, Duration: {self.duration}, Expire: {self.expire})' + else: + return f'{self.name} (Genre: {self.genre}, Status: {self.status}, Duration: {self.duration})' + else: + return f'{self.name} (Invalid)' + + def __eq__(self, other): + """ + Args: + other (Commission): + + Returns: + bool: + """ + threshold = timedelta(seconds=30) + if not self.valid or not other.valid: + return False + if self.genre != other.genre or self.status != other.status: + return False + if (other.duration < self.duration - threshold) or (other.duration > self.duration + threshold): + return False + if (not self.expire and other.expire) or (self.expire and not other.expire): + return False + if self.expire and other.expire: + if (other.expire < self.expire - threshold) or (other.expire > self.expire + threshold): + return False + + return True + + def parse_time(self, string): + """ + Args: + string (str): Such as 01:00:00, 05:47:10, 17:50:51. + + Returns: + timedelta: datetime.timedelta instance. + """ + string = string.replace('D', '0') # Poor OCR + result = re.search('(\d+):(\d+):(\d+)', string) + if not result: + logger.warning(f'Invalid time string: {string}') + self.valid = False + return None + else: + result = [int(s) for s in result.groups()] + return timedelta(hours=result[0], minutes=result[1], seconds=result[2]) + + def parse_name(self, string): + """ + Args: + string (str): Commission name, such as 'NYB要员护卫'. + + Returns: + str: Commission genre, such as 'urgent_gem'. + """ + for key, value in dictionary.items(): + for keyword in value: + if keyword in string: + return key + + logger.warning(f'Name with unknown genre: {string}') + self.valid = False + return '' + + +class CommissionGroup: + show = (188, 67, 1199, 692) + height = 210 # About 1.5 commission height + lower = int((show[3] - show[1]) / 2 - height / 2) + template_area = (620, lower, 1154, lower + height) + + def __init__(self): + self.template = None + self.swipe = 0 + self.commission = [] + + def __contains__(self, item): + for commission in self.commission: + if commission == item: + return True + + return False + + def __iter__(self): + return iter(self.commission) + + def __bool__(self): + return len(self.commission) > 0 + + @property + def count(self): + return len(self.commission) + + def merge(self, image): + """Load commissions from image. + If you want to load commissions from multiple image, + make sure that the next one and previous one have something same. + Which means, you merge a image, then swipe a little bit, then merge another image. + + Args: + image (PIl.Image.Image): + """ + # Find swipe distance + if self.template is None: + self.template = np.array(image.crop(self.template_area)) + self.swipe = 0 + res = cv2.matchTemplate(self.template, np.array(image), cv2.TM_CCOEFF_NORMED) + _, similarity, _, position = cv2.minMaxLoc(res) + if similarity < 0.85: + logger.warning(f'Low similarity when finding swipe. Similarity: {similarity}, Position: {position}') + self.swipe -= position[1] - self.template_area[1] + self.template = np.array(image.crop(self.template_area)) + + # Find commission position + color_height = np.mean(image.crop((597, 0, 619, 720)).convert('L'), axis=1) + parameters = {'height': 200} + peaks, _ = signal.find_peaks(color_height, **parameters) + peaks = [y for y in peaks if y > 67 + 117] + + # Add commission to list + for y in peaks: + stack_y = y + self.swipe + diff = np.array([c.stack_y - stack_y for c in self.commission]) + if np.any(np.abs(diff) < 3): + continue + commission = Commission(image, y=y) + commission.stack_y = stack_y + logger.info(f'Add commission: {commission}') + self.commission.append(commission) + + +def commission_choose(daily, urgent, priority, time_limit=None): + """ + Args: + daily (CommissionGroup): + urgent (CommissionGroup): + priority (dict): + time_limit (datetime): + + Returns: + CommissionGroup, CommissionGroup: Chosen daily commission, Chosen urgent commission + """ + # Count Commission + commission = daily.commission + urgent.commission + running_count = np.sum([1 for c in commission if c.status == 'running']) + logger.attr('Running', running_count) + if running_count >= 4: + return [], [] + + # Calculate priority + commission = [c for c in commission if c.valid and c.status == 'pending'] + comm_priority = [] + for comm in commission: + pri = priority[comm.genre] + if comm.duration <= timedelta(hours=2): + pri += priority['duration_shorter_than_2'] + if comm.duration >= timedelta(hours=6): + pri += priority['duration_longer_than_6'] + if comm.expire: + if comm.expire <= timedelta(hours=2): + pri += priority['expire_shorter_than_2'] + if comm.expire >= timedelta(hours=6): + pri += priority['expire_longer_than_6'] + comm_priority.append(pri) + + # Sort + commission = list(np.array(commission)[np.argsort(comm_priority)])[::-1] + if time_limit: + commission = [comm for comm in commission if datetime.now() + comm.duration <= time_limit] + commission = commission[:4 - running_count] + daily_choose, urgent_choose = CommissionGroup(), CommissionGroup() + for comm in commission: + if comm in daily: + daily_choose.commission.append(comm) + if comm in urgent: + urgent_choose.commission.append(comm) + + if daily_choose: + logger.info('Choose daily commission') + for comm in daily_choose: + logger.info(comm) + if urgent_choose: + logger.info('Choose urgent commission') + for comm in urgent_choose: + logger.info(comm) + + return daily_choose, urgent_choose + + +class RewardCommission(UI, InfoBarHandler): + daily: CommissionGroup + urgent: CommissionGroup + daily_choose: CommissionGroup + urgent_choose: CommissionGroup + + def _commission_ensure_mode(self, mode): + if self.appear(COMMISSION_DAILY): + current = 'daily' + elif self.appear(COMMISSION_URGENT): + current = 'urgent' + else: + logger.warning('Unknown Commission mode') + return False + if current == mode: + return False + + if mode == 'daily': + self.device.click(COMMISSION_DAILY) + if mode == 'urgent': + self.device.click(COMMISSION_URGENT) + + self.device.sleep(0.3) + self.device.screenshot() + return True + + def _commission_mode_reset(self): + if self.appear(COMMISSION_DAILY): + current, another = COMMISSION_DAILY, COMMISSION_URGENT + elif self.appear(COMMISSION_URGENT): + current, another = COMMISSION_URGENT, COMMISSION_DAILY + else: + logger.warning('Unknown Commission mode') + return False + + self.device.click(another) + self.device.screenshot() + self.device.click(current) + self.device.sleep(0.3) + self.device.screenshot() + + return True + + def _commission_swipe(self, distance=180): + # Distance of two commission is 146px + self.device.swipe((0, -distance), box=(620, 67, 1154, 692), random_range=(-20, -5, 20, 5)) + self.device.click(COMMISSION_STOP_SCROLLING) + self.device.sleep(0.3) + self.device.screenshot() + + def _commission_scan_list(self): + commission = CommissionGroup() + commission.merge(self.device.image) + if commission.count <= 3: + return commission + + prev = commission.count + for _ in range(15): + self._commission_swipe() + commission.merge(self.device.image) + if commission.count - prev <= 0: + break + prev = commission.count + + return commission + + def _commission_scan_all(self): + logger.hr('Scan daily') + self._commission_ensure_mode('daily') + daily = self._commission_scan_list() + + logger.hr('Scan urgent') + self._commission_ensure_mode('urgent') + urgent = self._commission_scan_list() + + logger.hr('Showing commission') + logger.info('Daily commission') + for comm in daily: + logger.info(comm) + if urgent.count: + logger.info('Urgent commission') + for comm in urgent: + logger.info(comm) + + self.daily = daily + self.urgent = urgent + self.daily_choose, self.urgent_choose = commission_choose( + self.daily, + self.urgent, + priority=self.config.COMMISSION_PRIORITY, + time_limit=self.config.COMMISSION_TIME_LIMIT) + return daily, urgent + + def _commission_start_click(self, comm): + """ + Args: + comm (Commission): + """ + logger.info(f'Start commission {comm}') + comm_timer = Timer(3) + while 1: + if comm_timer.reached(): + self.device.click(comm.button) + comm_timer.reset() + + if self.appear_then_click(COMMISSION_OIL_CONFIRM, offset=True, interval=3): + pass + if self.appear_then_click(COMMISSION_START, interval=3): + pass + if self.appear_then_click(COMMISSION_ADVICE, interval=3): + pass + + if self.handle_info_bar(): + break + + self.device.screenshot() + + return True + + def _commission_find_and_start(self, comm): + """ + Args: + comm (Commission): + """ + logger.hr(f'Finding commission') + logger.info(f'Finding commission {comm}') + + commission = CommissionGroup() + prev = 0 + for _ in range(15): + commission.merge(self.device.image) + + if commission.count - prev <= 0: + return True + prev = commission.count + + if comm in commission: + # Update commission position. + # Because once you start a commission, the commission list changes. + for new_comm in commission: + if comm == new_comm: + comm = new_comm + self._commission_start_click(comm) + self._commission_mode_reset() + return True + + self._commission_swipe() + + logger.warning(f'Commission not found: {comm}') + return False + + def commission_start(self): + """ + Method to scan and run commissions. + Make sure current page is page_commission before calls. + """ + logger.hr('Commission scan', level=2) + self._commission_scan_all() + + logger.hr('Commission run', level=2) + if self.daily_choose: + for comm in self.daily_choose: + self._commission_ensure_mode('daily') + self._commission_find_and_start(comm) + if self.urgent_choose: + for comm in self.urgent_choose: + self._commission_ensure_mode('urgent') + self._commission_find_and_start(comm) + if not self.daily_choose and not self.urgent_choose: + logger.info('No commission chose') + + def handle_commission_start(self): + """Make sure current page is page_reward before calls. + + Returns: + bool: If runs a commission. + """ + if not self.config.ENABLE_COMMISSION_REWARD: + return False + self.device.screenshot() + if not self.appear(COMMISSION_HAS_PENDING): + logger.info('No commission pending') + return False + + self.ui_goto(page_commission) + + self.commission_start() + + self.ui_goto(page_reward, skip_first_screenshot=True) + + def commission_notice_show_at_campaign(self): + """Make sure current page is page_campaign before calls. + + Returns: + bool: If any commission finished. + """ + return self.appear(COMMISSION_NOTICE_AT_CAMPAIGN) diff --git a/module/reward/reward.py b/module/reward/reward.py index 73f5bc709..91922238b 100644 --- a/module/reward/reward.py +++ b/module/reward/reward.py @@ -5,10 +5,10 @@ from module.combat.assets import * from module.logger import logger from module.reward.assets import * from module.ui.page import * -from module.ui.ui import UI +from module.reward.commission import RewardCommission -class Reward(UI): +class Reward(RewardCommission): def reward(self): logger.hr('Reward start') self.ui_goto_main() @@ -17,6 +17,8 @@ class Reward(UI): self.ui_goto(page_reward, skip_first_screenshot=True) self._reward_receive() + self.handle_info_bar() + self.handle_commission_start() self.ui_click( click_button=page_reward.links[page_main], @@ -47,6 +49,16 @@ class Reward(UI): exit_timer = Timer(1) click_timer = Timer(1) exit_timer.start() + btn = [] + if self.config.ENABLE_REWARD: + btn.append(REWARD_3) + if self.config.ENABLE_COMMISSION_REWARD: + btn.append(REWARD_1) + if self.config.ENABLE_OIL_REWARD: + btn.append(OIL) + if self.config.ENABLE_COIN_REWARD: + btn.append(COIN) + while 1: self.device.screenshot() @@ -57,7 +69,7 @@ class Reward(UI): reward = True continue - for button in [REWARD_1, REWARD_3, OIL, COIN]: + for button in btn: if not click_timer.reached(): continue if self.appear_then_click(button, interval=1): diff --git a/module/ui/assets.py b/module/ui/assets.py index 72f059c3d..66dbb0152 100644 --- a/module/ui/assets.py +++ b/module/ui/assets.py @@ -8,6 +8,7 @@ BACK_ARROW = Button(area=(36, 53, 82, 55), color=(251, 251, 255), button=(33, 31 CAMPAIGN_GOTO_DAILY = Button(area=(804, 648, 892, 703), color=(189, 145, 78), button=(804, 648, 892, 703), file='./assets/ui/CAMPAIGN_GOTO_DAILY.png') CAMPAIGN_GOTO_EVENT = Button(area=(804, 648, 892, 703), color=(189, 145, 78), button=(1178, 171, 1230, 223), file='./assets/ui/CAMPAIGN_GOTO_EVENT.png') CAMPAIGN_GOTO_EXERCISE = Button(area=(1166, 648, 1248, 703), color=(177, 136, 69), button=(1166, 648, 1248, 703), file='./assets/ui/CAMPAIGN_GOTO_EXERCISE.png') +COMMISSION_CHECK = Button(area=(122, 16, 175, 39), color=(157, 173, 210), button=(122, 16, 175, 39), file='./assets/ui/COMMISSION_CHECK.png') DAILY_CHECK = Button(area=(23, 656, 67, 698), color=(84, 139, 210), button=(23, 656, 67, 698), file='./assets/ui/DAILY_CHECK.png') EVENT_CHECK = Button(area=(123, 63, 206, 109), color=(88, 104, 138), button=(123, 63, 206, 109), file='./assets/ui/EVENT_CHECK.png') EXERCISE_CHECK = Button(area=(1065, 340, 1204, 382), color=(129, 166, 220), button=(1065, 340, 1204, 382), file='./assets/ui/EXERCISE_CHECK.png') @@ -20,5 +21,6 @@ MAIN_GOTO_REWARD = Button(area=(11, 139, 30, 189), color=(69, 81, 115), button=( MISSION_CHECK = Button(area=(120, 15, 173, 40), color=(141, 156, 194), button=(120, 15, 173, 40), file='./assets/ui/MISSION_CHECK.png') OCR_OIL_CV = Button(area=(634, 27, 714, 48), color=(93, 95, 109), button=(634, 27, 714, 48), file='./assets/ui/OCR_OIL_CV.png') REWARD_CHECK = Button(area=(302, 119, 371, 195), color=(146, 118, 120), button=(302, 119, 371, 195), file='./assets/ui/REWARD_CHECK.png') +REWARD_GOTO_COMMISSION = Button(area=(383, 262, 503, 302), color=(91, 136, 199), button=(383, 262, 503, 302), file='./assets/ui/REWARD_GOTO_COMMISSION.png') REWARD_GOTO_MAIN = Button(area=(1037, 611, 1107, 656), color=(134, 122, 127), button=(1037, 611, 1107, 656), file='./assets/ui/REWARD_GOTO_MAIN.png') SP_CHECK = Button(area=(123, 63, 206, 109), color=(95, 110, 145), button=(123, 63, 206, 109), file='./assets/ui/SP_CHECK.png') diff --git a/module/ui/page.py b/module/ui/page.py index b0bfb0e9b..a9259e7b7 100644 --- a/module/ui/page.py +++ b/module/ui/page.py @@ -70,3 +70,10 @@ page_main.link(button=MAIN_GOTO_REWARD, destination=page_reward) page_mission = Page(MISSION_CHECK) page_mission.link(button=GOTO_MAIN, destination=page_main) page_main.link(button=MAIN_GOTO_MISSION, destination=page_mission) + +# Commission +# Please don't goto commission from campaign. +page_commission = Page(COMMISSION_CHECK) +page_commission.link(button=GOTO_MAIN, destination=page_main) +page_commission.link(button=BACK_ARROW, destination=page_reward) +page_reward.link(button=REWARD_GOTO_COMMISSION, destination=page_commission)