Add: Prepare combat team

This commit is contained in:
LmeSzinc 2023-06-16 22:31:53 +08:00
parent f517481e5b
commit 173485b2f7
10 changed files with 159 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

@ -0,0 +1,75 @@
from module.base.button import Button, ButtonWrapper
# This file was auto-generated, do not modify it manually. To generate:
# ``` python -m dev_tools.button_extract ```
COMBAT_TEAM_PREPARE = ButtonWrapper(
name='COMBAT_TEAM_PREPARE',
cn=Button(
file='./assets/cn/combat/team/COMBAT_TEAM_PREPARE.png',
area=(1037, 648, 1116, 667),
search=(1017, 628, 1136, 687),
color=(159, 159, 159),
button=(958, 641, 1193, 676),
),
)
TEAM_1 = ButtonWrapper(
name='TEAM_1',
share=Button(
file='./assets/share/combat/team/TEAM_1.png',
area=(432, 32, 467, 63),
search=(412, 12, 487, 83),
color=(142, 134, 127),
button=(432, 32, 467, 63),
),
)
TEAM_2 = ButtonWrapper(
name='TEAM_2',
share=Button(
file='./assets/share/combat/team/TEAM_2.png',
area=(531, 32, 572, 63),
search=(511, 12, 592, 83),
color=(142, 136, 129),
button=(531, 32, 572, 63),
),
)
TEAM_3 = ButtonWrapper(
name='TEAM_3',
share=Button(
file='./assets/share/combat/team/TEAM_3.png',
area=(631, 32, 673, 63),
search=(611, 12, 693, 83),
color=(135, 128, 117),
button=(631, 32, 673, 63),
),
)
TEAM_4 = ButtonWrapper(
name='TEAM_4',
share=Button(
file='./assets/share/combat/team/TEAM_4.png',
area=(731, 32, 774, 63),
search=(711, 12, 794, 83),
color=(129, 121, 113),
button=(731, 32, 774, 63),
),
)
TEAM_5 = ButtonWrapper(
name='TEAM_5',
share=Button(
file='./assets/share/combat/team/TEAM_5.png',
area=(831, 32, 873, 63),
search=(811, 12, 893, 83),
color=(139, 129, 117),
button=(831, 32, 873, 63),
),
)
TEAM_6 = ButtonWrapper(
name='TEAM_6',
share=Button(
file='./assets/share/combat/team/TEAM_6.png',
area=(931, 32, 973, 63),
search=(911, 12, 993, 83),
color=(133, 124, 113),
button=(931, 32, 973, 63),
),
)

84
tasks/combat/team.py Normal file
View File

@ -0,0 +1,84 @@
from module.base.button import ButtonWrapper
from module.base.timer import Timer
from module.logger import logger
from tasks.base.ui import UI
from tasks.combat.assets.assets_combat_team import (
COMBAT_TEAM_PREPARE,
TEAM_1,
TEAM_2,
TEAM_3,
TEAM_4,
TEAM_5,
TEAM_6
)
TEAM_BUTTONS = {
1: TEAM_1,
2: TEAM_2,
3: TEAM_3,
4: TEAM_4,
5: TEAM_5,
6: TEAM_6,
}
class CombatTeam(UI):
@staticmethod
def _team_index_to_button(index: int) -> ButtonWrapper:
try:
return TEAM_BUTTONS[index]
except KeyError:
logger.warning(f'Invalid team index: {index}, return team 1 instead')
return TEAM_1
def _get_team_selected(self) -> int:
for index, button in TEAM_BUTTONS.items():
if self.image_color_count(button, color=(255, 234, 191), threshold=221, count=50):
return index
# logger.warning(f'No team selected')
return 0
def team_set(self, team: int = 1, skip_first_screenshot=True):
"""
Args:
team: Team index, 1 to 6.
skip_first_screenshot:
Pages:
in: page_team
"""
logger.info(f'Team set: {team}')
interval = Timer(2)
while 1:
if skip_first_screenshot:
skip_first_screenshot = False
else:
self.device.screenshot()
# End
current = self._get_team_selected()
logger.attr('Team', current)
if current and current == team:
logger.info(f'Selected to the correct team')
break
# Click
if interval.reached():
self.device.click(self._team_index_to_button(team))
interval.reset()
continue
def handle_combat_team_prepare(self, team: int = 1) -> bool:
"""
Set team and click prepare before dungeon combat.
Returns:
int: If clicked
"""
if self.appear(COMBAT_TEAM_PREPARE, interval=5):
self.team_set(team)
self.device.click(COMBAT_TEAM_PREPARE)
return True
return False