mirror of
https://github.com/TheFunny/ArisuAutoSweeper
synced 2025-12-16 19:55:12 +00:00
Compare commits
4 Commits
14d3b9246a
...
0594484cd7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0594484cd7 | ||
|
|
517c0f1033 | ||
|
|
524f15e2bf | ||
|
|
67310938d2 |
@ -13,4 +13,7 @@ class CTkAddButton(customtkinter.CTkFrame):
|
||||
|
||||
def set_button(self, value):
|
||||
self.option_menu.set("")
|
||||
self.button.configure(text=value)
|
||||
self.button.configure(text=value)
|
||||
|
||||
def configure(self, *args, **kwargs):
|
||||
self.button.configure(*args, **kwargs)
|
||||
@ -29,6 +29,7 @@ class AzurLaneAutoScript:
|
||||
# Failure count of tasks
|
||||
# Key: str, task name, value: int, failure count
|
||||
self.failure_record = {}
|
||||
self.operating_system = platform.system()
|
||||
|
||||
@cached_property
|
||||
def config(self):
|
||||
@ -231,21 +232,21 @@ class AzurLaneAutoScript:
|
||||
if not self.wait_until(task.next_run):
|
||||
del_cached_property(self, 'config')
|
||||
continue
|
||||
elif method == 'exit_aas':
|
||||
self.config.Optimization_WhenTaskQueueEmpty = 'goto_main'
|
||||
self.exit_aas()
|
||||
exit(1)
|
||||
elif method == 'exit_emulator':
|
||||
self.config.Optimization_WhenTaskQueueEmpty = 'goto_main'
|
||||
self.exit_emulator()
|
||||
exit(1) # stops AAS from restarting emulator
|
||||
elif method == 'exit_aas_emulator':
|
||||
self.exit_emulator()
|
||||
self.exit_aas()
|
||||
exit(1)
|
||||
elif method == 'shutdown':
|
||||
os = platform.system()
|
||||
if os not in ["Windows", "Linux", "Darwin"]:
|
||||
logger.info("Shutdown set during wait but operating system not supported")
|
||||
else:
|
||||
logger.info('Shutdown during wait')
|
||||
try:
|
||||
self.shutdown(os)
|
||||
msg = CTkMessagebox(title="AAS: Cancel Shutdown?", message="All tasks have been completed: shutting down. Do you want to cancel?",
|
||||
icon="MCE\icons\question.png", option_1="Cancel")
|
||||
response = msg.get()
|
||||
if response=="Cancel":
|
||||
self.abort_shutdown(os)
|
||||
except:
|
||||
logger.error("Failed to shutdown. It may be due to a lack of administrator privileges.")
|
||||
self.config.Optimization_WhenTaskQueueEmpty = 'goto_main'
|
||||
self.shutdown()
|
||||
release_resources()
|
||||
self.device.release_during_wait()
|
||||
if not self.wait_until(task.next_run):
|
||||
@ -331,17 +332,52 @@ class AzurLaneAutoScript:
|
||||
self.checker.check_now()
|
||||
continue
|
||||
|
||||
def shutdown(self, os):
|
||||
def exit_emulator(self):
|
||||
if self.operating_system != 'Windows':
|
||||
logger.error("Exiting emulator is only supported on Windows")
|
||||
return
|
||||
try:
|
||||
from module.device.platform.platform_windows import PlatformWindows
|
||||
PlatformWindows(self.config).emulator_stop()
|
||||
except:
|
||||
logger.error("Failed to stop emulator. It may be due to a lack of administrator privileges.")
|
||||
|
||||
def exit_aas(self):
|
||||
if self.operating_system != 'Windows':
|
||||
logger.error("Exiting AAS is only supported on Windows")
|
||||
return
|
||||
try:
|
||||
from module.device.platform.platform_windows import PlatformWindows
|
||||
PlatformWindows(self.config).kill_process_by_regex("aas\.exe")
|
||||
except:
|
||||
logger.error("Failed to stop AAS. It may be due to a lack of administrator privileges.")
|
||||
|
||||
def shutdown(self):
|
||||
if self.operating_system not in ["Windows", "Linux", "Darwin"]:
|
||||
logger.error("Shutdown set during wait but operating system not supported")
|
||||
else:
|
||||
logger.info('Shutdown during wait')
|
||||
try:
|
||||
self.start_shutdown()
|
||||
msg = CTkMessagebox(title="AAS: Cancel Shutdown?", message="All tasks have been completed: shutting down. Do you want to cancel?",
|
||||
icon="MCE\icons\question.png", option_1="Cancel")
|
||||
response = msg.get()
|
||||
if response=="Cancel":
|
||||
self.cancel_shutdown()
|
||||
except:
|
||||
logger.error("Failed to shutdown. It may be due to a lack of administrator privileges.")
|
||||
|
||||
def start_shutdown(self):
|
||||
logger.info("Running Shutting down")
|
||||
if os == "Windows":
|
||||
if self.operating_system == "Windows":
|
||||
subprocess.run(["shutdown", "-s", "-t", "60"])
|
||||
elif os in ["Linux", "Darwin"]:
|
||||
elif self.operating_system in ["Linux", "Darwin"]:
|
||||
subprocess.run(["shutdown", "-h", "+1"])
|
||||
|
||||
def abort_shutdown(self, os):
|
||||
if os == "Windows":
|
||||
def cancel_shutdown(self):
|
||||
if self.operating_system == "Windows":
|
||||
subprocess.run(["shutdown", "-a"])
|
||||
elif os in ["Linux", "Darwin"]:
|
||||
elif self.operating_system in ["Linux", "Darwin"]:
|
||||
subprocess.run(["shutdown", "-c"])
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
@ -129,6 +129,9 @@
|
||||
"stay_there",
|
||||
"goto_main",
|
||||
"close_game",
|
||||
"exit_aas",
|
||||
"exit_emulator",
|
||||
"exit_aas_emulator",
|
||||
"shutdown"
|
||||
]
|
||||
}
|
||||
|
||||
@ -71,7 +71,7 @@ Optimization:
|
||||
CombatScreenshotInterval: 1.0
|
||||
WhenTaskQueueEmpty:
|
||||
value: goto_main
|
||||
option: [ stay_there, goto_main, close_game, shutdown ]
|
||||
option: [ stay_there, goto_main, close_game, exit_aas, exit_emulator, exit_aas_emulator, shutdown ]
|
||||
|
||||
# ==================== Daily ====================
|
||||
|
||||
|
||||
@ -37,7 +37,7 @@ class GeneratedConfig:
|
||||
# Group `Optimization`
|
||||
Optimization_ScreenshotInterval = 0.3
|
||||
Optimization_CombatScreenshotInterval = 1.0
|
||||
Optimization_WhenTaskQueueEmpty = 'goto_main' # stay_there, goto_main, close_game, shutdown
|
||||
Optimization_WhenTaskQueueEmpty = 'goto_main' # stay_there, goto_main, close_game, exit_aas, exit_emulator, exit_aas_emulator, shutdown
|
||||
|
||||
# Group `Cafe`
|
||||
Cafe_Reward = True
|
||||
|
||||
@ -221,10 +221,13 @@
|
||||
},
|
||||
"WhenTaskQueueEmpty": {
|
||||
"name": "When Task Queue is Empty",
|
||||
"help": "Close AL when there are no pending tasks, can help reduce CPU",
|
||||
"help": "Close Blue Archive when there are no pending tasks, can help reduce CPU.\nExit AAS, emulator and shutdown should be set while AAS is running tasks otherwise it won't start.\nExit AAS and emulator are only available on Windows.\nExit emulator is only possible if instance name and emulator path follow the same auto-filled values according to 'Serial' in Emulator Settings",
|
||||
"stay_there": "Stay There",
|
||||
"goto_main": "Goto Main Page",
|
||||
"close_game": "Close Game",
|
||||
"exit_aas": "Exit AAS",
|
||||
"exit_emulator": "Exit Emulator",
|
||||
"exit_aas_emulator": "Exit AAS & Emulator",
|
||||
"shutdown": "Shutdown"
|
||||
}
|
||||
},
|
||||
|
||||
@ -225,6 +225,9 @@
|
||||
"stay_there": "停在原处",
|
||||
"goto_main": "前往主界面",
|
||||
"close_game": "关闭游戏",
|
||||
"exit_aas": "exit_aas",
|
||||
"exit_emulator": "exit_emulator",
|
||||
"exit_aas_emulator": "exit_aas_emulator",
|
||||
"shutdown": "shutdown"
|
||||
}
|
||||
},
|
||||
|
||||
@ -97,7 +97,7 @@ class PlatformWindows(PlatformBase, EmulatorManager):
|
||||
self.execute(f'"{exe}" -clone:{instance.name}')
|
||||
elif instance == Emulator.BlueStacks5:
|
||||
# HD-Player.exe -instance Pie64
|
||||
self.execute(f'"{exe}" -instance {instance.name}')
|
||||
self.execute(f'"{exe}" --instance {instance.name}')
|
||||
elif instance == Emulator.BlueStacks4:
|
||||
# BlueStacks\Client\Bluestacks.exe -vmname Android_1
|
||||
self.execute(f'"{exe}" -vmname {instance.name}')
|
||||
@ -153,6 +153,8 @@ class PlatformWindows(PlatformBase, EmulatorManager):
|
||||
elif instance == Emulator.NoxPlayerFamily:
|
||||
# Nox.exe -clone:Nox_1 -quit
|
||||
self.execute(f'"{exe}" -clone:{instance.name} -quit')
|
||||
elif instance == Emulator.BlueStacks5:
|
||||
self.execute(f'taskkill /fi "WINDOWTITLE eq {instance.name}" /IM "HD-Player.exe" /F')
|
||||
else:
|
||||
raise EmulatorUnknown(f'Cannot stop an unknown emulator instance: {instance}')
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user