diff --git a/assets/cn/shop/MEDAL_SHOP_SCROLL_AREA_250814.png b/assets/cn/shop/MEDAL_SHOP_SCROLL_AREA_250814.png index fb1b080af..c0c0848b2 100644 Binary files a/assets/cn/shop/MEDAL_SHOP_SCROLL_AREA_250814.png and b/assets/cn/shop/MEDAL_SHOP_SCROLL_AREA_250814.png differ diff --git a/assets/en/shop/MEDAL_SHOP_SCROLL_AREA_250814.png b/assets/en/shop/MEDAL_SHOP_SCROLL_AREA_250814.png deleted file mode 100644 index fb1b080af..000000000 Binary files a/assets/en/shop/MEDAL_SHOP_SCROLL_AREA_250814.png and /dev/null differ diff --git a/module/shop/assets.py b/module/shop/assets.py index d21e2b672..e53a45d4e 100644 --- a/module/shop/assets.py +++ b/module/shop/assets.py @@ -7,7 +7,7 @@ from module.base.template import Template AMOUNT_MAX = Button(area={'cn': (762, 314, 830, 342), 'en': (772, 316, 822, 332), 'jp': (772, 316, 822, 332), 'tw': (772, 316, 822, 332)}, color={'cn': (104, 145, 209), 'en': (148, 178, 225), 'jp': (148, 178, 225), 'tw': (148, 178, 225)}, button={'cn': (762, 314, 830, 342), 'en': (772, 316, 822, 332), 'jp': (772, 316, 822, 332), 'tw': (772, 316, 822, 332)}, file={'cn': './assets/cn/shop/AMOUNT_MAX.png', 'en': './assets/en/shop/AMOUNT_MAX.png', 'jp': './assets/jp/shop/AMOUNT_MAX.png', 'tw': './assets/tw/shop/AMOUNT_MAX.png'}) AMOUNT_MINUS = Button(area={'cn': (549, 311, 582, 345), 'en': (546, 304, 586, 344), 'jp': (546, 304, 586, 344), 'tw': (546, 304, 586, 344)}, color={'cn': (82, 129, 194), 'en': (76, 127, 195), 'jp': (76, 127, 195), 'tw': (76, 127, 195)}, button={'cn': (549, 311, 582, 345), 'en': (546, 304, 586, 344), 'jp': (546, 304, 586, 344), 'tw': (546, 304, 586, 344)}, file={'cn': './assets/cn/shop/AMOUNT_MINUS.png', 'en': './assets/en/shop/AMOUNT_MINUS.png', 'jp': './assets/jp/shop/AMOUNT_MINUS.png', 'tw': './assets/tw/shop/AMOUNT_MINUS.png'}) AMOUNT_PLUS = Button(area={'cn': (696, 312, 732, 345), 'en': (693, 304, 735, 344), 'jp': (693, 304, 735, 344), 'tw': (693, 304, 735, 344)}, color={'cn': (88, 133, 199), 'en': (81, 130, 196), 'jp': (81, 130, 196), 'tw': (81, 130, 196)}, button={'cn': (696, 312, 732, 345), 'en': (693, 304, 735, 344), 'jp': (693, 304, 735, 344), 'tw': (693, 304, 735, 344)}, file={'cn': './assets/cn/shop/AMOUNT_PLUS.png', 'en': './assets/en/shop/AMOUNT_PLUS.png', 'jp': './assets/jp/shop/AMOUNT_PLUS.png', 'tw': './assets/tw/shop/AMOUNT_PLUS.png'}) -MEDAL_SHOP_SCROLL_AREA_250814 = Button(area={'cn': (1063, 201, 1064, 623), 'en': (1063, 201, 1064, 623), 'jp': (1063, 201, 1064, 623), 'tw': (1063, 201, 1064, 623)}, color={'cn': (128, 143, 153), 'en': (128, 143, 153), 'jp': (128, 143, 153), 'tw': (128, 143, 153)}, button={'cn': (1063, 201, 1064, 623), 'en': (1063, 201, 1064, 623), 'jp': (1063, 201, 1064, 623), 'tw': (1063, 201, 1064, 623)}, file={'cn': './assets/cn/shop/MEDAL_SHOP_SCROLL_AREA_250814.png', 'en': './assets/en/shop/MEDAL_SHOP_SCROLL_AREA_250814.png', 'jp': './assets/cn/shop/MEDAL_SHOP_SCROLL_AREA_250814.png', 'tw': './assets/cn/shop/MEDAL_SHOP_SCROLL_AREA_250814.png'}) +MEDAL_SHOP_SCROLL_AREA_250814 = Button(area={'cn': (1064, 201, 1065, 623), 'en': (1064, 201, 1065, 623), 'jp': (1064, 201, 1065, 623), 'tw': (1064, 201, 1065, 623)}, color={'cn': (130, 130, 141), 'en': (130, 130, 141), 'jp': (130, 130, 141), 'tw': (130, 130, 141)}, button={'cn': (1064, 201, 1065, 623), 'en': (1064, 201, 1065, 623), 'jp': (1064, 201, 1065, 623), 'tw': (1064, 201, 1065, 623)}, file={'cn': './assets/cn/shop/MEDAL_SHOP_SCROLL_AREA_250814.png', 'en': './assets/cn/shop/MEDAL_SHOP_SCROLL_AREA_250814.png', 'jp': './assets/cn/shop/MEDAL_SHOP_SCROLL_AREA_250814.png', 'tw': './assets/cn/shop/MEDAL_SHOP_SCROLL_AREA_250814.png'}) NAV_GENERAL = Button(area={'cn': (52, 436, 127, 457), 'en': (47, 438, 127, 458), 'jp': (50, 438, 94, 458), 'tw': (53, 436, 126, 459)}, color={'cn': (126, 178, 207), 'en': (137, 185, 211), 'jp': (149, 194, 218), 'tw': (146, 191, 214)}, button={'cn': (52, 436, 127, 457), 'en': (47, 438, 127, 458), 'jp': (50, 438, 94, 458), 'tw': (53, 436, 126, 459)}, file={'cn': './assets/cn/shop/NAV_GENERAL.png', 'en': './assets/en/shop/NAV_GENERAL.png', 'jp': './assets/jp/shop/NAV_GENERAL.png', 'tw': './assets/tw/shop/NAV_GENERAL.png'}) NAV_MONTHLY = Button(area={'cn': (52, 486, 127, 508), 'en': (51, 487, 131, 507), 'jp': (53, 488, 125, 508), 'tw': (53, 487, 125, 507)}, color={'cn': (127, 178, 207), 'en': (129, 179, 207), 'jp': (161, 201, 219), 'tw': (143, 187, 210)}, button={'cn': (52, 486, 127, 508), 'en': (51, 487, 131, 507), 'jp': (53, 488, 125, 508), 'tw': (53, 487, 125, 507)}, file={'cn': './assets/cn/shop/NAV_MONTHLY.png', 'en': './assets/en/shop/NAV_MONTHLY.png', 'jp': './assets/jp/shop/NAV_MONTHLY.png', 'tw': './assets/tw/shop/NAV_MONTHLY.png'}) SELECT_MINUS = Button(area={'cn': (562, 201, 588, 227), 'en': (562, 201, 588, 227), 'jp': (562, 201, 588, 227), 'tw': (562, 201, 588, 227)}, color={'cn': (86, 70, 70), 'en': (86, 70, 70), 'jp': (86, 70, 70), 'tw': (86, 70, 70)}, button={'cn': (562, 201, 588, 227), 'en': (562, 201, 588, 227), 'jp': (562, 201, 588, 227), 'tw': (562, 201, 588, 227)}, file={'cn': './assets/cn/shop/SELECT_MINUS.png', 'en': './assets/en/shop/SELECT_MINUS.png', 'jp': './assets/jp/shop/SELECT_MINUS.png', 'tw': './assets/tw/shop/SELECT_MINUS.png'}) diff --git a/module/shop/shop_medal.py b/module/shop/shop_medal.py index 059dadbb9..05d6bbeda 100644 --- a/module/shop/shop_medal.py +++ b/module/shop/shop_medal.py @@ -14,36 +14,35 @@ from module.shop.assets import * from module.shop.base import ShopItemGrid_250814 from module.shop.clerk import ShopClerk from module.shop.shop_status import ShopStatus -from module.ui.scroll import AdaptiveScroll +from module.ui.scroll import Scroll -class ShopAdaptiveScroll(AdaptiveScroll): +class ShopScroll(Scroll): def match_color(self, main): - area = (self.area[0] - self.background, self.area[1], self.area[2] + self.background, self.area[3]) - image = main.image_crop(area, copy=False) - - image = rgb2gray(image) - cv2.bitwise_not(image, dst=image) - image = image.flatten() - wlen = area[2] - area[0] - parameters = { - 'height': (100, 200), - 'prominence': 35, - 'width': 1 - } - parameters.update(self.parameters) - peaks, _ = signal.find_peaks(image, **parameters) - peaks = peaks[15: 123] - peaks //= wlen - self.length = 123 - mask = np.zeros((self.total,), dtype=np.bool_) - mask[peaks] = 1 + background_transparency = 0.2 + button_transparency = 0.5 + delta_x = 3 + area = ( + self.area[0] - delta_x, + self.area[1], + self.area[2] + delta_x, + self.area[3] + ) + image = main.image_crop(area, copy=False).astype(np.float) + baseline_color = np.mean(image[:, [0, -1], :], axis=1) + masked_color = image[:, image.shape[1] // 2, :] + background_mask = background_transparency * np.array(self.color) + (1 - background_transparency) * baseline_color + button_mask = button_transparency * np.array(self.color) + (1 - button_transparency) * baseline_color + err_background = np.sum((masked_color - background_mask) ** 2, axis=1) + err_button = np.sum((masked_color - button_mask) ** 2, axis=1) + mask = err_button < err_background + self.length = np.sum(mask) return mask -MEDAL_SHOP_SCROLL_250814 = ShopAdaptiveScroll( +MEDAL_SHOP_SCROLL_250814 = ShopScroll( MEDAL_SHOP_SCROLL_AREA_250814.button, - background=1, + color=(44, 48, 56), name="MEDAL_SHOP_SCROLL_250814" ) MEDAL_SHOP_SCROLL_250814.drag_threshold = 0.1