diff --git a/assets/cn/research_farming/SHIP_EXPERIENCE_COMMIT_1.png b/assets/cn/research_farming/SHIP_EXPERIENCE_COMMIT_1.png new file mode 100644 index 000000000..4cfa62304 Binary files /dev/null and b/assets/cn/research_farming/SHIP_EXPERIENCE_COMMIT_1.png differ diff --git a/assets/cn/research_farming/SHIP_EXPERIENCE_COMMIT_2.png b/assets/cn/research_farming/SHIP_EXPERIENCE_COMMIT_2.png new file mode 100644 index 000000000..017456c93 Binary files /dev/null and b/assets/cn/research_farming/SHIP_EXPERIENCE_COMMIT_2.png differ diff --git a/assets/cn/research_farming/SHIP_EXPERIENCE_COMPLETE_1.png b/assets/cn/research_farming/SHIP_EXPERIENCE_COMPLETE_1.png new file mode 100644 index 000000000..b1978f264 Binary files /dev/null and b/assets/cn/research_farming/SHIP_EXPERIENCE_COMPLETE_1.png differ diff --git a/assets/cn/research_farming/SHIP_EXPERIENCE_COMPLETE_2.png b/assets/cn/research_farming/SHIP_EXPERIENCE_COMPLETE_2.png new file mode 100644 index 000000000..adb76f593 Binary files /dev/null and b/assets/cn/research_farming/SHIP_EXPERIENCE_COMPLETE_2.png differ diff --git a/assets/cn/research_farming/SHIP_EXPERIENCE_FINISHED_1.png b/assets/cn/research_farming/SHIP_EXPERIENCE_FINISHED_1.png new file mode 100644 index 000000000..b17a1d51c Binary files /dev/null and b/assets/cn/research_farming/SHIP_EXPERIENCE_FINISHED_1.png differ diff --git a/assets/cn/research_farming/SHIP_EXPERIENCE_FINISHED_2.png b/assets/cn/research_farming/SHIP_EXPERIENCE_FINISHED_2.png new file mode 100644 index 000000000..eda370867 Binary files /dev/null and b/assets/cn/research_farming/SHIP_EXPERIENCE_FINISHED_2.png differ diff --git a/assets/cn/research_farming/SHIP_EXPERIENCE_PERCENT_1.png b/assets/cn/research_farming/SHIP_EXPERIENCE_PERCENT_1.png new file mode 100644 index 000000000..11344a7aa Binary files /dev/null and b/assets/cn/research_farming/SHIP_EXPERIENCE_PERCENT_1.png differ diff --git a/assets/cn/research_farming/SHIP_EXPERIENCE_PERCENT_2.png b/assets/cn/research_farming/SHIP_EXPERIENCE_PERCENT_2.png new file mode 100644 index 000000000..53547c24a Binary files /dev/null and b/assets/cn/research_farming/SHIP_EXPERIENCE_PERCENT_2.png differ diff --git a/config/template.json b/config/template.json index 2789da24e..a701db2b5 100644 --- a/config/template.json +++ b/config/template.json @@ -68,6 +68,11 @@ "Color": "^AFAAAA", "Record": "2020-01-01 00:00:00" }, + "ResearchPercent": { + "Value": 0, + "Color": "^0000FF", + "Record": "2020-01-01 00:00:00" + }, "Storage": { "Storage": {} } @@ -262,6 +267,11 @@ "GetNewShip": false, "ReachLevel": 0 }, + "ResearchSetting": { + "CurrentCampaignTimes": 0, + "CheckInterval": 5, + "OnepushNotify": false + }, "Fleet": { "Fleet1": 1, "Fleet1Formation": "double_line", diff --git a/module/campaign/run.py b/module/campaign/run.py index aad1b2e5d..e0dae3280 100644 --- a/module/campaign/run.py +++ b/module/campaign/run.py @@ -478,6 +478,15 @@ class CampaignRun(CampaignEvent, ShopStatus): self.device.click_record_clear() try: self.campaign.run() + if self.config.task.command in ['Main2']: + CurrentTimes = self.config.ResearchSetting_CurrentCampaignTimes + 1 + CheckInterval = self.config.ResearchSetting_CheckInterval + self.config.modified["Main2.ResearchSetting.CurrentCampaignTimes"] = CurrentTimes + logger.info(f"Main2:CurrentTimes: {CurrentTimes}, CheckInterval: {CheckInterval}") + if CurrentTimes % CheckInterval == 0: + from module.research_farming.check_research import ResearchFarming + ResearchFarming(config=self.config, device=self.device).CheckResearchShipExperience() + self.config.update() except ScriptEnd as e: logger.hr('Script end') logger.info(str(e)) diff --git a/module/config/argument/args.json b/module/config/argument/args.json index d818cf98e..b19a729bd 100644 --- a/module/config/argument/args.json +++ b/module/config/argument/args.json @@ -207,6 +207,21 @@ "validate": "datetime" } }, + "ResearchPercent": { + "Value": { + "type": "input", + "value": 0 + }, + "Color": { + "type": "input", + "value": "^0000FF" + }, + "Record": { + "type": "datetime", + "value": "2020-01-01 00:00:00", + "validate": "datetime" + } + }, "Storage": { "Storage": { "type": "storage", @@ -1179,6 +1194,20 @@ "value": 0 } }, + "ResearchSetting": { + "CurrentCampaignTimes": { + "type": "input", + "value": 0 + }, + "CheckInterval": { + "type": "input", + "value": 5 + }, + "OnepushNotify": { + "type": "checkbox", + "value": false + } + }, "Fleet": { "Fleet1": { "type": "select", diff --git a/module/config/argument/argument.yaml b/module/config/argument/argument.yaml index 2598c47e3..e84113910 100644 --- a/module/config/argument/argument.yaml +++ b/module/config/argument/argument.yaml @@ -58,6 +58,10 @@ SevenDayStatus: Value: 0 Color: ^AFAAAA Record: 2020-01-01 00:00:00 +ResearchPercent: + Value: 0 + Color: ^0000FF + Record: 2020-01-01 00:00:00 # ==================== Alas ==================== Scheduler: @@ -242,6 +246,10 @@ StopCondition: StageIncrease: false GetNewShip: false ReachLevel: 0 +ResearchSetting: + CurrentCampaignTimes: 0 + CheckInterval: 5 + OnepushNotify: false EventPt: EventPtSwitch: false Event2MapName: diff --git a/module/config/argument/dashboard.yaml b/module/config/argument/dashboard.yaml index ab9244e55..81535ab7b 100644 --- a/module/config/argument/dashboard.yaml +++ b/module/config/argument/dashboard.yaml @@ -16,4 +16,5 @@ Dashboard: - Medal - Merit - GuildCoin - - SevenDayStatus \ No newline at end of file + - SevenDayStatus + - ResearchPercent \ No newline at end of file diff --git a/module/config/argument/gui.yaml b/module/config/argument/gui.yaml index b5bc614bf..43b1f4a94 100644 --- a/module/config/argument/gui.yaml +++ b/module/config/argument/gui.yaml @@ -69,6 +69,7 @@ Overview: Core: GuildCoin: SevenDayStatus: + ResearchPercent: Log: Running: Pending: diff --git a/module/config/argument/task.yaml b/module/config/argument/task.yaml index 783e80a08..9328fb1d7 100644 --- a/module/config/argument/task.yaml +++ b/module/config/argument/task.yaml @@ -42,6 +42,7 @@ Farm: - Scheduler - Campaign - StopCondition + - ResearchSetting - Fleet - Submarine - Emotion diff --git a/module/config/config_generated.py b/module/config/config_generated.py index 13bf489a6..b82952244 100644 --- a/module/config/config_generated.py +++ b/module/config/config_generated.py @@ -77,6 +77,11 @@ class GeneratedConfig: SevenDayStatus_Color = '^AFAAAA' SevenDayStatus_Record = datetime.datetime(2020, 1, 1, 0, 0) + # Group `ResearchPercent` + ResearchPercent_Value = 0 + ResearchPercent_Color = '^0000FF' + ResearchPercent_Record = datetime.datetime(2020, 1, 1, 0, 0) + # Group `Scheduler` Scheduler_Enable = False # True, False Scheduler_NextRun = datetime.datetime(2020, 1, 1, 0, 0) @@ -164,6 +169,11 @@ class GeneratedConfig: StopCondition_GetNewShip = False StopCondition_ReachLevel = 0 + # Group `ResearchSetting` + ResearchSetting_CurrentCampaignTimes = 0 + ResearchSetting_CheckInterval = 5 + ResearchSetting_OnepushNotify = False + # Group `EventPt` EventPt_EventPtSwitch = False EventPt_Event2MapName = 'D3' diff --git a/module/config/i18n/en-US.json b/module/config/i18n/en-US.json index 11706f45e..48c871c62 100644 --- a/module/config/i18n/en-US.json +++ b/module/config/i18n/en-US.json @@ -541,6 +541,24 @@ "help": "SevenDayStatus.Record.help" } }, + "ResearchPercent": { + "_info": { + "name": "ResearchPercent._info.name", + "help": "ResearchPercent._info.help" + }, + "Value": { + "name": "ResearchPercent.Value.name", + "help": "ResearchPercent.Value.help" + }, + "Color": { + "name": "ResearchPercent.Color.name", + "help": "ResearchPercent.Color.help" + }, + "Record": { + "name": "ResearchPercent.Record.name", + "help": "ResearchPercent.Record.help" + } + }, "Scheduler": { "_info": { "name": "Scheduler", @@ -1162,6 +1180,24 @@ "help": "Stop current task if any ship under level X has reached level X; saving as 0 implies no limit to the level." } }, + "ResearchSetting": { + "_info": { + "name": "ResearchSetting._info.name", + "help": "ResearchSetting._info.help" + }, + "CurrentCampaignTimes": { + "name": "ResearchSetting.CurrentCampaignTimes.name", + "help": "ResearchSetting.CurrentCampaignTimes.help" + }, + "CheckInterval": { + "name": "ResearchSetting.CheckInterval.name", + "help": "ResearchSetting.CheckInterval.help" + }, + "OnepushNotify": { + "name": "ResearchSetting.OnepushNotify.name", + "help": "ResearchSetting.OnepushNotify.help" + } + }, "EventPt": { "_info": { "name": "EventPt._info.name", @@ -3162,6 +3198,7 @@ "Core": "Core Data", "GuildCoin": "Guild Coin", "SevenDayStatus": "Gui.Overview.SevenDayStatus", + "ResearchPercent": "Gui.Overview.ResearchPercent", "Log": "Log", "Running": "Running", "Pending": "Pending", diff --git a/module/config/i18n/ja-JP.json b/module/config/i18n/ja-JP.json index 6df78880d..ce5dc8429 100644 --- a/module/config/i18n/ja-JP.json +++ b/module/config/i18n/ja-JP.json @@ -541,6 +541,24 @@ "help": "SevenDayStatus.Record.help" } }, + "ResearchPercent": { + "_info": { + "name": "ResearchPercent._info.name", + "help": "ResearchPercent._info.help" + }, + "Value": { + "name": "ResearchPercent.Value.name", + "help": "ResearchPercent.Value.help" + }, + "Color": { + "name": "ResearchPercent.Color.name", + "help": "ResearchPercent.Color.help" + }, + "Record": { + "name": "ResearchPercent.Record.name", + "help": "ResearchPercent.Record.help" + } + }, "Scheduler": { "_info": { "name": "Scheduler._info.name", @@ -1162,6 +1180,24 @@ "help": "StopCondition.ReachLevel.help" } }, + "ResearchSetting": { + "_info": { + "name": "ResearchSetting._info.name", + "help": "ResearchSetting._info.help" + }, + "CurrentCampaignTimes": { + "name": "ResearchSetting.CurrentCampaignTimes.name", + "help": "ResearchSetting.CurrentCampaignTimes.help" + }, + "CheckInterval": { + "name": "ResearchSetting.CheckInterval.name", + "help": "ResearchSetting.CheckInterval.help" + }, + "OnepushNotify": { + "name": "ResearchSetting.OnepushNotify.name", + "help": "ResearchSetting.OnepushNotify.help" + } + }, "EventPt": { "_info": { "name": "EventPt._info.name", @@ -3162,6 +3198,7 @@ "Core": "Gui.Overview.Core", "GuildCoin": "Gui.Overview.GuildCoin", "SevenDayStatus": "Gui.Overview.SevenDayStatus", + "ResearchPercent": "Gui.Overview.ResearchPercent", "Log": "ログ", "Running": "実行中", "Pending": "隊列中", diff --git a/module/config/i18n/zh-CN.json b/module/config/i18n/zh-CN.json index 533990ee6..9c63a1f60 100644 --- a/module/config/i18n/zh-CN.json +++ b/module/config/i18n/zh-CN.json @@ -541,6 +541,24 @@ "help": "SevenDayStatus.Record.help" } }, + "ResearchPercent": { + "_info": { + "name": "ResearchPercent._info.name", + "help": "ResearchPercent._info.help" + }, + "Value": { + "name": "ResearchPercent.Value.name", + "help": "ResearchPercent.Value.help" + }, + "Color": { + "name": "ResearchPercent.Color.name", + "help": "ResearchPercent.Color.help" + }, + "Record": { + "name": "ResearchPercent.Record.name", + "help": "ResearchPercent.Record.help" + } + }, "Scheduler": { "_info": { "name": "任务设置", @@ -1162,6 +1180,24 @@ "help": "任意等级低于 X 的舰船升级至 X 级后停止\n0 表示不限制等级" } }, + "ResearchSetting": { + "_info": { + "name": "研究经验设置", + "help": "" + }, + "CheckInterval": { + "name": "每刷 X 次检查", + "help": "" + }, + "CurrentCampaignTimes": { + "name": "当前已刷 X 次", + "help": "清空后立即检查是否刷完" + }, + "OnepushNotify": { + "name": "刷完后通知", + "help": "推荐开启" + } + }, "EventPt": { "_info": { "name": "活动捞PT设置", @@ -3162,6 +3198,7 @@ "Core": "核心数据", "GuildCoin": "舰队币", "SevenDayStatus": "7日小任务", + "ResearchPercent": "科研船进度", "Log": "日志", "Running": "运行中", "Pending": "队列中", diff --git a/module/config/i18n/zh-TW.json b/module/config/i18n/zh-TW.json index 60df9169e..c7eadf5dc 100644 --- a/module/config/i18n/zh-TW.json +++ b/module/config/i18n/zh-TW.json @@ -541,6 +541,24 @@ "help": "SevenDayStatus.Record.help" } }, + "ResearchPercent": { + "_info": { + "name": "ResearchPercent._info.name", + "help": "ResearchPercent._info.help" + }, + "Value": { + "name": "ResearchPercent.Value.name", + "help": "ResearchPercent.Value.help" + }, + "Color": { + "name": "ResearchPercent.Color.name", + "help": "ResearchPercent.Color.help" + }, + "Record": { + "name": "ResearchPercent.Record.name", + "help": "ResearchPercent.Record.help" + } + }, "Scheduler": { "_info": { "name": "任務設定", @@ -1162,6 +1180,24 @@ "help": "任意等級低於 X 的艦船升級至 X 級後停止\n0 表示不限制等級" } }, + "ResearchSetting": { + "_info": { + "name": "ResearchSetting._info.name", + "help": "ResearchSetting._info.help" + }, + "CurrentCampaignTimes": { + "name": "ResearchSetting.CurrentCampaignTimes.name", + "help": "ResearchSetting.CurrentCampaignTimes.help" + }, + "CheckInterval": { + "name": "ResearchSetting.CheckInterval.name", + "help": "ResearchSetting.CheckInterval.help" + }, + "OnepushNotify": { + "name": "ResearchSetting.OnepushNotify.name", + "help": "ResearchSetting.OnepushNotify.help" + } + }, "EventPt": { "_info": { "name": "EventPt._info.name", @@ -3162,6 +3198,7 @@ "Core": "覈心數據", "GuildCoin": "艦隊幣", "SevenDayStatus": "Gui.Overview.SevenDayStatus", + "ResearchPercent": "Gui.Overview.ResearchPercent", "Log": "日誌", "Running": "執行中", "Pending": "佇列中", diff --git a/module/research_farming/assets.py b/module/research_farming/assets.py new file mode 100644 index 000000000..e4455079b --- /dev/null +++ b/module/research_farming/assets.py @@ -0,0 +1,14 @@ +from module.base.button import Button +from module.base.template import Template + +# This file was automatically generated by dev_tools/button_extract.py. +# Don't modify it manually. + +SHIP_EXPERIENCE_COMMIT_1 = Button(area={'cn': (1131, 474, 1191, 506), 'en': (1131, 474, 1191, 506), 'jp': (1131, 474, 1191, 506), 'tw': (1131, 474, 1191, 506)}, color={'cn': (111, 116, 125), 'en': (111, 116, 125), 'jp': (111, 116, 125), 'tw': (111, 116, 125)}, button={'cn': (1131, 474, 1191, 506), 'en': (1131, 474, 1191, 506), 'jp': (1131, 474, 1191, 506), 'tw': (1131, 474, 1191, 506)}, file={'cn': './assets/cn/research_farming/SHIP_EXPERIENCE_COMMIT_1.png', 'en': './assets/cn/research_farming/SHIP_EXPERIENCE_COMMIT_1.png', 'jp': './assets/cn/research_farming/SHIP_EXPERIENCE_COMMIT_1.png', 'tw': './assets/cn/research_farming/SHIP_EXPERIENCE_COMMIT_1.png'}) +SHIP_EXPERIENCE_COMMIT_2 = Button(area={'cn': (1132, 500, 1192, 534), 'en': (1132, 500, 1192, 534), 'jp': (1132, 500, 1192, 534), 'tw': (1132, 500, 1192, 534)}, color={'cn': (112, 116, 125), 'en': (112, 116, 125), 'jp': (112, 116, 125), 'tw': (112, 116, 125)}, button={'cn': (1132, 500, 1192, 534), 'en': (1132, 500, 1192, 534), 'jp': (1132, 500, 1192, 534), 'tw': (1132, 500, 1192, 534)}, file={'cn': './assets/cn/research_farming/SHIP_EXPERIENCE_COMMIT_2.png', 'en': './assets/cn/research_farming/SHIP_EXPERIENCE_COMMIT_2.png', 'jp': './assets/cn/research_farming/SHIP_EXPERIENCE_COMMIT_2.png', 'tw': './assets/cn/research_farming/SHIP_EXPERIENCE_COMMIT_2.png'}) +SHIP_EXPERIENCE_COMPLETE_1 = Button(area={'cn': (1067, 181, 1154, 186), 'en': (1067, 181, 1154, 186), 'jp': (1067, 181, 1154, 186), 'tw': (1067, 181, 1154, 186)}, color={'cn': (179, 165, 92), 'en': (179, 165, 92), 'jp': (179, 165, 92), 'tw': (179, 165, 92)}, button={'cn': (1067, 181, 1154, 186), 'en': (1067, 181, 1154, 186), 'jp': (1067, 181, 1154, 186), 'tw': (1067, 181, 1154, 186)}, file={'cn': './assets/cn/research_farming/SHIP_EXPERIENCE_COMPLETE_1.png', 'en': './assets/cn/research_farming/SHIP_EXPERIENCE_COMPLETE_1.png', 'jp': './assets/cn/research_farming/SHIP_EXPERIENCE_COMPLETE_1.png', 'tw': './assets/cn/research_farming/SHIP_EXPERIENCE_COMPLETE_1.png'}) +SHIP_EXPERIENCE_COMPLETE_2 = Button(area={'cn': (1067, 371, 1154, 376), 'en': (1067, 371, 1154, 376), 'jp': (1067, 371, 1154, 376), 'tw': (1067, 371, 1154, 376)}, color={'cn': (179, 165, 92), 'en': (179, 165, 92), 'jp': (179, 165, 92), 'tw': (179, 165, 92)}, button={'cn': (1067, 371, 1154, 376), 'en': (1067, 371, 1154, 376), 'jp': (1067, 371, 1154, 376), 'tw': (1067, 371, 1154, 376)}, file={'cn': './assets/cn/research_farming/SHIP_EXPERIENCE_COMPLETE_2.png', 'en': './assets/cn/research_farming/SHIP_EXPERIENCE_COMPLETE_2.png', 'jp': './assets/cn/research_farming/SHIP_EXPERIENCE_COMPLETE_2.png', 'tw': './assets/cn/research_farming/SHIP_EXPERIENCE_COMPLETE_2.png'}) +SHIP_EXPERIENCE_FINISHED_1 = Button(area={'cn': (944, 141, 953, 148), 'en': (944, 141, 953, 148), 'jp': (944, 141, 953, 148), 'tw': (944, 141, 953, 148)}, color={'cn': (190, 105, 96), 'en': (190, 105, 96), 'jp': (190, 105, 96), 'tw': (190, 105, 96)}, button={'cn': (944, 141, 953, 148), 'en': (944, 141, 953, 148), 'jp': (944, 141, 953, 148), 'tw': (944, 141, 953, 148)}, file={'cn': './assets/cn/research_farming/SHIP_EXPERIENCE_FINISHED_1.png', 'en': './assets/cn/research_farming/SHIP_EXPERIENCE_FINISHED_1.png', 'jp': './assets/cn/research_farming/SHIP_EXPERIENCE_FINISHED_1.png', 'tw': './assets/cn/research_farming/SHIP_EXPERIENCE_FINISHED_1.png'}) +SHIP_EXPERIENCE_FINISHED_2 = Button(area={'cn': (944, 331, 953, 338), 'en': (944, 331, 953, 338), 'jp': (944, 331, 953, 338), 'tw': (944, 331, 953, 338)}, color={'cn': (191, 104, 96), 'en': (191, 104, 96), 'jp': (191, 104, 96), 'tw': (191, 104, 96)}, button={'cn': (944, 331, 953, 338), 'en': (944, 331, 953, 338), 'jp': (944, 331, 953, 338), 'tw': (944, 331, 953, 338)}, file={'cn': './assets/cn/research_farming/SHIP_EXPERIENCE_FINISHED_2.png', 'en': './assets/cn/research_farming/SHIP_EXPERIENCE_FINISHED_2.png', 'jp': './assets/cn/research_farming/SHIP_EXPERIENCE_FINISHED_2.png', 'tw': './assets/cn/research_farming/SHIP_EXPERIENCE_FINISHED_2.png'}) +SHIP_EXPERIENCE_PERCENT_1 = Button(area={'cn': (949, 182, 1271, 190), 'en': (949, 182, 1271, 190), 'jp': (949, 182, 1271, 190), 'tw': (949, 182, 1271, 190)}, color={'cn': (165, 158, 89), 'en': (165, 158, 89), 'jp': (165, 158, 89), 'tw': (165, 158, 89)}, button={'cn': (949, 182, 1271, 190), 'en': (949, 182, 1271, 190), 'jp': (949, 182, 1271, 190), 'tw': (949, 182, 1271, 190)}, file={'cn': './assets/cn/research_farming/SHIP_EXPERIENCE_PERCENT_1.png', 'en': './assets/cn/research_farming/SHIP_EXPERIENCE_PERCENT_1.png', 'jp': './assets/cn/research_farming/SHIP_EXPERIENCE_PERCENT_1.png', 'tw': './assets/cn/research_farming/SHIP_EXPERIENCE_PERCENT_1.png'}) +SHIP_EXPERIENCE_PERCENT_2 = Button(area={'cn': (949, 372, 1271, 380), 'en': (949, 372, 1271, 380), 'jp': (949, 372, 1271, 380), 'tw': (949, 372, 1271, 380)}, color={'cn': (165, 158, 89), 'en': (165, 158, 89), 'jp': (165, 158, 89), 'tw': (165, 158, 89)}, button={'cn': (949, 372, 1271, 380), 'en': (949, 372, 1271, 380), 'jp': (949, 372, 1271, 380), 'tw': (949, 372, 1271, 380)}, file={'cn': './assets/cn/research_farming/SHIP_EXPERIENCE_PERCENT_2.png', 'en': './assets/cn/research_farming/SHIP_EXPERIENCE_PERCENT_2.png', 'jp': './assets/cn/research_farming/SHIP_EXPERIENCE_PERCENT_2.png', 'tw': './assets/cn/research_farming/SHIP_EXPERIENCE_PERCENT_2.png'}) diff --git a/module/research_farming/check_research.py b/module/research_farming/check_research.py new file mode 100644 index 000000000..7d093b107 --- /dev/null +++ b/module/research_farming/check_research.py @@ -0,0 +1,110 @@ +from module.base.utils import color_bar_percentage +from module.config.deep import deep_get +from module.logger import logger +from module.base.base import ModuleBase +from module.ui.ui import UI +from module.ui.page import page_shipyard +from module.shipyard.shipyard_reward import RewardShipyard +from module.research_farming.assets import (SHIP_EXPERIENCE_PERCENT_1, SHIP_EXPERIENCE_PERCENT_2, + SHIP_EXPERIENCE_FINISHED_1, SHIP_EXPERIENCE_FINISHED_2, + SHIP_EXPERIENCE_COMPLETE_1, SHIP_EXPERIENCE_COMPLETE_2, + SHIP_EXPERIENCE_COMMIT_1, SHIP_EXPERIENCE_COMMIT_2) +from datetime import datetime + + +class ExpHasFinished(Exception): + ... + + +class ExpFinished(Exception): + ... + + +class ExpNotFinished(Exception): + ... + + +class ResearchFarming(UI, ModuleBase): + # def _DisableAllResearchFarmTask(self): + # for i in range(1, 7): + # self.config.modified[f"{self._GetResearchFarmTaskName(i)}.Scheduler.Enable"] = False + # self.config.modified["ResearchFarmingSetting.OpsiHazard1ResearchFarming.Enable"] = False + # self.config.save(self.config.config_name) + + def _Override(self, Index): + if Index == 1: + self.SHIP_EXPERIENCE_PERCENT = SHIP_EXPERIENCE_PERCENT_1 + self.SHIP_EXPERIENCE_FINISHED = SHIP_EXPERIENCE_FINISHED_1 + self.SHIP_EXPERIENCE_COMPLETE = SHIP_EXPERIENCE_COMPLETE_1 + self.SHIP_EXPERIENCE_COMMIT = SHIP_EXPERIENCE_COMMIT_1 + elif Index == 2: + self.SHIP_EXPERIENCE_PERCENT = SHIP_EXPERIENCE_PERCENT_2 + self.SHIP_EXPERIENCE_FINISHED = SHIP_EXPERIENCE_FINISHED_2 + self.SHIP_EXPERIENCE_COMPLETE = SHIP_EXPERIENCE_COMPLETE_2 + self.SHIP_EXPERIENCE_COMMIT = SHIP_EXPERIENCE_COMMIT_2 + + def _UiGotoTargetShip(self): + self.ui_goto(page_shipyard) + # Series = deep_get(self.config.data, "ResearchFarmingSetting.ResearchFarmingSetting.ResearchSeries") + # Index = deep_get(self.config.data, "ResearchFarmingSetting.ResearchFarmingSetting.ShipIndex") + # RewardShipyard(config=self.config, device=self.device).shipyard_set_focus(series=Series, index=Index) + + def _IsSingleFinished(self, Index): + self._Override(Index) + + if self.appear(self.SHIP_EXPERIENCE_COMPLETE,offset=(10,15)): + logger.info(f"ship's exp {Index} has completed") + raise ExpHasFinished + + CurrentPercent = color_bar_percentage(self.device.image, self.SHIP_EXPERIENCE_PERCENT.area, prev_color=(255, 239, 82)) + if CurrentPercent > 0.99 and self.appear(self.SHIP_EXPERIENCE_FINISHED,offset=(15,15)): + logger.info(f"commit ship's exp {Index}") + self.ui_click(self.SHIP_EXPERIENCE_FINISHED, check_button=self.SHIP_EXPERIENCE_COMMIT) + self.device.sleep(0.5) + self.device.click(self.SHIP_EXPERIENCE_COMMIT) + logger.info(f"ship's exp {Index} has completed") + raise ExpFinished + + self.config.modified["Dashboard.ResearchPercent.Value"] = int((Index-1+CurrentPercent) * 100) + self.config.modified["Dashboard.ResearchPercent.Record"] = datetime.now().replace(microsecond=0) + + logger.info(f"ship's exp {Index} not finished,now {(Index-1+CurrentPercent)*100:.2f}%") + raise ExpNotFinished + + def _Notify(self, Index): + IsPush = deep_get(self.config.data, "Main2.ResearchSetting.OnepushNotify") + if IsPush: + from module.notify import handle_notify + handle_notify(self.config.Error_OnePushConfig, + title=f"Alas <{self.config.config_name}>: Research ship's experience finished", + content=f"Ship's experience {Index} has finished") + + def CheckResearchShipExperience(self): + self.device.screenshot() + self._UiGotoTargetShip() + + try: + self._IsSingleFinished(1) + except ExpHasFinished: + pass + except ExpFinished: + self._Notify(1) + return + except ExpNotFinished: + return + + try: + self._IsSingleFinished(2) + except (ExpHasFinished, ExpFinished): + # self._DisableAllResearchFarmTask() + self._Notify(2) + except ExpNotFinished: + return + + + def run(self): + self.config.task_stop() + +if __name__ == "__main__": + self = ResearchFarming('zTTT') + self.CheckResearchShipExperience() \ No newline at end of file