diff --git a/assets/en/island/GET_ITEMS_ISLAND.png b/assets/en/island/GET_ITEMS_ISLAND.png new file mode 100644 index 000000000..80dd51d2c Binary files /dev/null and b/assets/en/island/GET_ITEMS_ISLAND.png differ diff --git a/assets/en/island/ISLAND_AMOUNT_MAX.png b/assets/en/island/ISLAND_AMOUNT_MAX.png new file mode 100644 index 000000000..dccb97ca7 Binary files /dev/null and b/assets/en/island/ISLAND_AMOUNT_MAX.png differ diff --git a/assets/en/island/ISLAND_MANAGEMENT_CHECK.png b/assets/en/island/ISLAND_MANAGEMENT_CHECK.png new file mode 100644 index 000000000..a2126321d Binary files /dev/null and b/assets/en/island/ISLAND_MANAGEMENT_CHECK.png differ diff --git a/assets/en/island/ISLAND_TRANSPORT.png b/assets/en/island/ISLAND_TRANSPORT.png new file mode 100644 index 000000000..f5549d558 Binary files /dev/null and b/assets/en/island/ISLAND_TRANSPORT.png differ diff --git a/assets/en/island/ISLAND_TRANSPORT_CHECK.png b/assets/en/island/ISLAND_TRANSPORT_CHECK.png new file mode 100644 index 000000000..53946047f Binary files /dev/null and b/assets/en/island/ISLAND_TRANSPORT_CHECK.png differ diff --git a/assets/en/island/OCR_PRODUCTION_TIME.png b/assets/en/island/OCR_PRODUCTION_TIME.png new file mode 100644 index 000000000..d07bbb64b Binary files /dev/null and b/assets/en/island/OCR_PRODUCTION_TIME.png differ diff --git a/assets/en/island/PROJECT_START.png b/assets/en/island/PROJECT_START.png new file mode 100644 index 000000000..8b2359fe3 Binary files /dev/null and b/assets/en/island/PROJECT_START.png differ diff --git a/assets/en/island/ROLE_SELECT_CONFIRM.png b/assets/en/island/ROLE_SELECT_CONFIRM.png new file mode 100644 index 000000000..360625dca Binary files /dev/null and b/assets/en/island/ROLE_SELECT_CONFIRM.png differ diff --git a/assets/en/island/ROLE_SELECT_ENTER.png b/assets/en/island/ROLE_SELECT_ENTER.png new file mode 100644 index 000000000..0f32e98cd Binary files /dev/null and b/assets/en/island/ROLE_SELECT_ENTER.png differ diff --git a/assets/en/ui/ISLAND_CHECK.png b/assets/en/ui/ISLAND_CHECK.png new file mode 100644 index 000000000..e1bac0ec3 Binary files /dev/null and b/assets/en/ui/ISLAND_CHECK.png differ diff --git a/assets/en/ui/ISLAND_GOTO_ISLAND_PHONE.png b/assets/en/ui/ISLAND_GOTO_ISLAND_PHONE.png new file mode 100644 index 000000000..ef8a887f4 Binary files /dev/null and b/assets/en/ui/ISLAND_GOTO_ISLAND_PHONE.png differ diff --git a/module/island/assets.py b/module/island/assets.py index c5a1aab71..374658d7b 100644 --- a/module/island/assets.py +++ b/module/island/assets.py @@ -4,17 +4,17 @@ from module.base.template import Template # This file was automatically generated by dev_tools/button_extract.py. # Don't modify it manually. -GET_ITEMS_ISLAND = Button(area={'cn': (588, 260, 692, 289), 'en': (588, 260, 692, 289), 'jp': (588, 260, 692, 289), 'tw': (588, 260, 692, 289)}, color={'cn': (178, 180, 180), 'en': (178, 180, 180), 'jp': (178, 180, 180), 'tw': (178, 180, 180)}, button={'cn': (0, 263, 129, 555), 'en': (0, 263, 129, 555), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, file={'cn': './assets/cn/island/GET_ITEMS_ISLAND.png', 'en': './assets/cn/island/GET_ITEMS_ISLAND.png', 'jp': './assets/cn/island/GET_ITEMS_ISLAND.png', 'tw': './assets/cn/island/GET_ITEMS_ISLAND.png'}) -ISLAND_AMOUNT_MAX = Button(area={'cn': (960, 382, 988, 405), 'en': (960, 382, 988, 405), 'jp': (960, 382, 988, 405), 'tw': (960, 382, 988, 405)}, color={'cn': (72, 72, 78), 'en': (72, 72, 78), 'jp': (72, 72, 78), 'tw': (72, 72, 78)}, button={'cn': (960, 382, 988, 405), 'en': (960, 382, 988, 405), 'jp': (960, 382, 988, 405), 'tw': (960, 382, 988, 405)}, file={'cn': './assets/cn/island/ISLAND_AMOUNT_MAX.png', 'en': './assets/cn/island/ISLAND_AMOUNT_MAX.png', 'jp': './assets/cn/island/ISLAND_AMOUNT_MAX.png', 'tw': './assets/cn/island/ISLAND_AMOUNT_MAX.png'}) +GET_ITEMS_ISLAND = Button(area={'cn': (588, 260, 692, 289), 'en': (588, 260, 692, 289), 'jp': (588, 260, 692, 289), 'tw': (588, 260, 692, 289)}, color={'cn': (149, 151, 152), 'en': (149, 151, 152), 'jp': (149, 151, 152), 'tw': (149, 151, 152)}, button={'cn': (0, 263, 129, 555), 'en': (588, 260, 692, 289), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, file={'cn': './assets/cn/island/GET_ITEMS_ISLAND.png', 'en': './assets/en/island/GET_ITEMS_ISLAND.png', 'jp': './assets/cn/island/GET_ITEMS_ISLAND.png', 'tw': './assets/cn/island/GET_ITEMS_ISLAND.png'}) +ISLAND_AMOUNT_MAX = Button(area={'cn': (960, 382, 988, 405), 'en': (960, 382, 988, 405), 'jp': (960, 382, 988, 405), 'tw': (960, 382, 988, 405)}, color={'cn': (78, 78, 84), 'en': (78, 78, 84), 'jp': (78, 78, 84), 'tw': (78, 78, 84)}, button={'cn': (960, 382, 988, 405), 'en': (960, 382, 988, 405), 'jp': (960, 382, 988, 405), 'tw': (960, 382, 988, 405)}, file={'cn': './assets/cn/island/ISLAND_AMOUNT_MAX.png', 'en': './assets/en/island/ISLAND_AMOUNT_MAX.png', 'jp': './assets/cn/island/ISLAND_AMOUNT_MAX.png', 'tw': './assets/cn/island/ISLAND_AMOUNT_MAX.png'}) ISLAND_CLICK_SAFE_AREA = Button(area={'cn': (0, 263, 129, 555), 'en': (0, 263, 129, 555), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, color={'cn': (50, 52, 56), 'en': (50, 52, 56), 'jp': (50, 52, 56), 'tw': (50, 52, 56)}, button={'cn': (0, 263, 129, 555), 'en': (0, 263, 129, 555), 'jp': (0, 263, 129, 555), 'tw': (0, 263, 129, 555)}, file={'cn': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'en': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'jp': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png', 'tw': './assets/cn/island/ISLAND_CLICK_SAFE_AREA.png'}) ISLAND_MANAGEMENT = Button(area={'cn': (1077, 493, 1119, 533), 'en': (1077, 493, 1119, 533), 'jp': (1077, 493, 1119, 533), 'tw': (1077, 493, 1119, 533)}, color={'cn': (187, 224, 135), 'en': (187, 224, 135), 'jp': (187, 224, 135), 'tw': (187, 224, 135)}, button={'cn': (1077, 493, 1119, 533), 'en': (1077, 493, 1119, 533), 'jp': (1077, 493, 1119, 533), 'tw': (1077, 493, 1119, 533)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT.png', 'en': './assets/cn/island/ISLAND_MANAGEMENT.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT.png'}) -ISLAND_MANAGEMENT_CHECK = Button(area={'cn': (123, 21, 304, 47), 'en': (123, 21, 304, 47), 'jp': (123, 21, 304, 47), 'tw': (123, 21, 304, 47)}, color={'cn': (77, 83, 96), 'en': (77, 83, 96), 'jp': (77, 83, 96), 'tw': (77, 83, 96)}, button={'cn': (123, 21, 304, 47), 'en': (123, 21, 304, 47), 'jp': (123, 21, 304, 47), 'tw': (123, 21, 304, 47)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png', 'en': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png'}) +ISLAND_MANAGEMENT_CHECK = Button(area={'cn': (123, 21, 304, 47), 'en': (123, 21, 304, 47), 'jp': (123, 21, 304, 47), 'tw': (123, 21, 304, 47)}, color={'cn': (90, 96, 108), 'en': (90, 96, 108), 'jp': (90, 96, 108), 'tw': (90, 96, 108)}, button={'cn': (123, 21, 304, 47), 'en': (123, 21, 304, 47), 'jp': (123, 21, 304, 47), 'tw': (123, 21, 304, 47)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png', 'en': './assets/en/island/ISLAND_MANAGEMENT_CHECK.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT_CHECK.png'}) ISLAND_MANAGEMENT_LOCKED = Button(area={'cn': (1092, 504, 1105, 520), 'en': (1092, 504, 1105, 520), 'jp': (1092, 504, 1105, 520), 'tw': (1092, 504, 1105, 520)}, color={'cn': (197, 206, 195), 'en': (197, 206, 195), 'jp': (197, 206, 195), 'tw': (197, 206, 195)}, button={'cn': (1092, 504, 1105, 520), 'en': (1092, 504, 1105, 520), 'jp': (1092, 504, 1105, 520), 'tw': (1092, 504, 1105, 520)}, file={'cn': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'en': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'jp': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png', 'tw': './assets/cn/island/ISLAND_MANAGEMENT_LOCKED.png'}) ISLAND_PRODUCT_ITEMS = Button(area={'cn': (166, 68, 477, 652), 'en': (166, 68, 477, 652), 'jp': (166, 68, 477, 652), 'tw': (166, 68, 477, 652)}, color={'cn': (189, 200, 198), 'en': (189, 200, 198), 'jp': (189, 200, 198), 'tw': (189, 200, 198)}, button={'cn': (166, 68, 477, 652), 'en': (166, 68, 477, 652), 'jp': (166, 68, 477, 652), 'tw': (166, 68, 477, 652)}, file={'cn': './assets/cn/island/ISLAND_PRODUCT_ITEMS.png', 'en': './assets/cn/island/ISLAND_PRODUCT_ITEMS.png', 'jp': './assets/cn/island/ISLAND_PRODUCT_ITEMS.png', 'tw': './assets/cn/island/ISLAND_PRODUCT_ITEMS.png'}) ISLAND_PROJECT_SWIPE = Button(area={'cn': (690, 80, 721, 641), 'en': (690, 80, 721, 641), 'jp': (690, 80, 721, 641), 'tw': (690, 80, 721, 641)}, color={'cn': (215, 218, 213), 'en': (215, 218, 213), 'jp': (215, 218, 213), 'tw': (215, 218, 213)}, button={'cn': (690, 80, 721, 641), 'en': (690, 80, 721, 641), 'jp': (690, 80, 721, 641), 'tw': (690, 80, 721, 641)}, file={'cn': './assets/cn/island/ISLAND_PROJECT_SWIPE.png', 'en': './assets/cn/island/ISLAND_PROJECT_SWIPE.png', 'jp': './assets/cn/island/ISLAND_PROJECT_SWIPE.png', 'tw': './assets/cn/island/ISLAND_PROJECT_SWIPE.png'}) -ISLAND_TRANSPORT = Button(area={'cn': (905, 335, 986, 358), 'en': (905, 335, 986, 358), 'jp': (905, 335, 986, 358), 'tw': (905, 335, 986, 358)}, color={'cn': (228, 192, 122), 'en': (228, 192, 122), 'jp': (228, 192, 122), 'tw': (228, 192, 122)}, button={'cn': (898, 328, 1031, 459), 'en': (898, 328, 1031, 459), 'jp': (898, 328, 1031, 459), 'tw': (898, 328, 1031, 459)}, file={'cn': './assets/cn/island/ISLAND_TRANSPORT.png', 'en': './assets/cn/island/ISLAND_TRANSPORT.png', 'jp': './assets/cn/island/ISLAND_TRANSPORT.png', 'tw': './assets/cn/island/ISLAND_TRANSPORT.png'}) -ISLAND_TRANSPORT_CHECK = Button(area={'cn': (264, 154, 317, 180), 'en': (264, 154, 317, 180), 'jp': (264, 154, 317, 180), 'tw': (264, 154, 317, 180)}, color={'cn': (142, 143, 143), 'en': (142, 143, 143), 'jp': (142, 143, 143), 'tw': (142, 143, 143)}, button={'cn': (264, 154, 317, 180), 'en': (264, 154, 317, 180), 'jp': (264, 154, 317, 180), 'tw': (264, 154, 317, 180)}, file={'cn': './assets/cn/island/ISLAND_TRANSPORT_CHECK.png', 'en': './assets/cn/island/ISLAND_TRANSPORT_CHECK.png', 'jp': './assets/cn/island/ISLAND_TRANSPORT_CHECK.png', 'tw': './assets/cn/island/ISLAND_TRANSPORT_CHECK.png'}) -OCR_PRODUCTION_TIME = Button(area={'cn': (714, 611, 808, 631), 'en': (714, 611, 808, 631), 'jp': (714, 611, 808, 631), 'tw': (714, 611, 808, 631)}, color={'cn': (120, 210, 255), 'en': (120, 210, 255), 'jp': (120, 210, 255), 'tw': (120, 210, 255)}, button={'cn': (714, 611, 808, 631), 'en': (714, 611, 808, 631), 'jp': (714, 611, 808, 631), 'tw': (714, 611, 808, 631)}, file={'cn': './assets/cn/island/OCR_PRODUCTION_TIME.png', 'en': './assets/cn/island/OCR_PRODUCTION_TIME.png', 'jp': './assets/cn/island/OCR_PRODUCTION_TIME.png', 'tw': './assets/cn/island/OCR_PRODUCTION_TIME.png'}) +ISLAND_TRANSPORT = Button(area={'cn': (905, 335, 986, 358), 'en': (905, 335, 986, 358), 'jp': (905, 335, 986, 358), 'tw': (905, 335, 986, 358)}, color={'cn': (234, 192, 102), 'en': (234, 192, 102), 'jp': (234, 192, 102), 'tw': (234, 192, 102)}, button={'cn': (898, 328, 1031, 459), 'en': (905, 335, 986, 358), 'jp': (898, 328, 1031, 459), 'tw': (898, 328, 1031, 459)}, file={'cn': './assets/cn/island/ISLAND_TRANSPORT.png', 'en': './assets/en/island/ISLAND_TRANSPORT.png', 'jp': './assets/cn/island/ISLAND_TRANSPORT.png', 'tw': './assets/cn/island/ISLAND_TRANSPORT.png'}) +ISLAND_TRANSPORT_CHECK = Button(area={'cn': (264, 154, 317, 180), 'en': (264, 154, 317, 180), 'jp': (264, 154, 317, 180), 'tw': (264, 154, 317, 180)}, color={'cn': (22, 0, 0), 'en': (22, 0, 0), 'jp': (22, 0, 0), 'tw': (22, 0, 0)}, button={'cn': (264, 154, 317, 180), 'en': (264, 154, 317, 180), 'jp': (264, 154, 317, 180), 'tw': (264, 154, 317, 180)}, file={'cn': './assets/cn/island/ISLAND_TRANSPORT_CHECK.png', 'en': './assets/en/island/ISLAND_TRANSPORT_CHECK.png', 'jp': './assets/cn/island/ISLAND_TRANSPORT_CHECK.png', 'tw': './assets/cn/island/ISLAND_TRANSPORT_CHECK.png'}) +OCR_PRODUCTION_TIME = Button(area={'cn': (714, 611, 808, 631), 'en': (637, 603, 733, 623), 'jp': (714, 611, 808, 631), 'tw': (714, 611, 808, 631)}, color={'cn': (120, 210, 255), 'en': (132, 214, 255), 'jp': (120, 210, 255), 'tw': (120, 210, 255)}, button={'cn': (714, 611, 808, 631), 'en': (637, 603, 733, 623), 'jp': (714, 611, 808, 631), 'tw': (714, 611, 808, 631)}, file={'cn': './assets/cn/island/OCR_PRODUCTION_TIME.png', 'en': './assets/en/island/OCR_PRODUCTION_TIME.png', 'jp': './assets/cn/island/OCR_PRODUCTION_TIME.png', 'tw': './assets/cn/island/OCR_PRODUCTION_TIME.png'}) OCR_PRODUCTION_TIME_REMAIN = Button(area={'cn': (621, 427, 666, 439), 'en': (621, 427, 666, 439), 'jp': (621, 427, 666, 439), 'tw': (621, 427, 666, 439)}, color={'cn': (196, 203, 205), 'en': (196, 203, 205), 'jp': (196, 203, 205), 'tw': (196, 203, 205)}, button={'cn': (621, 427, 666, 439), 'en': (621, 427, 666, 439), 'jp': (621, 427, 666, 439), 'tw': (621, 427, 666, 439)}, file={'cn': './assets/cn/island/OCR_PRODUCTION_TIME_REMAIN.png', 'en': './assets/cn/island/OCR_PRODUCTION_TIME_REMAIN.png', 'jp': './assets/cn/island/OCR_PRODUCTION_TIME_REMAIN.png', 'tw': './assets/cn/island/OCR_PRODUCTION_TIME_REMAIN.png'}) OCR_TRANSPORT_REFRESH = Button(area={'cn': (716, 211, 805, 231), 'en': (716, 211, 805, 231), 'jp': (716, 211, 805, 231), 'tw': (716, 211, 805, 231)}, color={'cn': (176, 177, 175), 'en': (176, 177, 175), 'jp': (176, 177, 175), 'tw': (176, 177, 175)}, button={'cn': (716, 211, 805, 231), 'en': (716, 211, 805, 231), 'jp': (716, 211, 805, 231), 'tw': (716, 211, 805, 231)}, file={'cn': './assets/cn/island/OCR_TRANSPORT_REFRESH.png', 'en': './assets/cn/island/OCR_TRANSPORT_REFRESH.png', 'jp': './assets/cn/island/OCR_TRANSPORT_REFRESH.png', 'tw': './assets/cn/island/OCR_TRANSPORT_REFRESH.png'}) OCR_TRANSPORT_TIME = Button(area={'cn': (611, 139, 687, 154), 'en': (611, 139, 687, 154), 'jp': (611, 139, 687, 154), 'tw': (611, 139, 687, 154)}, color={'cn': (119, 119, 120), 'en': (119, 119, 120), 'jp': (119, 119, 120), 'tw': (119, 119, 120)}, button={'cn': (611, 139, 687, 154), 'en': (611, 139, 687, 154), 'jp': (611, 139, 687, 154), 'tw': (611, 139, 687, 154)}, file={'cn': './assets/cn/island/OCR_TRANSPORT_TIME.png', 'en': './assets/cn/island/OCR_TRANSPORT_TIME.png', 'jp': './assets/cn/island/OCR_TRANSPORT_TIME.png', 'tw': './assets/cn/island/OCR_TRANSPORT_TIME.png'}) @@ -30,12 +30,12 @@ PROJECT_MANJUU_CHECK = Button(area={'cn': (1162, 182, 1214, 205), 'en': (1162, 1 PROJECT_NEW_JERSEY_CHECK = Button(area={'cn': (1158, 170, 1223, 214), 'en': (1158, 170, 1223, 214), 'jp': (1158, 170, 1223, 214), 'tw': (1158, 170, 1223, 214)}, color={'cn': (138, 136, 159), 'en': (138, 136, 159), 'jp': (138, 136, 159), 'tw': (138, 136, 159)}, button={'cn': (1158, 170, 1223, 214), 'en': (1158, 170, 1223, 214), 'jp': (1158, 170, 1223, 214), 'tw': (1158, 170, 1223, 214)}, file={'cn': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png', 'en': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png', 'jp': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png', 'tw': './assets/cn/island/PROJECT_NEW_JERSEY_CHECK.png'}) PROJECT_SARATOGA_CHECK = Button(area={'cn': (1162, 166, 1223, 219), 'en': (1162, 166, 1223, 219), 'jp': (1162, 166, 1223, 219), 'tw': (1162, 166, 1223, 219)}, color={'cn': (212, 177, 178), 'en': (212, 177, 178), 'jp': (212, 177, 178), 'tw': (212, 177, 178)}, button={'cn': (1162, 166, 1223, 219), 'en': (1162, 166, 1223, 219), 'jp': (1162, 166, 1223, 219), 'tw': (1162, 166, 1223, 219)}, file={'cn': './assets/cn/island/PROJECT_SARATOGA_CHECK.png', 'en': './assets/cn/island/PROJECT_SARATOGA_CHECK.png', 'jp': './assets/cn/island/PROJECT_SARATOGA_CHECK.png', 'tw': './assets/cn/island/PROJECT_SARATOGA_CHECK.png'}) PROJECT_SHIMAKAZE_CHECK = Button(area={'cn': (1163, 168, 1212, 218), 'en': (1163, 168, 1212, 218), 'jp': (1163, 168, 1212, 218), 'tw': (1163, 168, 1212, 218)}, color={'cn': (218, 199, 196), 'en': (218, 199, 196), 'jp': (218, 199, 196), 'tw': (218, 199, 196)}, button={'cn': (1163, 168, 1212, 218), 'en': (1163, 168, 1212, 218), 'jp': (1163, 168, 1212, 218), 'tw': (1163, 168, 1212, 218)}, file={'cn': './assets/cn/island/PROJECT_SHIMAKAZE_CHECK.png', 'en': './assets/cn/island/PROJECT_SHIMAKAZE_CHECK.png', 'jp': './assets/cn/island/PROJECT_SHIMAKAZE_CHECK.png', 'tw': './assets/cn/island/PROJECT_SHIMAKAZE_CHECK.png'}) -PROJECT_START = Button(area={'cn': (686, 610, 706, 630), 'en': (686, 610, 706, 630), 'jp': (686, 610, 706, 630), 'tw': (686, 610, 706, 630)}, color={'cn': (129, 213, 255), 'en': (129, 213, 255), 'jp': (129, 213, 255), 'tw': (129, 213, 255)}, button={'cn': (494, 599, 1087, 642), 'en': (494, 599, 1087, 642), 'jp': (494, 599, 1087, 642), 'tw': (494, 599, 1087, 642)}, file={'cn': './assets/cn/island/PROJECT_START.png', 'en': './assets/cn/island/PROJECT_START.png', 'jp': './assets/cn/island/PROJECT_START.png', 'tw': './assets/cn/island/PROJECT_START.png'}) +PROJECT_START = Button(area={'cn': (609, 610, 629, 630), 'en': (609, 610, 629, 630), 'jp': (609, 610, 629, 630), 'tw': (609, 610, 629, 630)}, color={'cn': (128, 212, 254), 'en': (128, 212, 254), 'jp': (128, 212, 254), 'tw': (128, 212, 254)}, button={'cn': (494, 599, 1087, 642), 'en': (609, 610, 629, 630), 'jp': (494, 599, 1087, 642), 'tw': (494, 599, 1087, 642)}, file={'cn': './assets/cn/island/PROJECT_START.png', 'en': './assets/en/island/PROJECT_START.png', 'jp': './assets/cn/island/PROJECT_START.png', 'tw': './assets/cn/island/PROJECT_START.png'}) PROJECT_TASHKENT_CHECK = Button(area={'cn': (1164, 176, 1219, 213), 'en': (1164, 176, 1219, 213), 'jp': (1164, 176, 1219, 213), 'tw': (1164, 176, 1219, 213)}, color={'cn': (176, 146, 173), 'en': (176, 146, 173), 'jp': (176, 146, 173), 'tw': (176, 146, 173)}, button={'cn': (1164, 176, 1219, 213), 'en': (1164, 176, 1219, 213), 'jp': (1164, 176, 1219, 213), 'tw': (1164, 176, 1219, 213)}, file={'cn': './assets/cn/island/PROJECT_TASHKENT_CHECK.png', 'en': './assets/cn/island/PROJECT_TASHKENT_CHECK.png', 'jp': './assets/cn/island/PROJECT_TASHKENT_CHECK.png', 'tw': './assets/cn/island/PROJECT_TASHKENT_CHECK.png'}) PROJECT_UNICORN_CHECK = Button(area={'cn': (1156, 167, 1224, 209), 'en': (1156, 167, 1224, 209), 'jp': (1156, 167, 1224, 209), 'tw': (1156, 167, 1224, 209)}, color={'cn': (199, 184, 218), 'en': (199, 184, 218), 'jp': (199, 184, 218), 'tw': (199, 184, 218)}, button={'cn': (1156, 167, 1224, 209), 'en': (1156, 167, 1224, 209), 'jp': (1156, 167, 1224, 209), 'tw': (1156, 167, 1224, 209)}, file={'cn': './assets/cn/island/PROJECT_UNICORN_CHECK.png', 'en': './assets/cn/island/PROJECT_UNICORN_CHECK.png', 'jp': './assets/cn/island/PROJECT_UNICORN_CHECK.png', 'tw': './assets/cn/island/PROJECT_UNICORN_CHECK.png'}) PROJECT_YING_SWEI_CHECK = Button(area={'cn': (1161, 177, 1217, 210), 'en': (1161, 177, 1217, 210), 'jp': (1161, 177, 1217, 210), 'tw': (1161, 177, 1217, 210)}, color={'cn': (171, 157, 165), 'en': (171, 157, 165), 'jp': (171, 157, 165), 'tw': (171, 157, 165)}, button={'cn': (1161, 177, 1217, 210), 'en': (1161, 177, 1217, 210), 'jp': (1161, 177, 1217, 210), 'tw': (1161, 177, 1217, 210)}, file={'cn': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'en': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'jp': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png', 'tw': './assets/cn/island/PROJECT_YING_SWEI_CHECK.png'}) -ROLE_SELECT_CONFIRM = Button(area={'cn': (1068, 597, 1118, 621), 'en': (1068, 597, 1118, 621), 'jp': (1068, 597, 1118, 621), 'tw': (1068, 597, 1118, 621)}, color={'cn': (109, 206, 255), 'en': (109, 206, 255), 'jp': (109, 206, 255), 'tw': (109, 206, 255)}, button={'cn': (948, 585, 1239, 632), 'en': (948, 585, 1239, 632), 'jp': (948, 585, 1239, 632), 'tw': (948, 585, 1239, 632)}, file={'cn': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'en': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'jp': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'tw': './assets/cn/island/ROLE_SELECT_CONFIRM.png'}) -ROLE_SELECT_ENTER = Button(area={'cn': (579, 314, 700, 350), 'en': (579, 314, 700, 350), 'jp': (579, 314, 700, 350), 'tw': (579, 314, 700, 350)}, color={'cn': (239, 238, 237), 'en': (239, 238, 237), 'jp': (239, 238, 237), 'tw': (239, 238, 237)}, button={'cn': (534, 206, 747, 483), 'en': (534, 206, 747, 483), 'jp': (534, 206, 747, 483), 'tw': (534, 206, 747, 483)}, file={'cn': './assets/cn/island/ROLE_SELECT_ENTER.png', 'en': './assets/cn/island/ROLE_SELECT_ENTER.png', 'jp': './assets/cn/island/ROLE_SELECT_ENTER.png', 'tw': './assets/cn/island/ROLE_SELECT_ENTER.png'}) +ROLE_SELECT_CONFIRM = Button(area={'cn': (1068, 597, 1118, 621), 'en': (1068, 597, 1118, 621), 'jp': (1068, 597, 1118, 621), 'tw': (1068, 597, 1118, 621)}, color={'cn': (125, 211, 255), 'en': (125, 211, 255), 'jp': (125, 211, 255), 'tw': (125, 211, 255)}, button={'cn': (948, 585, 1239, 632), 'en': (1068, 597, 1118, 621), 'jp': (948, 585, 1239, 632), 'tw': (948, 585, 1239, 632)}, file={'cn': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'en': './assets/en/island/ROLE_SELECT_CONFIRM.png', 'jp': './assets/cn/island/ROLE_SELECT_CONFIRM.png', 'tw': './assets/cn/island/ROLE_SELECT_CONFIRM.png'}) +ROLE_SELECT_ENTER = Button(area={'cn': (578, 313, 701, 351), 'en': (578, 313, 701, 351), 'jp': (578, 313, 701, 351), 'tw': (578, 313, 701, 351)}, color={'cn': (237, 237, 236), 'en': (237, 237, 236), 'jp': (237, 237, 236), 'tw': (237, 237, 236)}, button={'cn': (534, 206, 747, 483), 'en': (578, 313, 701, 351), 'jp': (534, 206, 747, 483), 'tw': (534, 206, 747, 483)}, file={'cn': './assets/cn/island/ROLE_SELECT_ENTER.png', 'en': './assets/en/island/ROLE_SELECT_ENTER.png', 'jp': './assets/cn/island/ROLE_SELECT_ENTER.png', 'tw': './assets/cn/island/ROLE_SELECT_ENTER.png'}) TEMPLATE_AKASHI = Template(file={'cn': './assets/cn/island/TEMPLATE_AKASHI.png', 'en': './assets/cn/island/TEMPLATE_AKASHI.png', 'jp': './assets/cn/island/TEMPLATE_AKASHI.png', 'tw': './assets/cn/island/TEMPLATE_AKASHI.png'}) TEMPLATE_AMAGI_CHAN = Template(file={'cn': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'en': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'jp': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png', 'tw': './assets/cn/island/TEMPLATE_AMAGI_CHAN.png'}) TEMPLATE_CARROT = Template(file={'cn': './assets/cn/island/TEMPLATE_CARROT.png', 'en': './assets/cn/island/TEMPLATE_CARROT.png', 'jp': './assets/cn/island/TEMPLATE_CARROT.png', 'tw': './assets/cn/island/TEMPLATE_CARROT.png'}) diff --git a/module/island/island.py b/module/island/island.py index 2ecfd467f..32f80a27f 100644 --- a/module/island/island.py +++ b/module/island/island.py @@ -19,7 +19,7 @@ class Island(IslandProjectRun, IslandTransportRun): list[str]: a list of name for island receive """ if any(config): - return [name for add, name in zip(config, list(name_to_slot_cn.keys())) if add] + return [name for add, name in zip(config, list(name_to_slot.keys())) if add] else: return [] @@ -56,7 +56,7 @@ class Island(IslandProjectRun, IslandTransportRun): self.config.task_delay(success=False) def run(self): - if server.server in ['cn']: + if server.server in ['cn', 'en']: transport = False project_config = [self.config.__getattribute__(f'Island{i}_Receive') for i in range(1, 16)] project = any(project_config) diff --git a/module/island/project.py b/module/island/project.py index 13c6087da..ad6d42ed5 100644 --- a/module/island/project.py +++ b/module/island/project.py @@ -4,6 +4,7 @@ import re import numpy as np from scipy import signal +import module.config.server as server from module.base.button import Button, ButtonGrid from module.base.timer import Timer from module.base.utils import color_similarity_2d, crop, random_rectangle_vector, rgb2gray @@ -15,12 +16,14 @@ from module.logger import logger from module.map.map_grids import SelectedGrids from module.ocr.ocr import Duration, Ocr - class ProjectNameOcr(Ocr): def after_process(self, result): result = super().after_process(result) - result = result.replace('主', '丰') - result = re.sub(r'[^\u4e00-\u9fff]', '', result) + if server.server == 'cn': + result = result.replace('主', '丰') + result = re.sub(r'[^\u4e00-\u9fff]', '', result) + elif server.server == 'en': + result = re.sub(r"[\s'-]+", "", result).lower() return result @@ -66,7 +69,9 @@ class IslandProject: return # name - area = (self.x1 - 446, self.y1, self.x1 - 326, self.y2) + dx = {'cn':326, 'en':137}[server.server] + dy = {'cn':0, 'en':2}[server.server] + area = (self.x1 - 446, self.y1, self.x1 - dx, self.y2+dy) button = Button(area=area, color=(), button=area, name='PROJECT_NAME') ocr = ProjectNameOcr(button, lang='cnocr') self.name = ocr.ocr(self.image) @@ -75,7 +80,7 @@ class IslandProject: return # id - keys = list(name_to_slot_cn.keys()) + keys = list(name_to_slot.keys()) if self.name in keys: self.id = keys.index(self.name) + 1 else: @@ -83,7 +88,7 @@ class IslandProject: return # max slot - self.max_slot = name_to_slot_cn.get(self.name, 2) + self.max_slot = name_to_slot.get(self.name, 2) # available slot area = (self.x1 - 383, self.y1 + 60, self.x1 - 39, self.y1 + 118) @@ -173,12 +178,16 @@ class IslandProduct: class ItemNameOcr(Ocr): def after_process(self, result): result = super().after_process(result) - result = result.replace('蛮', '蜜').replace('茉', '末').replace('汗', '汁').replace('纠', '组') - result = re.sub(r'[^\u4e00-\u9fff]', '', result) - if '冰咖' in result: - result = '冰咖啡' - if '莓果香橙' in result: - result = '莓果香橙甜点组' + if server.server == 'cn': + result = result.replace('蛮', '蜜').replace('茉', '末').replace('汗', '汁').replace('纠', '组') + result = re.sub(r'[^\u4e00-\u9fff]', '', result) + if '冰咖' in result: + result = '冰咖啡' + if '莓果香橙' in result: + result = '莓果香橙甜点组' + elif server.server == 'en': + result = re.sub(r"[\s'-]+", "", result) + result = result.lower() return result @@ -192,7 +201,7 @@ class ProductItem: # All buttons on this page to click item_buttons: ButtonGrid - def __init__(self, image, y, get_button=True): + def __init__(self, image, y, parent_project_id, get_button=True): """ Args: image: @@ -205,6 +214,7 @@ class ProductItem: self.name = None self.button = None self.items = [] + self.parent_project_id = parent_project_id self.parse_item(get_button=get_button) def parse_item(self, get_button): @@ -230,7 +240,7 @@ class ProductItem: self.item_buttons = ButtonGrid(origin=(x1, origin_y), delta=(0, delta), button_shape=(x2 - x1, y2 - y1), grid_shape=(1, shape_y), name='ITEMS') - self.items = [ProductItem(self.image, (item.area[1], item.area[3]), get_button=False) + self.items = [ProductItem(self.image, (item.area[1], item.area[3]), self.parent_project_id, get_button=False) for item in self.item_buttons.buttons] else: self.ocr_name(y1, y2) @@ -267,8 +277,27 @@ class ProductItem: button = Button(area=area, color=(), button=area, name='ITEM_NAME') ocr = ItemNameOcr(button, lang='cnocr', letter=(70, 70, 70)) self.name = ocr.ocr(self.image) - if not self.name or self.name not in deep_values(items_data_cn, depth=2): + if server.server == 'cn' and (not self.name or self.name not in deep_values(items_data, depth=2)): self.valid = False + elif server.server == 'en': + self.valid = False + if not self.name: + return + for value in list(items_data[self.parent_project_id].values()): + can_scroll = len(value) > 13 + vmatcher = re.sub(r"[\s'-]+", "", value).lower() + if self.name == vmatcher: + logger.info(f'Product with valid name: {self.name} (exact matched {value})') + self.name = value + self.valid = True + break + elif self.name[1:-1] in vmatcher and (len(self.name) > 12 and can_scroll): + logger.info(f'Product with valid name: {self.name} (scroll matched {value})') + self.name = value + self.valid = True + break + if not self.valid: + logger.info(f'Product with invalid name: {self.name}') def __eq__(self, other): """ @@ -467,7 +496,7 @@ class IslandProjectRun(IslandUI): def get_character_check_button(character): return globals().get(f'PROJECT_{character.upper()}_CHECK', PRODUCT_MANJUU_CHECK) - def get_current_product(self): + def get_current_product(self, project_id): """ Get currently selected product on self.device.image. @@ -485,9 +514,9 @@ class IslandProjectRun(IslandUI): } peaks, _ = signal.find_peaks(line, **parameters) peaks = np.array(peaks) + y_top - return ProductItem(self.device.image, peaks) + return ProductItem(self.device.image, peaks, project_id) - def product_select(self, option, trial=2, skip_first_screenshot=True): + def product_select(self, option, project_id, trial=2, skip_first_screenshot=True): """ Select a product in items list. @@ -509,7 +538,7 @@ class IslandProjectRun(IslandUI): else: self.device.screenshot() - current = self.get_current_product() + current = self.get_current_product(project_id) if trial > 0 and not len(current.items): trial -= 1 continue @@ -581,7 +610,8 @@ class IslandProjectRun(IslandUI): continue button = PROJECT_START - self.appear(button, offset=(100, 0)) + timer_offset = {'cn':100, 'en':60}[server.server] + self.appear(button, offset=(timer_offset, 0)) offset = tuple(np.subtract(button.button, button._button)[:2]) product = IslandProduct(self.device.image, new=True, offset=offset) if product == last: @@ -641,7 +671,7 @@ class IslandProjectRun(IslandUI): self.island_drag_next_page((0, -500), ISLAND_PROJECT_SWIPE.area, 0.6) - def project_receive_and_start(self, proj, button, character, option, ensure=True): + def project_receive_and_start(self, proj, button, character, option, project_id, ensure=True): """ Receive and start a project is in the current page. @@ -657,7 +687,7 @@ class IslandProjectRun(IslandUI): if not self.project_character_select(character): logger.warning('Island select role failed due to game bug, retrying') return False - if not self.product_select(option): + if not self.product_select(option, project_id): return True if not self.product_select_confirm(): self.character = 'manjuu' @@ -695,7 +725,7 @@ class IslandProjectRun(IslandUI): if option == 0: slot_option.append(None) continue - slot_option.append(deep_get(items_data_cn, [proj_id, option])) + slot_option.append(deep_get(items_data, [proj_id, option])) return slot_option def island_project_run(self, names, trial=2, skip_first_screenshot=True): @@ -747,7 +777,7 @@ class IslandProjectRun(IslandUI): # retry 3 times because of a game bug for _ in range(3): ensure = not end or index != option_num - 1 - if self.project_receive_and_start(proj, button, self.character, option, ensure): + if self.project_receive_and_start(proj, button, self.character, option, proj.id, ensure): break timeout.reset() diff --git a/module/island/project_data.py b/module/island/project_data.py index 4c19afd23..423e42929 100644 --- a/module/island/project_data.py +++ b/module/island/project_data.py @@ -1,10 +1,12 @@ -name_to_slot_cn = { +import module.config.server as server + +__name_to_slot_cn = { '丰壤农田': 4, '悠然牧场': 4, '沉石矿山': 4, '翠土林场': 4, '坠香果园': 4, '青芽苗圃': 2, '有鱼餐馆': 2, '白熊饮品': 2, '啾啾简餐': 2, '乌鱼烤肉': 2, '木料加工设备': 2, '工业生产设备': 2, '电子加工设备': 2, '手工制作设备': 2, '啾咖啡': 2 } -items_data_cn = { +__items_data_cn = { 1: { 1: '小麦', 2: '玉米', 3: '牧草', 4: '咖啡豆', 5: '大米', 6: '白菜', 7: '土豆', 8: '大豆', @@ -61,3 +63,79 @@ items_data_cn = { 6: '草莓奶绿', 7: '晨光活力组合', 8: '醒神套餐', 9: '果香双杯乐', }, } + + +__name_to_slot_en = { + 'faircropfields': 4, 'laidbackranch': 4, 'rockheapmine': 4, 'verdantwoods': 4, 'sweetscentorchard': 4, 'newsproutnursery': 2, + 'goldenkoirestaurant': 2, 'polarbearteahouse': 2, 'manjuueatery': 2, "finnfeathergrill": 2, 'lumberprocessing': 2, 'machineryproduction': 2, + 'electronicproduction': 2, 'arts&craftsproduction': 2, 'cafemanjuu': 2 +} + +__items_data_en = { + 1: { + 1: 'Wheat', 2: 'Corn', 3: 'Grass', 4: 'CoffeeBeans', 5: 'Rice', 6: 'Napa Cabbage', + 7: 'Potato', 8: 'Soy Beans', + }, + 2: { + 1: 'Eggs', 2: 'Fresh Meat', 3: 'Milk', 4: 'Wool', + }, + 3: { + 1: 'Coal', 2: 'Copper Ore', 3: 'Bauxite Ore', 4: 'Iron Ore', 5: 'Sulfur', 6: 'Silver Ore', + }, + 4: { + 1: 'Raw Timber', 2: 'Workable Wood', 3: 'remium Wood', 4: 'Elegant Wood', # remium Wood because it overruns on the left + }, + 5: { + 1: 'Yoizuki Pear', 2: 'Kaki Persimmon', 3: 'Apple', 4: 'Citrus Fruit', 5: 'Banana', 6: 'Mango', + 7: 'Lemon', 8: 'Avocado', 9: 'Rubber', + }, + 6: { + 1: 'Flax', 2: 'Strawberries', 3: 'Cotton', 4: 'Tea Leaves', 5: 'Lavender', 6: 'Carrot', + 7: 'Onion', + }, + 7: { + 1: 'Dried Persimmon', 2: 'Matsutake and Chicken Soup', 3: 'Tofu', 4: 'Tofu with Minced Meat', 5: 'Omurice', + 6: 'Cabbage and Tofu Soup', 7: 'Vegetable Salad', 8: 'Classic Tofu Combo', 9: 'Hearty Meal', + }, + 8: { + 1: 'Carrot and Pear Juice', 2: 'Chrysanthemum Tea', 3: 'Apple Juice', 4: 'Banana and Mango Juice', + 5: 'Honey and Lemon Water', 6: 'Strawberry Lemon Drink', 7: 'Lavender Tea', 8: 'Strawberry Honey Frappe', + 9: 'Floral and Fruity', 10: 'Colorful Fruit Paradise', 11: 'Sunny Honey', + }, + 9: { + 1: 'Corn Cup', 2: 'Apple Pie', 3: 'Orange Pie', 4: 'Sticky Rice with Mango', 5: 'Banana Crepe', + 6: 'Strawberry Charlotte', 7: 'Succulently Sweet', 8: 'Orchard Duo', 9: 'Berry and Orange Dessert', + }, + 10: { + 1: 'Coal-Roasted Skewer', 2: "Chicken and Potato Hors d'Oeuvre", 3: 'Stir-Fried Chicken', 4: 'Rolled Carrot Omelette', + 5: 'Steak Bowl', 6: 'The Carne-val', 7: 'Double Energy Combo', + }, + 11: { + 1: 'Paper', 2: 'Notebook', 3: 'Chair and Desk', 4: 'Choice Wooden Barrel', 5: 'Filing Cabinet', + }, + 12: { + 1: 'Charcoal Brush', 2: 'Cable', 3: 'Nails', 4: 'Chemicals', 5: 'Gunpowder', 6: 'Utensils', + }, + 13: { + 1: 'Ink Cartridge', 2: 'Clock', 3: 'Battery', 4: 'Water Filter', + }, + 14: { + 1: 'Autumn Bouquet', 2: 'Peanut Oil', 3: 'Cloth', 4: 'Leather', 5: 'Rope', 6: 'Gloves', + 7: 'Aroma Sachet', 8: 'Shoes', 9: 'Wound Dressings', + }, + 15: { + 1: 'Omelette', 2: 'Iced Coffee', 3: 'Cheese', 4: 'Latte', 5: 'Citrus Coffee', + 6: 'Strawberry Milkshake', 7: 'Morning Light Energy Combo', 8: 'The Wake-Up Call', 9: 'Fruity & Fruitier', + }, +} + + +if server.server == 'cn': + name_to_slot = __name_to_slot_cn + items_data = __items_data_cn +elif server.server == 'en': + name_to_slot = __name_to_slot_en + items_data = __items_data_en +else: + name_to_slot = __name_to_slot_cn + items_data = __items_data_cn diff --git a/module/ui/assets.py b/module/ui/assets.py index f58168116..006d17072 100644 --- a/module/ui/assets.py +++ b/module/ui/assets.py @@ -49,8 +49,8 @@ GUILD_CHECK = Button(area={'cn': (121, 15, 199, 39), 'en': (121, 15, 196, 39), ' IDLE = Button(area={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, color={'cn': (158, 159, 167), 'en': (158, 159, 167), 'jp': (158, 159, 167), 'tw': (158, 159, 167)}, button={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, file={'cn': './assets/cn/ui/IDLE.png', 'en': './assets/en/ui/IDLE.png', 'jp': './assets/jp/ui/IDLE.png', 'tw': './assets/tw/ui/IDLE.png'}) IDLE_2 = Button(area={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, color={'cn': (173, 178, 186), 'en': (173, 178, 186), 'jp': (173, 178, 186), 'tw': (173, 178, 186)}, button={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, file={'cn': './assets/cn/ui/IDLE_2.png', 'en': './assets/cn/ui/IDLE_2.png', 'jp': './assets/cn/ui/IDLE_2.png', 'tw': './assets/cn/ui/IDLE_2.png'}) IDLE_3 = Button(area={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, color={'cn': (185, 183, 182), 'en': (185, 183, 182), 'jp': (185, 183, 182), 'tw': (185, 183, 182)}, button={'cn': (864, 672, 873, 688), 'en': (864, 672, 873, 688), 'jp': (864, 672, 873, 688), 'tw': (864, 672, 873, 688)}, file={'cn': './assets/cn/ui/IDLE_3.png', 'en': './assets/cn/ui/IDLE_3.png', 'jp': './assets/cn/ui/IDLE_3.png', 'tw': './assets/cn/ui/IDLE_3.png'}) -ISLAND_CHECK = Button(area={'cn': (1215, 26, 1245, 60), 'en': (1215, 26, 1245, 60), 'jp': (1215, 26, 1245, 60), 'tw': (1215, 26, 1245, 60)}, color={'cn': (191, 192, 190), 'en': (191, 192, 190), 'jp': (191, 192, 190), 'tw': (191, 192, 190)}, button={'cn': (1215, 26, 1245, 60), 'en': (1215, 26, 1245, 60), 'jp': (1215, 26, 1245, 60), 'tw': (1215, 26, 1245, 60)}, file={'cn': './assets/cn/ui/ISLAND_CHECK.png', 'en': './assets/cn/ui/ISLAND_CHECK.png', 'jp': './assets/cn/ui/ISLAND_CHECK.png', 'tw': './assets/cn/ui/ISLAND_CHECK.png'}) -ISLAND_GOTO_ISLAND_PHONE = Button(area={'cn': (1215, 26, 1245, 60), 'en': (1215, 26, 1245, 60), 'jp': (1215, 26, 1245, 60), 'tw': (1215, 26, 1245, 60)}, color={'cn': (191, 192, 190), 'en': (191, 192, 190), 'jp': (191, 192, 190), 'tw': (191, 192, 190)}, button={'cn': (1215, 26, 1245, 60), 'en': (1215, 26, 1245, 60), 'jp': (1215, 26, 1245, 60), 'tw': (1215, 26, 1245, 60)}, file={'cn': './assets/cn/ui/ISLAND_GOTO_ISLAND_PHONE.png', 'en': './assets/cn/ui/ISLAND_GOTO_ISLAND_PHONE.png', 'jp': './assets/cn/ui/ISLAND_GOTO_ISLAND_PHONE.png', 'tw': './assets/cn/ui/ISLAND_GOTO_ISLAND_PHONE.png'}) +ISLAND_CHECK = Button(area={'cn': (1215, 26, 1245, 60), 'en': (1215, 26, 1245, 60), 'jp': (1215, 26, 1245, 60), 'tw': (1215, 26, 1245, 60)}, color={'cn': (191, 192, 190), 'en': (187, 188, 188), 'jp': (191, 192, 190), 'tw': (191, 192, 190)}, button={'cn': (1215, 26, 1245, 60), 'en': (1215, 26, 1245, 60), 'jp': (1215, 26, 1245, 60), 'tw': (1215, 26, 1245, 60)}, file={'cn': './assets/cn/ui/ISLAND_CHECK.png', 'en': './assets/en/ui/ISLAND_CHECK.png', 'jp': './assets/cn/ui/ISLAND_CHECK.png', 'tw': './assets/cn/ui/ISLAND_CHECK.png'}) +ISLAND_GOTO_ISLAND_PHONE = Button(area={'cn': (1215, 26, 1245, 60), 'en': (1215, 26, 1245, 60), 'jp': (1215, 26, 1245, 60), 'tw': (1215, 26, 1245, 60)}, color={'cn': (191, 192, 190), 'en': (24, 0, 0), 'jp': (191, 192, 190), 'tw': (191, 192, 190)}, button={'cn': (1215, 26, 1245, 60), 'en': (1215, 26, 1245, 60), 'jp': (1215, 26, 1245, 60), 'tw': (1215, 26, 1245, 60)}, file={'cn': './assets/cn/ui/ISLAND_GOTO_ISLAND_PHONE.png', 'en': './assets/en/ui/ISLAND_GOTO_ISLAND_PHONE.png', 'jp': './assets/cn/ui/ISLAND_GOTO_ISLAND_PHONE.png', 'tw': './assets/cn/ui/ISLAND_GOTO_ISLAND_PHONE.png'}) ISLAND_PHONE_CHECK = Button(area={'cn': (1037, 644, 1077, 680), 'en': (1037, 644, 1077, 680), 'jp': (1037, 644, 1077, 680), 'tw': (1037, 644, 1077, 680)}, color={'cn': (138, 150, 163), 'en': (138, 150, 163), 'jp': (138, 150, 163), 'tw': (138, 150, 163)}, button={'cn': (1037, 644, 1077, 680), 'en': (1037, 644, 1077, 680), 'jp': (1037, 644, 1077, 680), 'tw': (1037, 644, 1077, 680)}, file={'cn': './assets/cn/ui/ISLAND_PHONE_CHECK.png', 'en': './assets/cn/ui/ISLAND_PHONE_CHECK.png', 'jp': './assets/cn/ui/ISLAND_PHONE_CHECK.png', 'tw': './assets/cn/ui/ISLAND_PHONE_CHECK.png'}) ISLAND_PHONE_GOTO_ISLAND = Button(area={'cn': (1037, 644, 1077, 680), 'en': (1037, 644, 1077, 680), 'jp': (1037, 644, 1077, 680), 'tw': (1037, 644, 1077, 680)}, color={'cn': (138, 150, 163), 'en': (138, 150, 163), 'jp': (138, 150, 163), 'tw': (138, 150, 163)}, button={'cn': (16, 8, 80, 72), 'en': (16, 8, 80, 72), 'jp': (16, 8, 80, 72), 'tw': (16, 8, 80, 72)}, file={'cn': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND.png', 'en': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND.png', 'jp': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND.png', 'tw': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND.png'}) ISLAND_PHONE_GOTO_MAIN = Button(area={'cn': (1037, 644, 1077, 680), 'en': (1037, 644, 1077, 680), 'jp': (1037, 644, 1077, 680), 'tw': (1037, 644, 1077, 680)}, color={'cn': (138, 150, 163), 'en': (138, 150, 163), 'jp': (138, 150, 163), 'tw': (138, 150, 163)}, button={'cn': (1037, 644, 1077, 680), 'en': (1037, 644, 1077, 680), 'jp': (1037, 644, 1077, 680), 'tw': (1037, 644, 1077, 680)}, file={'cn': './assets/cn/ui/ISLAND_PHONE_GOTO_MAIN.png', 'en': './assets/cn/ui/ISLAND_PHONE_GOTO_MAIN.png', 'jp': './assets/cn/ui/ISLAND_PHONE_GOTO_MAIN.png', 'tw': './assets/cn/ui/ISLAND_PHONE_GOTO_MAIN.png'})