mirror of
https://github.com/0O0o0oOoO00/Alas.git
synced 2026-05-14 21:09:25 +08:00
156 lines
7.9 KiB
Python
156 lines
7.9 KiB
Python
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, threshold=64):
|
|
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):
|
|
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)
|
|
raise ExpFinished
|
|
|
|
self.config.modified["Dashboard.ResearchPercent.Value"] = int(CurrentPercent * 100)
|
|
self.config.modified["Dashboard.ResearchPercent.Record"] = datetime.now().replace(microsecond=0)
|
|
|
|
raise ExpNotFinished
|
|
|
|
def _Notify(self, Index):
|
|
IsPush = deep_get(self.config.data, "ResearchFarmingSetting.ResearchFarmingSetting.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()
|
|
ExperienceIndex = deep_get(self.config.data, "ResearchFarmingSetting.ResearchFarmingSetting.ExperienceIndex")
|
|
if ExperienceIndex == 1 or ExperienceIndex == 2:
|
|
try:
|
|
self._IsSingleFinished(ExperienceIndex)
|
|
except (ExpHasFinished, ExpFinished):
|
|
self._DisableAllResearchFarmTask()
|
|
self._Notify(ExperienceIndex)
|
|
except ExpNotFinished:
|
|
return
|
|
elif ExperienceIndex == 0:
|
|
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 _GetResearchFarmTaskName(self, Index):
|
|
return f"ResearchFarm{Index if Index != 1 else ''}"
|
|
|
|
def _SetOilLimit(self, Index):
|
|
self.config.modified[f"{self._GetResearchFarmTaskName(Index)}.StopCondition.OilLimit"] = self.config.ResearchFarmingSetting_OilLimit
|
|
|
|
def _SetCampaign(self, Index):
|
|
self.config.modified[f"{self._GetResearchFarmTaskName(Index)}.Campaign.Name"] = deep_get(self.config.data,
|
|
f"ResearchFarmingSetting.ResearchFarm{Index}Setting.Campaign")
|
|
|
|
def _SetFleet(self, Index):
|
|
self.config.modified[f"{self._GetResearchFarmTaskName(Index)}.Fleet.Fleet1"] = deep_get(self.config.data,
|
|
f"ResearchFarmingSetting.ResearchFarm{Index}Setting.Fleet1")
|
|
self.config.modified[f"{self._GetResearchFarmTaskName(Index)}.Fleet.Fleet2"] = deep_get(self.config.data,
|
|
f"ResearchFarmingSetting.ResearchFarm{Index}Setting.Fleet2")
|
|
self.config.modified[f"{self._GetResearchFarmTaskName(Index)}.Fleet.FleetOrder"] = "fleet1_all_fleet2_standby"
|
|
|
|
def _SetEmotion(self, Index):
|
|
self.config.modified[f"{self._GetResearchFarmTaskName(Index)}.Emotion.Fleet1Value"] = deep_get(self.config.data,
|
|
f"ResearchFarmingSetting.ResearchFarm{Index}Setting.EmotionValue")
|
|
self.config.modified[f"{self._GetResearchFarmTaskName(Index)}.Emotion.Fleet2Value"] = 119
|
|
|
|
self.config.modified[f"{self._GetResearchFarmTaskName(Index)}.Emotion.Fleet1Record"] = datetime.now()
|
|
self.config.modified[f"{self._GetResearchFarmTaskName(Index)}.Emotion.Fleet2Record"] = datetime.now()
|
|
|
|
self.config.modified[f"{self._GetResearchFarmTaskName(Index)}.Emotion.Mode"] = deep_get(self.config.data,
|
|
f"ResearchFarmingSetting.ResearchFarm{Index}Setting.EmotionControlMethod")
|
|
self.config.modified[f"{self._GetResearchFarmTaskName(Index)}.Emotion.Fleet1Control"] = deep_get(self.config.data,
|
|
f"ResearchFarmingSetting.ResearchFarm{Index}Setting.Fleet1Control")
|
|
self.config.modified[f"{self._GetResearchFarmTaskName(Index)}.Emotion.Fleet1Recover"] = deep_get(self.config.data,
|
|
f"ResearchFarmingSetting.ResearchFarm{Index}Setting.Fleet1Recover")
|
|
|
|
def _Call(self, Index):
|
|
self.config.task_call(self._GetResearchFarmTaskName(Index))
|
|
|
|
def run(self):
|
|
for i in range(1, 7):
|
|
if deep_get(self.config.data, f"ResearchFarmingSetting.ResearchFarm{i}Setting.Enable"):
|
|
self._SetOilLimit(i)
|
|
self._SetCampaign(i)
|
|
self._SetFleet(i)
|
|
self._SetEmotion(i)
|
|
self._Call(i)
|
|
self.config.Scheduler_Enable = False
|
|
self.config.task_stop()
|