def __init__(self, image, button): """ Args: image (PIL.Image.Image): button (Button): """ image = image.crop(button.area) self.button = button self.genre = 0 color = get_color(image, (65, 35, 72, 42)) for key, value in self.color_genre.items(): if color_similar(color1=color, color2=value, threshold=30): self.genre = key self.tier = 0 color = get_color(image, (83, 61, 92, 70)) for key, value in self.color_tier.items(): if color_similar(color1=color, color2=value, threshold=30): self.tier = key color = color_similarity_2d(image.crop((15, 0, 97, 13)), color=(148, 251, 99)) self.exp = bool(np.sum(color > 221) > 50) self.valid = bool(self.genre and self.tier)
def _retirement_choose(self, amount=10, target_rarity=('N', )): """ Args: amount (int): Amount of cards retire. 0 to 10. target_rarity (tuple(str)): Card rarity. N, R, SR, SSR. Returns: int: Amount of cards have retired. """ cards = [] rarity = [] for x, y, button in CARD_RARITY_GRIDS.generate(): card_color = get_color(image=self.device.image, area=button.area) f = False for r, rarity_color in CARD_RARITY_COLORS.items(): if color_similar(card_color, rarity_color, threshold=15): cards.append([x, y]) rarity.append(r) f = True if not f: logger.warning( f'Unknown rarity color. Grid: ({x}, {y}). Color: {card_color}' ) logger.info(' '.join([r.rjust(3) for r in rarity[:7]])) logger.info(' '.join([r.rjust(3) for r in rarity[7:]])) selected = 0 for card, r in zip(cards, rarity): if r in target_rarity: self.device.click(CARD_GRIDS[card]) self.device.sleep((0.1, 0.15)) selected += 1 if selected >= amount: break return selected