diff --git a/assets/cn/island/ISLAND_STORAGE_SCROLL_AREA.png b/assets/cn/island/ISLAND_STORAGE_SCROLL_AREA.png new file mode 100644 index 0000000000..691c095f61 Binary files /dev/null and b/assets/cn/island/ISLAND_STORAGE_SCROLL_AREA.png differ diff --git a/assets/cn/island/TEMPLATE_ISLAND_SEASON_TASK_OBTAINED.png b/assets/cn/island/TEMPLATE_ISLAND_SEASON_TASK_OBTAINED.png index 342fc33e85..9a1b26fdc8 100644 Binary files a/assets/cn/island/TEMPLATE_ISLAND_SEASON_TASK_OBTAINED.png and b/assets/cn/island/TEMPLATE_ISLAND_SEASON_TASK_OBTAINED.png differ diff --git a/assets/cn/ui/ISLAND_COMMISSION_CHECK.png b/assets/cn/ui/ISLAND_COMMISSION_CHECK.png index 4ce32f4259..3c0c6dae4a 100644 Binary files a/assets/cn/ui/ISLAND_COMMISSION_CHECK.png and b/assets/cn/ui/ISLAND_COMMISSION_CHECK.png differ diff --git a/assets/cn/ui/ISLAND_MANAGE_CHECK.png b/assets/cn/ui/ISLAND_MANAGE_CHECK.png index 3b003bd9a1..b1a778fc6e 100644 Binary files a/assets/cn/ui/ISLAND_MANAGE_CHECK.png and b/assets/cn/ui/ISLAND_MANAGE_CHECK.png differ diff --git a/assets/cn/ui/ISLAND_MAP_CHECK.png b/assets/cn/ui/ISLAND_MAP_CHECK.png index 359a0e82e1..1755a2ca98 100644 Binary files a/assets/cn/ui/ISLAND_MAP_CHECK.png and b/assets/cn/ui/ISLAND_MAP_CHECK.png differ diff --git a/assets/cn/ui/ISLAND_ORDER_CHECK.png b/assets/cn/ui/ISLAND_ORDER_CHECK.png index c1c45b4c63..dd4738258e 100644 Binary files a/assets/cn/ui/ISLAND_ORDER_CHECK.png and b/assets/cn/ui/ISLAND_ORDER_CHECK.png differ diff --git a/assets/cn/ui/ISLAND_SEASON_CHECK.png b/assets/cn/ui/ISLAND_SEASON_CHECK.png index eee046c932..d0381905e2 100644 Binary files a/assets/cn/ui/ISLAND_SEASON_CHECK.png and b/assets/cn/ui/ISLAND_SEASON_CHECK.png differ diff --git a/assets/cn/ui/ISLAND_STORAGE_CHECK.png b/assets/cn/ui/ISLAND_STORAGE_CHECK.png index 7b75edab6b..c2d9484b0d 100644 Binary files a/assets/cn/ui/ISLAND_STORAGE_CHECK.png and b/assets/cn/ui/ISLAND_STORAGE_CHECK.png differ diff --git a/assets/cn/ui/ISLAND_TECHNOLOGY_CHECK.png b/assets/cn/ui/ISLAND_TECHNOLOGY_CHECK.png index 0a0efa57ab..51e2554716 100644 Binary files a/assets/cn/ui/ISLAND_TECHNOLOGY_CHECK.png and b/assets/cn/ui/ISLAND_TECHNOLOGY_CHECK.png differ diff --git a/assets/shop/island/Apple Juice.png b/assets/shop/island/Apple Juice.png new file mode 100644 index 0000000000..c2b66f98b6 Binary files /dev/null and b/assets/shop/island/Apple Juice.png differ diff --git a/assets/shop/island/Apple.png b/assets/shop/island/Apple.png new file mode 100644 index 0000000000..a65ebcd259 Binary files /dev/null and b/assets/shop/island/Apple.png differ diff --git a/assets/shop/island/Autumn Bouquet.png b/assets/shop/island/Autumn Bouquet.png new file mode 100644 index 0000000000..028beb17d6 Binary files /dev/null and b/assets/shop/island/Autumn Bouquet.png differ diff --git a/assets/shop/island/Autumn Chrysanthemum.png b/assets/shop/island/Autumn Chrysanthemum.png new file mode 100644 index 0000000000..150e94d3b4 Binary files /dev/null and b/assets/shop/island/Autumn Chrysanthemum.png differ diff --git a/assets/shop/island/Avocado.png b/assets/shop/island/Avocado.png new file mode 100644 index 0000000000..546f27d42b Binary files /dev/null and b/assets/shop/island/Avocado.png differ diff --git a/assets/shop/island/Baa Baa Sheep Feed.png b/assets/shop/island/Baa Baa Sheep Feed.png new file mode 100644 index 0000000000..eb26e3c29c Binary files /dev/null and b/assets/shop/island/Baa Baa Sheep Feed.png differ diff --git a/assets/shop/island/Banana and Mango Juice.png b/assets/shop/island/Banana and Mango Juice.png new file mode 100644 index 0000000000..97b58fa257 Binary files /dev/null and b/assets/shop/island/Banana and Mango Juice.png differ diff --git a/assets/shop/island/Banana.png b/assets/shop/island/Banana.png new file mode 100644 index 0000000000..5a096de764 Binary files /dev/null and b/assets/shop/island/Banana.png differ diff --git a/assets/shop/island/Bauxite Ore.png b/assets/shop/island/Bauxite Ore.png new file mode 100644 index 0000000000..a3a34586c4 Binary files /dev/null and b/assets/shop/island/Bauxite Ore.png differ diff --git a/assets/shop/island/Berry and Orange Dessert.png b/assets/shop/island/Berry and Orange Dessert.png new file mode 100644 index 0000000000..3a293f7149 Binary files /dev/null and b/assets/shop/island/Berry and Orange Dessert.png differ diff --git a/assets/shop/island/Cable.png b/assets/shop/island/Cable.png new file mode 100644 index 0000000000..1ef653bc14 Binary files /dev/null and b/assets/shop/island/Cable.png differ diff --git a/assets/shop/island/Carrot.png b/assets/shop/island/Carrot.png new file mode 100644 index 0000000000..82ba29d502 Binary files /dev/null and b/assets/shop/island/Carrot.png differ diff --git a/assets/shop/island/Cheese.png b/assets/shop/island/Cheese.png new file mode 100644 index 0000000000..959d061594 Binary files /dev/null and b/assets/shop/island/Cheese.png differ diff --git a/assets/shop/island/Citrus Coffee.png b/assets/shop/island/Citrus Coffee.png new file mode 100644 index 0000000000..f2dcbf06d1 Binary files /dev/null and b/assets/shop/island/Citrus Coffee.png differ diff --git a/assets/shop/island/Citrus Fruit.png b/assets/shop/island/Citrus Fruit.png new file mode 100644 index 0000000000..d9c9a1f843 Binary files /dev/null and b/assets/shop/island/Citrus Fruit.png differ diff --git a/assets/shop/island/Classic Tofu Combo.png b/assets/shop/island/Classic Tofu Combo.png new file mode 100644 index 0000000000..3ab06b0130 Binary files /dev/null and b/assets/shop/island/Classic Tofu Combo.png differ diff --git a/assets/shop/island/Clucky Clucky Bird Feed.png b/assets/shop/island/Clucky Clucky Bird Feed.png new file mode 100644 index 0000000000..6767ace193 Binary files /dev/null and b/assets/shop/island/Clucky Clucky Bird Feed.png differ diff --git a/assets/shop/island/Coal-Roasted Skewer.png b/assets/shop/island/Coal-Roasted Skewer.png new file mode 100644 index 0000000000..6b5c900040 Binary files /dev/null and b/assets/shop/island/Coal-Roasted Skewer.png differ diff --git a/assets/shop/island/Coal.png b/assets/shop/island/Coal.png new file mode 100644 index 0000000000..fddcd2e02d Binary files /dev/null and b/assets/shop/island/Coal.png differ diff --git a/assets/shop/island/Coffee Beans.png b/assets/shop/island/Coffee Beans.png new file mode 100644 index 0000000000..69c121e7cf Binary files /dev/null and b/assets/shop/island/Coffee Beans.png differ diff --git a/assets/shop/island/Colorful Fruit Paradise.png b/assets/shop/island/Colorful Fruit Paradise.png new file mode 100644 index 0000000000..6117337731 Binary files /dev/null and b/assets/shop/island/Colorful Fruit Paradise.png differ diff --git a/assets/shop/island/Copper Ore.png b/assets/shop/island/Copper Ore.png new file mode 100644 index 0000000000..f694ced550 Binary files /dev/null and b/assets/shop/island/Copper Ore.png differ diff --git a/assets/shop/island/Corn Cup.png b/assets/shop/island/Corn Cup.png new file mode 100644 index 0000000000..6023cbddad Binary files /dev/null and b/assets/shop/island/Corn Cup.png differ diff --git a/assets/shop/island/Corn.png b/assets/shop/island/Corn.png new file mode 100644 index 0000000000..e9e42fc65d Binary files /dev/null and b/assets/shop/island/Corn.png differ diff --git a/assets/shop/island/Cotton.png b/assets/shop/island/Cotton.png new file mode 100644 index 0000000000..65d2df1796 Binary files /dev/null and b/assets/shop/island/Cotton.png differ diff --git a/assets/shop/island/Eggs.png b/assets/shop/island/Eggs.png new file mode 100644 index 0000000000..77c3788883 Binary files /dev/null and b/assets/shop/island/Eggs.png differ diff --git a/assets/shop/island/Elegant Wood.png b/assets/shop/island/Elegant Wood.png new file mode 100644 index 0000000000..b61b9eb996 Binary files /dev/null and b/assets/shop/island/Elegant Wood.png differ diff --git a/assets/shop/island/Filing Cabinet.png b/assets/shop/island/Filing Cabinet.png new file mode 100644 index 0000000000..7fff7bfe36 Binary files /dev/null and b/assets/shop/island/Filing Cabinet.png differ diff --git a/assets/shop/island/Flax.png b/assets/shop/island/Flax.png new file mode 100644 index 0000000000..7196f0ec4d Binary files /dev/null and b/assets/shop/island/Flax.png differ diff --git a/assets/shop/island/Floral and Fruity.png b/assets/shop/island/Floral and Fruity.png new file mode 100644 index 0000000000..eaacceb08e Binary files /dev/null and b/assets/shop/island/Floral and Fruity.png differ diff --git a/assets/shop/island/Flour.png b/assets/shop/island/Flour.png new file mode 100644 index 0000000000..71d6d432dd Binary files /dev/null and b/assets/shop/island/Flour.png differ diff --git a/assets/shop/island/Fresh Honey.png b/assets/shop/island/Fresh Honey.png new file mode 100644 index 0000000000..49affe215e Binary files /dev/null and b/assets/shop/island/Fresh Honey.png differ diff --git a/assets/shop/island/Fresh Meat.png b/assets/shop/island/Fresh Meat.png new file mode 100644 index 0000000000..d01f63cc6c Binary files /dev/null and b/assets/shop/island/Fresh Meat.png differ diff --git a/assets/shop/island/Grass.png b/assets/shop/island/Grass.png new file mode 100644 index 0000000000..cc478b8618 Binary files /dev/null and b/assets/shop/island/Grass.png differ diff --git a/assets/shop/island/Hearty Meal.png b/assets/shop/island/Hearty Meal.png new file mode 100644 index 0000000000..5f0351771b Binary files /dev/null and b/assets/shop/island/Hearty Meal.png differ diff --git a/assets/shop/island/Honey and Lemon Water.png b/assets/shop/island/Honey and Lemon Water.png new file mode 100644 index 0000000000..b4e7faae88 Binary files /dev/null and b/assets/shop/island/Honey and Lemon Water.png differ diff --git a/assets/shop/island/Iced Coffee.png b/assets/shop/island/Iced Coffee.png new file mode 100644 index 0000000000..6ed55eae35 Binary files /dev/null and b/assets/shop/island/Iced Coffee.png differ diff --git a/assets/shop/island/Iron Ore.png b/assets/shop/island/Iron Ore.png new file mode 100644 index 0000000000..e8567c24c2 Binary files /dev/null and b/assets/shop/island/Iron Ore.png differ diff --git a/assets/shop/island/Lavender Tea.png b/assets/shop/island/Lavender Tea.png new file mode 100644 index 0000000000..abaeac31ef Binary files /dev/null and b/assets/shop/island/Lavender Tea.png differ diff --git a/assets/shop/island/Lavender.png b/assets/shop/island/Lavender.png new file mode 100644 index 0000000000..292e3ed4a7 Binary files /dev/null and b/assets/shop/island/Lavender.png differ diff --git a/assets/shop/island/Leather.png b/assets/shop/island/Leather.png new file mode 100644 index 0000000000..9c2b013903 Binary files /dev/null and b/assets/shop/island/Leather.png differ diff --git a/assets/shop/island/Lemon.png b/assets/shop/island/Lemon.png new file mode 100644 index 0000000000..5c3fb61e48 Binary files /dev/null and b/assets/shop/island/Lemon.png differ diff --git a/assets/shop/island/Mango.png b/assets/shop/island/Mango.png new file mode 100644 index 0000000000..920d225adf Binary files /dev/null and b/assets/shop/island/Mango.png differ diff --git a/assets/shop/island/Matsutake.png b/assets/shop/island/Matsutake.png new file mode 100644 index 0000000000..05a4385b38 Binary files /dev/null and b/assets/shop/island/Matsutake.png differ diff --git a/assets/shop/island/Milk.png b/assets/shop/island/Milk.png new file mode 100644 index 0000000000..55e1a227a4 Binary files /dev/null and b/assets/shop/island/Milk.png differ diff --git a/assets/shop/island/Moo Moo Cow Feed.png b/assets/shop/island/Moo Moo Cow Feed.png new file mode 100644 index 0000000000..4e0d522e96 Binary files /dev/null and b/assets/shop/island/Moo Moo Cow Feed.png differ diff --git a/assets/shop/island/Nails.png b/assets/shop/island/Nails.png new file mode 100644 index 0000000000..4ff6b07d58 Binary files /dev/null and b/assets/shop/island/Nails.png differ diff --git a/assets/shop/island/Napa Cabbage.png b/assets/shop/island/Napa Cabbage.png new file mode 100644 index 0000000000..c8dd5534a0 Binary files /dev/null and b/assets/shop/island/Napa Cabbage.png differ diff --git a/assets/shop/island/Oinky Oinky Pig Feed.png b/assets/shop/island/Oinky Oinky Pig Feed.png new file mode 100644 index 0000000000..9986e53656 Binary files /dev/null and b/assets/shop/island/Oinky Oinky Pig Feed.png differ diff --git a/assets/shop/island/Omelette.png b/assets/shop/island/Omelette.png new file mode 100644 index 0000000000..287e3f42cf Binary files /dev/null and b/assets/shop/island/Omelette.png differ diff --git a/assets/shop/island/Omurice.png b/assets/shop/island/Omurice.png new file mode 100644 index 0000000000..c415e92f06 Binary files /dev/null and b/assets/shop/island/Omurice.png differ diff --git a/assets/shop/island/Onion.png b/assets/shop/island/Onion.png new file mode 100644 index 0000000000..6cb01a67d8 Binary files /dev/null and b/assets/shop/island/Onion.png differ diff --git a/assets/shop/island/Orange Pie.png b/assets/shop/island/Orange Pie.png new file mode 100644 index 0000000000..ac8f260b0d Binary files /dev/null and b/assets/shop/island/Orange Pie.png differ diff --git a/assets/shop/island/Peanut Oil.png b/assets/shop/island/Peanut Oil.png new file mode 100644 index 0000000000..a94fb0596b Binary files /dev/null and b/assets/shop/island/Peanut Oil.png differ diff --git a/assets/shop/island/Peanuts.png b/assets/shop/island/Peanuts.png new file mode 100644 index 0000000000..678b407be7 Binary files /dev/null and b/assets/shop/island/Peanuts.png differ diff --git a/assets/shop/island/Pelt.png b/assets/shop/island/Pelt.png new file mode 100644 index 0000000000..f0e6d6ecb6 Binary files /dev/null and b/assets/shop/island/Pelt.png differ diff --git a/assets/shop/island/Potato.png b/assets/shop/island/Potato.png new file mode 100644 index 0000000000..b0d60d4682 Binary files /dev/null and b/assets/shop/island/Potato.png differ diff --git a/assets/shop/island/Poultry.png b/assets/shop/island/Poultry.png new file mode 100644 index 0000000000..68178cc82a Binary files /dev/null and b/assets/shop/island/Poultry.png differ diff --git a/assets/shop/island/Premium Wood.png b/assets/shop/island/Premium Wood.png new file mode 100644 index 0000000000..24fe8f4b5d Binary files /dev/null and b/assets/shop/island/Premium Wood.png differ diff --git a/assets/shop/island/Raw Timber.png b/assets/shop/island/Raw Timber.png new file mode 100644 index 0000000000..427bd19a43 Binary files /dev/null and b/assets/shop/island/Raw Timber.png differ diff --git a/assets/shop/island/Reed Flowers.png b/assets/shop/island/Reed Flowers.png new file mode 100644 index 0000000000..3fdf671e38 Binary files /dev/null and b/assets/shop/island/Reed Flowers.png differ diff --git a/assets/shop/island/Rice.png b/assets/shop/island/Rice.png new file mode 100644 index 0000000000..6ef7feb017 Binary files /dev/null and b/assets/shop/island/Rice.png differ diff --git a/assets/shop/island/Rubber.png b/assets/shop/island/Rubber.png new file mode 100644 index 0000000000..535d709167 Binary files /dev/null and b/assets/shop/island/Rubber.png differ diff --git a/assets/shop/island/Shoes.png b/assets/shop/island/Shoes.png new file mode 100644 index 0000000000..289a71a451 Binary files /dev/null and b/assets/shop/island/Shoes.png differ diff --git a/assets/shop/island/Silver Ore.png b/assets/shop/island/Silver Ore.png new file mode 100644 index 0000000000..b5912a0662 Binary files /dev/null and b/assets/shop/island/Silver Ore.png differ diff --git a/assets/shop/island/Soy Beans.png b/assets/shop/island/Soy Beans.png new file mode 100644 index 0000000000..51d28e0ddb Binary files /dev/null and b/assets/shop/island/Soy Beans.png differ diff --git a/assets/shop/island/Steak Bowl.png b/assets/shop/island/Steak Bowl.png new file mode 100644 index 0000000000..a8ef161077 Binary files /dev/null and b/assets/shop/island/Steak Bowl.png differ diff --git a/assets/shop/island/Sticky Rice with Mango.png b/assets/shop/island/Sticky Rice with Mango.png new file mode 100644 index 0000000000..01e80201fe Binary files /dev/null and b/assets/shop/island/Sticky Rice with Mango.png differ diff --git a/assets/shop/island/Stir-Fried Chicken.png b/assets/shop/island/Stir-Fried Chicken.png new file mode 100644 index 0000000000..27624ad831 Binary files /dev/null and b/assets/shop/island/Stir-Fried Chicken.png differ diff --git a/assets/shop/island/Strawberries.png b/assets/shop/island/Strawberries.png new file mode 100644 index 0000000000..15112854c4 Binary files /dev/null and b/assets/shop/island/Strawberries.png differ diff --git a/assets/shop/island/Strawberry Charlotte.png b/assets/shop/island/Strawberry Charlotte.png new file mode 100644 index 0000000000..8fe196d8a7 Binary files /dev/null and b/assets/shop/island/Strawberry Charlotte.png differ diff --git "a/assets/shop/island/Strawberry Honey Frapp\303\251.png" "b/assets/shop/island/Strawberry Honey Frapp\303\251.png" new file mode 100644 index 0000000000..c5ee9f2482 Binary files /dev/null and "b/assets/shop/island/Strawberry Honey Frapp\303\251.png" differ diff --git a/assets/shop/island/Strawberry Lemon Drink.png b/assets/shop/island/Strawberry Lemon Drink.png new file mode 100644 index 0000000000..2f42f4ec8d Binary files /dev/null and b/assets/shop/island/Strawberry Lemon Drink.png differ diff --git a/assets/shop/island/Succulently Sweet.png b/assets/shop/island/Succulently Sweet.png new file mode 100644 index 0000000000..15a138b23c Binary files /dev/null and b/assets/shop/island/Succulently Sweet.png differ diff --git a/assets/shop/island/Sulfur.png b/assets/shop/island/Sulfur.png new file mode 100644 index 0000000000..1fafeda069 Binary files /dev/null and b/assets/shop/island/Sulfur.png differ diff --git a/assets/shop/island/Sunny Honey.png b/assets/shop/island/Sunny Honey.png new file mode 100644 index 0000000000..f8e4071e9c Binary files /dev/null and b/assets/shop/island/Sunny Honey.png differ diff --git a/assets/shop/island/Tea Leaves.png b/assets/shop/island/Tea Leaves.png new file mode 100644 index 0000000000..c68735f4e6 Binary files /dev/null and b/assets/shop/island/Tea Leaves.png differ diff --git a/assets/shop/island/Tofu with Minced Meat.png b/assets/shop/island/Tofu with Minced Meat.png new file mode 100644 index 0000000000..7961549117 Binary files /dev/null and b/assets/shop/island/Tofu with Minced Meat.png differ diff --git a/assets/shop/island/Tofu.png b/assets/shop/island/Tofu.png new file mode 100644 index 0000000000..d1ad219bbf Binary files /dev/null and b/assets/shop/island/Tofu.png differ diff --git a/assets/shop/island/Utensils.png b/assets/shop/island/Utensils.png new file mode 100644 index 0000000000..8be2b5b5f3 Binary files /dev/null and b/assets/shop/island/Utensils.png differ diff --git a/assets/shop/island/Wheat.png b/assets/shop/island/Wheat.png new file mode 100644 index 0000000000..23a0c23e75 Binary files /dev/null and b/assets/shop/island/Wheat.png differ diff --git a/assets/shop/island/Wool.png b/assets/shop/island/Wool.png new file mode 100644 index 0000000000..7943a116ba Binary files /dev/null and b/assets/shop/island/Wool.png differ diff --git a/assets/shop/island/Workable Wood.png b/assets/shop/island/Workable Wood.png new file mode 100644 index 0000000000..eb559ff54c Binary files /dev/null and b/assets/shop/island/Workable Wood.png differ diff --git a/module/island/assets.py b/module/island/assets.py index cef0aea607..9c41913c13 100644 --- a/module/island/assets.py +++ b/module/island/assets.py @@ -5,5 +5,6 @@ # Don't modify it manually. ISLAND_SEASON_TASK_SCROLL_AREA = Button(area={'cn': (1236, 171, 1237, 604), 'en': (1236, 171, 1237, 604), 'jp': (1236, 171, 1237, 604), 'tw': (1236, 171, 1237, 604)}, color={'cn': (186, 192, 191), 'en': (186, 192, 191), 'jp': (186, 192, 191), 'tw': (186, 192, 191)}, button={'cn': (1236, 171, 1237, 604), 'en': (1236, 171, 1237, 604), 'jp': (1236, 171, 1237, 604), 'tw': (1236, 171, 1237, 604)}, file={'cn': './assets/cn/island/ISLAND_SEASON_TASK_SCROLL_AREA.png', 'en': './assets/cn/island/ISLAND_SEASON_TASK_SCROLL_AREA.png', 'jp': './assets/cn/island/ISLAND_SEASON_TASK_SCROLL_AREA.png', 'tw': './assets/cn/island/ISLAND_SEASON_TASK_SCROLL_AREA.png'}) +ISLAND_STORAGE_SCROLL_AREA = Button(area={'cn': (1149, 135, 1153, 547), 'en': (1149, 135, 1153, 547), 'jp': (1149, 135, 1153, 547), 'tw': (1149, 135, 1153, 547)}, color={'cn': (216, 218, 218), 'en': (216, 218, 218), 'jp': (216, 218, 218), 'tw': (216, 218, 218)}, button={'cn': (1149, 135, 1153, 547), 'en': (1149, 135, 1153, 547), 'jp': (1149, 135, 1153, 547), 'tw': (1149, 135, 1153, 547)}, file={'cn': './assets/cn/island/ISLAND_STORAGE_SCROLL_AREA.png', 'en': './assets/cn/island/ISLAND_STORAGE_SCROLL_AREA.png', 'jp': './assets/cn/island/ISLAND_STORAGE_SCROLL_AREA.png', 'tw': './assets/cn/island/ISLAND_STORAGE_SCROLL_AREA.png'}) TEMPLATE_ISLAND_SEASON_TASK_ICON = Template(file={'cn': './assets/cn/island/TEMPLATE_ISLAND_SEASON_TASK_ICON.png', 'en': './assets/cn/island/TEMPLATE_ISLAND_SEASON_TASK_ICON.png', 'jp': './assets/cn/island/TEMPLATE_ISLAND_SEASON_TASK_ICON.png', 'tw': './assets/cn/island/TEMPLATE_ISLAND_SEASON_TASK_ICON.png'}) TEMPLATE_ISLAND_SEASON_TASK_OBTAINED = Template(file={'cn': './assets/cn/island/TEMPLATE_ISLAND_SEASON_TASK_OBTAINED.png', 'en': './assets/cn/island/TEMPLATE_ISLAND_SEASON_TASK_OBTAINED.png', 'jp': './assets/jp/island/TEMPLATE_ISLAND_SEASON_TASK_OBTAINED.png', 'tw': './assets/cn/island/TEMPLATE_ISLAND_SEASON_TASK_OBTAINED.png'}) diff --git a/module/island/storage.py b/module/island/storage.py new file mode 100644 index 0000000000..a0ba4b7855 --- /dev/null +++ b/module/island/storage.py @@ -0,0 +1,284 @@ +import cv2 +import numpy as np + +import module.config.server as server + +from module.base.button import ButtonGrid +from module.base.decorator import cached_property, del_cached_property +from module.base.timer import Timer +from module.base.utils import color_similarity_2d, rgb2gray, xywh2xyxy +from module.island.assets import * +from module.island.data import DIC_ISLAND_ITEM +from module.island.ui import IslandUI, ISLAND_STORAGE_SCROLL +from module.logger import logger +from module.map_detection.utils import Points +from module.ocr.ocr import Digit +from module.statistics.item import Item, ItemGrid +from module.ui.page import page_island_storage + + +class AmountOcr(Digit): + def pre_process(self, image): + mask = color_similarity_2d(image, color=(75, 76, 78)) + bg = np.mean(mask > 230, axis=0) + match = np.where(bg > 0.8)[0] + if len(match): + left = match[0] + total = mask.shape[1] + if left < total: + image = image[:, left:] + image = super().pre_process(image) + return image + + +if server.server == 'jp': + AMOUNT_OCR = AmountOcr([], letter=(255, 255, 255), name='Amount_ocr') +else: + AMOUNT_OCR = AmountOcr([], lang='cnocr', letter=(218, 218, 218), name='Amount_ocr') + + +class StorageItem(Item): + def predict_valid(self): + return np.mean(rgb2gray(self.image) > 230) < 0.9 + + +class StorageItemGrid(ItemGrid): + item_class = StorageItem + + def match_template(self, image, similarity=None, threshold=5): + return super().match_template(self, image, similarity=similarity, threshold=threshold) + + @staticmethod + def item_id_parse(string): + for key, value in DIC_ISLAND_ITEM.items(): + if string == value['name']['en']: + return key + logger.warning(f'Unknown item name: {string}') + return None + + def predict(self, image, name=True, amount=True, cost=False, price=False, tag=False): + super().predict(image, name, amount, cost, price, tag) + items = [] + for item in self.items: + item.item_id = self.item_id_parse(item.name) + if item.item_id is not None: + items.append(item) + self.items = items + return self.items + + +class IslandStorage(IslandUI): + def _get_bars(self): + """ + Returns: + np.array: [[x1, y1], [x2, y2]], location of the item name icon upper left corner. + """ + area = (299, 135, 1116, 574) + image = self.image_crop(area, copy=True) + gray = color_similarity_2d(image, color=(116, 116, 118)) + cv2.inRange(gray, 250, 255, dst=gray) + bars = [] + contours, _ = cv2.findContours(gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) + for cont in contours: + rect = cv2.boundingRect(cv2.convexHull(cont).astype(np.float32)) + rect = xywh2xyxy(rect) + # Check max_height + if rect[3] - rect[1] < 10: + continue + # Check item grid should be in the area + if rect[1] < 93: + continue + bars.append(rect) + bars = Points([(0., b[1]) for b in bars]).group(threshold=5) + logger.attr('Items_icon', len(bars)) + return bars + + def wait_until_bar_appear(self, skip_first_screenshot=True): + """ + After entering island storage page, + items are not loaded that fast, + wait until any bar icon appears + """ + confirm_timer = Timer(1.5, count=3).start() + for _ in self.loop(skip_first=skip_first_screenshot): + bars = self._get_bars() + if len(bars): + if confirm_timer.reached(): + return + else: + pass + else: + confirm_timer.reset() + + @cached_property + def storage_grid(self): + return self.storage_bar_grid() + + def storage_bar_grid(self): + """ + Returns: + ButtonGrid: + """ + bars = self._get_bars() + count = len(bars) + if count == 0: + logger.warning('Unable to find bar icon, assume task list is at top') + origin_y = 169 + delta_y = 167 + row = 2 + elif count == 1: + y_list = bars[:, 1] + # -93 to adjust the bar position to grid position + origin_y = y_list[0] - 93 + 135 + delta_y = 167 + row = 1 + elif count == 2: + y_list = bars[:, 1] + origin_y = min(y_list) - 93 + 135 + delta_y = abs(y_list[1] - y_list[0]) + row = 2 + else: + logger.warning(f'Too many bars found ({count}), assume max rows') + y_list = bars[:, 1] + origin_y = min(y_list) - 93 + 135 + delta_y = abs(y_list[1] - y_list[0]) + row = 2 + storage_grid = ButtonGrid( + origin=(321, origin_y), delta=(142, delta_y), + button_shape=(64, 64), grid_shape=(6, row), + name='STORAGE_ITEM_GRID' + ) + return storage_grid + + storage_template_folder = './assets/shop/island' + + @cached_property + def storage_items(self): + """ + Returns: + ItemGrid: + """ + storage_grid = self.storage_grid + storage_items = StorageItemGrid( + storage_grid, + templates={}, + template_area=(0, 0, 64, 54), + amount_area=(18, 74, 77, 91), + ) + storage_items.load_template_folder(self.storage_template_folder) + storage_items.amount_ocr = AMOUNT_OCR + return storage_items + + def storage_has_loaded(self, items): + """ + Returns: + bool + """ + return any(bool(item.amount) for item in items) + + def storage_get_items(self, skip_first_screenshot=True): + """ + Args: + skip_first_screenshot (bool): + + Returns: + list[Item]: + """ + storage_items = self.storage_items + if storage_items is None: + logger.warning('Expected type \'StorageItemGrid\' but was None') + return [] + + # Loop on predict to ensure items + # have loaded and can accurately + # be read + record = 0 + timeout = Timer(3, count=9).start() + while 1: + if skip_first_screenshot: + skip_first_screenshot = False + else: + self.device.screenshot() + + if self.config.SHOP_EXTRACT_TEMPLATE: + if self.storage_template_folder: + logger.info(f'Extract item templates to {self.storage_template_folder}') + storage_items.extract_template(self.device.image, self.storage_template_folder) + else: + logger.warning('SHOP_EXTRACT_TEMPLATE enabled but shop_template_folder is not set, skip extracting') + + storage_items.predict(self.device.image) + + if timeout.reached(): + logger.warning('Items loading timeout; continue and assumed has loaded') + break + + # Check unloaded items, because AL loads items too slow. + items = storage_items.items + known = len([item for item in items if item.is_known_item]) + logger.attr('Item detected', known) + if known == 0 or known != record: + record = known + continue + else: + record = known + + # End + if self.storage_has_loaded(items): + break + + # Log final result on predicted items + items = storage_items.items + grids = storage_items.grids + if len(items): + min_row = grids[0, 0].area[1] + row = [str(item) for item in items if item.button[1] == min_row] + logger.info(f'Storage row 1: {row}') + row = [str(item) for item in items if item.button[1] != min_row] + logger.info(f'Storage row 2: {row}') + return items + else: + logger.info('No storage items found') + return [] + + def scan_all(self): + """ + Scans all items on the island storage page. + + Returns: + dict: {item_id: amount} + """ + logger.hr('Scanning storage items', level=2) + ISLAND_STORAGE_SCROLL.set_top(main=self) + self.wait_until_bar_appear() + items_dict = {} + while 1: + items = self.storage_get_items() + for item in items: + if not items_dict.get(item.item_id): + items_dict[item.item_id] = item.amount + + if ISLAND_STORAGE_SCROLL.at_bottom(main=self): + logger.info('Scroll bar reached end, stop') + break + else: + ISLAND_STORAGE_SCROLL.next_page(main=self, page=0.66) + self.device.click_record.pop() + del_cached_property(self, 'storage_grid') + del_cached_property(self, 'storage_items') + continue + return items_dict + + def run(self): + """ + Pages: + in: Any page + out: page_island + + Returns: + dict: {item_id: amount} + """ + self.ui_ensure(page_island_storage) + self.island_storage_side_navbar_ensure(upper=1) + result = self.scan_all() + return result diff --git a/module/island/ui.py b/module/island/ui.py index 7da131b8b1..0d4fdeb54e 100644 --- a/module/island/ui.py +++ b/module/island/ui.py @@ -2,7 +2,7 @@ from module.base.decorator import cached_property from module.island.assets import * from module.ui.navbar import Navbar -from module.ui.scroll import Scroll +from module.ui.scroll import AdaptiveScroll, Scroll from module.ui.ui import UI @@ -12,6 +12,12 @@ name="ISLAND_SEASON_TASK_SCROLL" ) +ISLAND_STORAGE_SCROLL = AdaptiveScroll( + ISLAND_STORAGE_SCROLL_AREA.button, + background=1, + name="ISLAND_STORAGE_SCROLL" +) + class IslandUI(UI): def ui_additional(self, get_ship=True): @@ -38,6 +44,25 @@ def _island_season_bottom_navbar(self): active_count=500, inactive_count=500) + @cached_property + def _island_storage_side_navbar(self): + """ + 3 options: + material, + consumable, + special + """ + island_storage_side_navbar = ButtonGrid( + origin=(164, 154), delta=(0, 106.5), + button_shape=(64, 64), grid_shape=(1, 3), + name='ISLAND_STORAGE_SIDE_NAVBAR' + ) + return Navbar(grids=island_storage_side_navbar, + active_color=(57, 189, 255), + inactive_color=(57, 58, 64), + active_count=500, + inactive_count=500) + def island_season_bottom_navbar_ensure(self, left=None, right=None): """ Args: @@ -56,4 +81,20 @@ def island_season_bottom_navbar_ensure(self, left=None, right=None): """ if self._island_season_bottom_navbar.set(self, left=left, right=right): return True - return False \ No newline at end of file + return False + + def island_storage_side_navbar_ensure(self, upper=None, bottom=None): + """ + Args: + upper (int): + 1 for material, + 2 for consumable, + 3 for special + bottom (int): + 1 for special, + 2 for consumable, + 3 for material + """ + if self._island_storage_side_navbar.set(self, upper=upper, bottom=bottom): + return True + return False diff --git a/module/statistics/item.py b/module/statistics/item.py index ceff8a1778..5050528cc7 100644 --- a/module/statistics/item.py +++ b/module/statistics/item.py @@ -217,13 +217,14 @@ def load_cost_template_folder(self, folder): self.next_cost_template_index += 1 self.next_cost_template_index = max(self.next_cost_template_index, max_digit + 1) - def match_template(self, image, similarity=None): + def match_template(self, image, similarity=None, threshold=30): """ Match templates, try most frequent hit templates first. Args: image (np.ndarray): similarity (float): + threshold (int): Returns: str: Template name. @@ -236,7 +237,7 @@ def match_template(self, image, similarity=None): # Match known templates first names = [name for name in names if not name.isdigit()] + [name for name in names if name.isdigit()] for name in names: - if color_similar(color1=color, color2=self.colors[name], threshold=30): + if color_similar(color1=color, color2=self.colors[name], threshold=threshold): res = cv2.matchTemplate(image, self.templates[name], cv2.TM_CCOEFF_NORMED) _, sim, _, _ = cv2.minMaxLoc(res) if sim > similarity: diff --git a/module/ui/assets.py b/module/ui/assets.py index 3f253a1907..767e65ca70 100644 --- a/module/ui/assets.py +++ b/module/ui/assets.py @@ -50,15 +50,15 @@ 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': (1208, 24, 1248, 64), 'en': (1208, 24, 1248, 64), 'jp': (1208, 24, 1248, 64), 'tw': (1208, 24, 1248, 64)}, color={'cn': (209, 210, 206), 'en': (209, 210, 206), 'jp': (209, 210, 206), 'tw': (209, 210, 206)}, button={'cn': (1208, 24, 1248, 64), 'en': (1208, 24, 1248, 64), 'jp': (1208, 24, 1248, 64), 'tw': (1208, 24, 1248, 64)}, 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_COMMISSION_CHECK = Button(area={'cn': (199, 134, 373, 184), 'en': (199, 134, 373, 184), 'jp': (199, 134, 373, 184), 'tw': (199, 134, 373, 184)}, color={'cn': (195, 194, 192), 'en': (195, 194, 192), 'jp': (195, 194, 192), 'tw': (195, 194, 192)}, button={'cn': (199, 134, 373, 184), 'en': (199, 134, 373, 184), 'jp': (199, 134, 373, 184), 'tw': (199, 134, 373, 184)}, file={'cn': './assets/cn/ui/ISLAND_COMMISSION_CHECK.png', 'en': './assets/cn/ui/ISLAND_COMMISSION_CHECK.png', 'jp': './assets/jp/ui/ISLAND_COMMISSION_CHECK.png', 'tw': './assets/cn/ui/ISLAND_COMMISSION_CHECK.png'}) +ISLAND_COMMISSION_CHECK = Button(area={'cn': (199, 135, 373, 182), 'en': (199, 135, 373, 182), 'jp': (199, 134, 373, 184), 'tw': (199, 135, 373, 182)}, color={'cn': (188, 188, 185), 'en': (188, 188, 185), 'jp': (195, 194, 192), 'tw': (188, 188, 185)}, button={'cn': (199, 135, 373, 182), 'en': (199, 135, 373, 182), 'jp': (199, 134, 373, 184), 'tw': (199, 135, 373, 182)}, file={'cn': './assets/cn/ui/ISLAND_COMMISSION_CHECK.png', 'en': './assets/cn/ui/ISLAND_COMMISSION_CHECK.png', 'jp': './assets/jp/ui/ISLAND_COMMISSION_CHECK.png', 'tw': './assets/cn/ui/ISLAND_COMMISSION_CHECK.png'}) ISLAND_GOTO_ISLAND_MAP = Button(area={'cn': (840, 23, 880, 63), 'en': (840, 23, 880, 63), 'jp': (840, 23, 880, 63), 'tw': (840, 23, 880, 63)}, color={'cn': (197, 199, 196), 'en': (197, 199, 196), 'jp': (197, 199, 196), 'tw': (197, 199, 196)}, button={'cn': (840, 23, 880, 63), 'en': (840, 23, 880, 63), 'jp': (840, 23, 880, 63), 'tw': (840, 23, 880, 63)}, file={'cn': './assets/cn/ui/ISLAND_GOTO_ISLAND_MAP.png', 'en': './assets/cn/ui/ISLAND_GOTO_ISLAND_MAP.png', 'jp': './assets/cn/ui/ISLAND_GOTO_ISLAND_MAP.png', 'tw': './assets/cn/ui/ISLAND_GOTO_ISLAND_MAP.png'}) ISLAND_GOTO_ISLAND_PHONE = Button(area={'cn': (1208, 24, 1248, 64), 'en': (1208, 24, 1248, 64), 'jp': (1208, 24, 1248, 64), 'tw': (1208, 24, 1248, 64)}, color={'cn': (209, 210, 206), 'en': (209, 210, 206), 'jp': (209, 210, 206), 'tw': (209, 210, 206)}, button={'cn': (1208, 24, 1248, 64), 'en': (1208, 24, 1248, 64), 'jp': (1208, 24, 1248, 64), 'tw': (1208, 24, 1248, 64)}, 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_GOTO_ISLAND_SEASON = Button(area={'cn': (931, 24, 971, 64), 'en': (931, 24, 971, 64), 'jp': (931, 24, 971, 64), 'tw': (931, 24, 971, 64)}, color={'cn': (202, 204, 200), 'en': (202, 204, 200), 'jp': (202, 204, 200), 'tw': (202, 204, 200)}, button={'cn': (931, 24, 971, 64), 'en': (931, 24, 971, 64), 'jp': (931, 24, 971, 64), 'tw': (931, 24, 971, 64)}, file={'cn': './assets/cn/ui/ISLAND_GOTO_ISLAND_SEASON.png', 'en': './assets/cn/ui/ISLAND_GOTO_ISLAND_SEASON.png', 'jp': './assets/cn/ui/ISLAND_GOTO_ISLAND_SEASON.png', 'tw': './assets/cn/ui/ISLAND_GOTO_ISLAND_SEASON.png'}) ISLAND_GOTO_ISLAND_SHOP = Button(area={'cn': (747, 25, 787, 65), 'en': (747, 25, 787, 65), 'jp': (747, 25, 787, 65), 'tw': (747, 25, 787, 65)}, color={'cn': (195, 196, 194), 'en': (195, 196, 194), 'jp': (195, 196, 194), 'tw': (195, 196, 194)}, button={'cn': (747, 25, 787, 65), 'en': (747, 25, 787, 65), 'jp': (747, 25, 787, 65), 'tw': (747, 25, 787, 65)}, file={'cn': './assets/cn/ui/ISLAND_GOTO_ISLAND_SHOP.png', 'en': './assets/cn/ui/ISLAND_GOTO_ISLAND_SHOP.png', 'jp': './assets/cn/ui/ISLAND_GOTO_ISLAND_SHOP.png', 'tw': './assets/cn/ui/ISLAND_GOTO_ISLAND_SHOP.png'}) ISLAND_GOTO_ISLAND_TECHNOLOGY = Button(area={'cn': (1025, 26, 1068, 65), 'en': (1025, 26, 1068, 65), 'jp': (1025, 26, 1068, 65), 'tw': (1025, 26, 1068, 65)}, color={'cn': (181, 182, 179), 'en': (181, 182, 179), 'jp': (181, 182, 179), 'tw': (181, 182, 179)}, button={'cn': (1025, 26, 1068, 65), 'en': (1025, 26, 1068, 65), 'jp': (1025, 26, 1068, 65), 'tw': (1025, 26, 1068, 65)}, file={'cn': './assets/cn/ui/ISLAND_GOTO_ISLAND_TECHNOLOGY.png', 'en': './assets/cn/ui/ISLAND_GOTO_ISLAND_TECHNOLOGY.png', 'jp': './assets/cn/ui/ISLAND_GOTO_ISLAND_TECHNOLOGY.png', 'tw': './assets/cn/ui/ISLAND_GOTO_ISLAND_TECHNOLOGY.png'}) -ISLAND_MANAGE_CHECK = Button(area={'cn': (123, 19, 219, 45), 'en': (123, 19, 219, 45), 'jp': (123, 19, 219, 45), 'tw': (123, 19, 219, 45)}, color={'cn': (85, 90, 102), 'en': (85, 90, 102), 'jp': (85, 90, 102), 'tw': (85, 90, 102)}, button={'cn': (123, 19, 219, 45), 'en': (123, 19, 219, 45), 'jp': (123, 19, 219, 45), 'tw': (123, 19, 219, 45)}, file={'cn': './assets/cn/ui/ISLAND_MANAGE_CHECK.png', 'en': './assets/cn/ui/ISLAND_MANAGE_CHECK.png', 'jp': './assets/jp/ui/ISLAND_MANAGE_CHECK.png', 'tw': './assets/cn/ui/ISLAND_MANAGE_CHECK.png'}) -ISLAND_MAP_CHECK = Button(area={'cn': (122, 19, 217, 47), 'en': (122, 19, 217, 47), 'jp': (122, 19, 217, 47), 'tw': (122, 19, 217, 47)}, color={'cn': (93, 102, 112), 'en': (93, 102, 112), 'jp': (93, 102, 112), 'tw': (93, 102, 112)}, button={'cn': (122, 19, 217, 47), 'en': (122, 19, 217, 47), 'jp': (122, 19, 217, 47), 'tw': (122, 19, 217, 47)}, file={'cn': './assets/cn/ui/ISLAND_MAP_CHECK.png', 'en': './assets/cn/ui/ISLAND_MAP_CHECK.png', 'jp': './assets/jp/ui/ISLAND_MAP_CHECK.png', 'tw': './assets/cn/ui/ISLAND_MAP_CHECK.png'}) -ISLAND_ORDER_CHECK = Button(area={'cn': (125, 19, 220, 46), 'en': (125, 19, 220, 46), 'jp': (125, 19, 220, 46), 'tw': (125, 19, 220, 46)}, color={'cn': (79, 88, 100), 'en': (79, 88, 100), 'jp': (79, 88, 100), 'tw': (79, 88, 100)}, button={'cn': (125, 19, 220, 46), 'en': (125, 19, 220, 46), 'jp': (125, 19, 220, 46), 'tw': (125, 19, 220, 46)}, file={'cn': './assets/cn/ui/ISLAND_ORDER_CHECK.png', 'en': './assets/cn/ui/ISLAND_ORDER_CHECK.png', 'jp': './assets/jp/ui/ISLAND_ORDER_CHECK.png', 'tw': './assets/cn/ui/ISLAND_ORDER_CHECK.png'}) +ISLAND_MANAGE_CHECK = Button(area={'cn': (125, 21, 217, 44), 'en': (125, 21, 217, 44), 'jp': (123, 19, 219, 45), 'tw': (125, 21, 217, 44)}, color={'cn': (106, 111, 121), 'en': (106, 111, 121), 'jp': (85, 90, 102), 'tw': (106, 111, 121)}, button={'cn': (125, 21, 217, 44), 'en': (125, 21, 217, 44), 'jp': (123, 19, 219, 45), 'tw': (125, 21, 217, 44)}, file={'cn': './assets/cn/ui/ISLAND_MANAGE_CHECK.png', 'en': './assets/cn/ui/ISLAND_MANAGE_CHECK.png', 'jp': './assets/jp/ui/ISLAND_MANAGE_CHECK.png', 'tw': './assets/cn/ui/ISLAND_MANAGE_CHECK.png'}) +ISLAND_MAP_CHECK = Button(area={'cn': (124, 21, 216, 45), 'en': (124, 21, 216, 45), 'jp': (122, 19, 217, 47), 'tw': (124, 21, 216, 45)}, color={'cn': (90, 99, 109), 'en': (90, 99, 109), 'jp': (93, 102, 112), 'tw': (90, 99, 109)}, button={'cn': (124, 21, 216, 45), 'en': (124, 21, 216, 45), 'jp': (122, 19, 217, 47), 'tw': (124, 21, 216, 45)}, file={'cn': './assets/cn/ui/ISLAND_MAP_CHECK.png', 'en': './assets/cn/ui/ISLAND_MAP_CHECK.png', 'jp': './assets/jp/ui/ISLAND_MAP_CHECK.png', 'tw': './assets/cn/ui/ISLAND_MAP_CHECK.png'}) +ISLAND_ORDER_CHECK = Button(area={'cn': (126, 20, 220, 46), 'en': (126, 20, 220, 46), 'jp': (125, 19, 220, 46), 'tw': (126, 20, 220, 46)}, color={'cn': (69, 78, 90), 'en': (69, 78, 90), 'jp': (79, 88, 100), 'tw': (69, 78, 90)}, button={'cn': (126, 20, 220, 46), 'en': (126, 20, 220, 46), 'jp': (125, 19, 220, 46), 'tw': (126, 20, 220, 46)}, file={'cn': './assets/cn/ui/ISLAND_ORDER_CHECK.png', 'en': './assets/cn/ui/ISLAND_ORDER_CHECK.png', 'jp': './assets/jp/ui/ISLAND_ORDER_CHECK.png', 'tw': './assets/cn/ui/ISLAND_ORDER_CHECK.png'}) ISLAND_PHONE_CHECK = Button(area={'cn': (1033, 638, 1080, 684), 'en': (1033, 638, 1080, 684), 'jp': (1033, 638, 1080, 684), 'tw': (1033, 638, 1080, 684)}, color={'cn': (113, 126, 143), 'en': (113, 126, 143), 'jp': (113, 126, 143), 'tw': (113, 126, 143)}, button={'cn': (1033, 638, 1080, 684), 'en': (1033, 638, 1080, 684), 'jp': (1033, 638, 1080, 684), 'tw': (1033, 638, 1080, 684)}, 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': (1033, 638, 1080, 684), 'en': (1033, 638, 1080, 684), 'jp': (1033, 638, 1080, 684), 'tw': (1033, 638, 1080, 684)}, color={'cn': (113, 126, 143), 'en': (113, 126, 143), 'jp': (113, 126, 143), 'tw': (113, 126, 143)}, button={'cn': (0, 0, 829, 720), 'en': (0, 0, 829, 720), 'jp': (0, 0, 829, 720), 'tw': (0, 0, 829, 720)}, 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_ISLAND_COMMISSION = Button(area={'cn': (1033, 638, 1080, 684), 'en': (1033, 638, 1080, 684), 'jp': (1033, 638, 1080, 684), 'tw': (1033, 638, 1080, 684)}, color={'cn': (113, 126, 143), 'en': (113, 126, 143), 'jp': (113, 126, 143), 'tw': (113, 126, 143)}, button={'cn': (897, 329, 1032, 458), 'en': (897, 329, 1032, 458), 'jp': (897, 329, 1032, 458), 'tw': (897, 329, 1032, 458)}, file={'cn': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND_COMMISSION.png', 'en': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND_COMMISSION.png', 'jp': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND_COMMISSION.png', 'tw': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND_COMMISSION.png'}) @@ -66,11 +66,11 @@ ISLAND_PHONE_GOTO_ISLAND_ORDER = Button(area={'cn': (1033, 638, 1080, 684), 'en': (1033, 638, 1080, 684), 'jp': (1033, 638, 1080, 684), 'tw': (1033, 638, 1080, 684)}, color={'cn': (113, 126, 143), 'en': (113, 126, 143), 'jp': (113, 126, 143), 'tw': (113, 126, 143)}, button={'cn': (900, 200, 1212, 300), 'en': (900, 200, 1212, 300), 'jp': (900, 200, 1212, 300), 'tw': (900, 200, 1212, 300)}, file={'cn': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND_ORDER.png', 'en': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND_ORDER.png', 'jp': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND_ORDER.png', 'tw': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND_ORDER.png'}) ISLAND_PHONE_GOTO_ISLAND_STORAGE = Button(area={'cn': (899, 484, 955, 539), 'en': (899, 484, 955, 539), 'jp': (899, 484, 955, 539), 'tw': (899, 484, 955, 539)}, color={'cn': (138, 168, 215), 'en': (138, 168, 215), 'jp': (138, 168, 215), 'tw': (138, 168, 215)}, button={'cn': (899, 484, 955, 539), 'en': (899, 484, 955, 539), 'jp': (899, 484, 955, 539), 'tw': (899, 484, 955, 539)}, file={'cn': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND_STORAGE.png', 'en': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND_STORAGE.png', 'jp': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND_STORAGE.png', 'tw': './assets/cn/ui/ISLAND_PHONE_GOTO_ISLAND_STORAGE.png'}) ISLAND_PHONE_GOTO_MAIN = Button(area={'cn': (1033, 638, 1080, 684), 'en': (1033, 638, 1080, 684), 'jp': (1033, 638, 1080, 684), 'tw': (1033, 638, 1080, 684)}, color={'cn': (113, 126, 143), 'en': (113, 126, 143), 'jp': (113, 126, 143), 'tw': (113, 126, 143)}, button={'cn': (1033, 638, 1080, 684), 'en': (1033, 638, 1080, 684), 'jp': (1033, 638, 1080, 684), 'tw': (1033, 638, 1080, 684)}, 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'}) -ISLAND_SEASON_CHECK = Button(area={'cn': (125, 21, 218, 46), 'en': (125, 21, 218, 46), 'jp': (125, 21, 218, 46), 'tw': (125, 21, 218, 46)}, color={'cn': (60, 68, 81), 'en': (60, 68, 81), 'jp': (60, 68, 81), 'tw': (60, 68, 81)}, button={'cn': (125, 21, 218, 46), 'en': (125, 21, 218, 46), 'jp': (125, 21, 218, 46), 'tw': (125, 21, 218, 46)}, file={'cn': './assets/cn/ui/ISLAND_SEASON_CHECK.png', 'en': './assets/cn/ui/ISLAND_SEASON_CHECK.png', 'jp': './assets/jp/ui/ISLAND_SEASON_CHECK.png', 'tw': './assets/cn/ui/ISLAND_SEASON_CHECK.png'}) +ISLAND_SEASON_CHECK = Button(area={'cn': (124, 20, 241, 46), 'en': (124, 20, 241, 46), 'jp': (125, 21, 218, 46), 'tw': (124, 20, 241, 46)}, color={'cn': (109, 115, 125), 'en': (109, 115, 125), 'jp': (60, 68, 81), 'tw': (109, 115, 125)}, button={'cn': (124, 20, 241, 46), 'en': (124, 20, 241, 46), 'jp': (125, 21, 218, 46), 'tw': (124, 20, 241, 46)}, file={'cn': './assets/cn/ui/ISLAND_SEASON_CHECK.png', 'en': './assets/cn/ui/ISLAND_SEASON_CHECK.png', 'jp': './assets/jp/ui/ISLAND_SEASON_CHECK.png', 'tw': './assets/cn/ui/ISLAND_SEASON_CHECK.png'}) ISLAND_SHOP_CHECK = Button(area={'cn': (994, 25, 1016, 46), 'en': (994, 25, 1016, 46), 'jp': (994, 25, 1016, 46), 'tw': (994, 25, 1016, 46)}, color={'cn': (220, 188, 75), 'en': (220, 188, 75), 'jp': (220, 188, 75), 'tw': (220, 188, 75)}, button={'cn': (994, 25, 1016, 46), 'en': (994, 25, 1016, 46), 'jp': (994, 25, 1016, 46), 'tw': (994, 25, 1016, 46)}, file={'cn': './assets/cn/ui/ISLAND_SHOP_CHECK.png', 'en': './assets/cn/ui/ISLAND_SHOP_CHECK.png', 'jp': './assets/cn/ui/ISLAND_SHOP_CHECK.png', 'tw': './assets/cn/ui/ISLAND_SHOP_CHECK.png'}) -ISLAND_STORAGE_CHECK = Button(area={'cn': (159, 99, 195, 117), 'en': (159, 99, 195, 117), 'jp': (159, 99, 195, 117), 'tw': (159, 99, 195, 117)}, color={'cn': (104, 105, 108), 'en': (104, 105, 108), 'jp': (104, 105, 108), 'tw': (104, 105, 108)}, button={'cn': (159, 99, 195, 117), 'en': (159, 99, 195, 117), 'jp': (159, 99, 195, 117), 'tw': (159, 99, 195, 117)}, file={'cn': './assets/cn/ui/ISLAND_STORAGE_CHECK.png', 'en': './assets/cn/ui/ISLAND_STORAGE_CHECK.png', 'jp': './assets/jp/ui/ISLAND_STORAGE_CHECK.png', 'tw': './assets/cn/ui/ISLAND_STORAGE_CHECK.png'}) +ISLAND_STORAGE_CHECK = Button(area={'cn': (161, 100, 195, 117), 'en': (161, 100, 195, 117), 'jp': (159, 99, 195, 117), 'tw': (161, 100, 195, 117)}, color={'cn': (106, 108, 110), 'en': (106, 108, 110), 'jp': (104, 105, 108), 'tw': (106, 108, 110)}, button={'cn': (161, 100, 195, 117), 'en': (161, 100, 195, 117), 'jp': (159, 99, 195, 117), 'tw': (161, 100, 195, 117)}, file={'cn': './assets/cn/ui/ISLAND_STORAGE_CHECK.png', 'en': './assets/cn/ui/ISLAND_STORAGE_CHECK.png', 'jp': './assets/jp/ui/ISLAND_STORAGE_CHECK.png', 'tw': './assets/cn/ui/ISLAND_STORAGE_CHECK.png'}) ISLAND_STORAGE_EXIT = Button(area={'cn': (1124, 86, 1163, 123), 'en': (1124, 86, 1163, 123), 'jp': (1124, 86, 1163, 123), 'tw': (1124, 86, 1163, 123)}, color={'cn': (228, 228, 228), 'en': (228, 228, 228), 'jp': (228, 228, 228), 'tw': (228, 228, 228)}, button={'cn': (1124, 86, 1163, 123), 'en': (1124, 86, 1163, 123), 'jp': (1124, 86, 1163, 123), 'tw': (1124, 86, 1163, 123)}, file={'cn': './assets/cn/ui/ISLAND_STORAGE_EXIT.png', 'en': './assets/cn/ui/ISLAND_STORAGE_EXIT.png', 'jp': './assets/cn/ui/ISLAND_STORAGE_EXIT.png', 'tw': './assets/cn/ui/ISLAND_STORAGE_EXIT.png'}) -ISLAND_TECHNOLOGY_CHECK = Button(area={'cn': (123, 19, 218, 46), 'en': (123, 19, 218, 46), 'jp': (123, 19, 218, 46), 'tw': (123, 19, 218, 46)}, color={'cn': (86, 90, 102), 'en': (86, 90, 102), 'jp': (86, 90, 102), 'tw': (86, 90, 102)}, button={'cn': (123, 19, 218, 46), 'en': (123, 19, 218, 46), 'jp': (123, 19, 218, 46), 'tw': (123, 19, 218, 46)}, file={'cn': './assets/cn/ui/ISLAND_TECHNOLOGY_CHECK.png', 'en': './assets/cn/ui/ISLAND_TECHNOLOGY_CHECK.png', 'jp': './assets/jp/ui/ISLAND_TECHNOLOGY_CHECK.png', 'tw': './assets/cn/ui/ISLAND_TECHNOLOGY_CHECK.png'}) +ISLAND_TECHNOLOGY_CHECK = Button(area={'cn': (124, 20, 218, 45), 'en': (124, 20, 218, 45), 'jp': (123, 19, 218, 46), 'tw': (124, 20, 218, 45)}, color={'cn': (79, 84, 96), 'en': (79, 84, 96), 'jp': (86, 90, 102), 'tw': (79, 84, 96)}, button={'cn': (124, 20, 218, 45), 'en': (124, 20, 218, 45), 'jp': (123, 19, 218, 46), 'tw': (124, 20, 218, 45)}, file={'cn': './assets/cn/ui/ISLAND_TECHNOLOGY_CHECK.png', 'en': './assets/cn/ui/ISLAND_TECHNOLOGY_CHECK.png', 'jp': './assets/jp/ui/ISLAND_TECHNOLOGY_CHECK.png', 'tw': './assets/cn/ui/ISLAND_TECHNOLOGY_CHECK.png'}) MAIN_GOTO_BUILD = Button(area={'cn': (958, 665, 1113, 714), 'en': (962, 688, 1109, 711), 'jp': (1035, 674, 1088, 702), 'tw': (963, 671, 1091, 709)}, color={'cn': (129, 83, 76), 'en': (145, 88, 79), 'jp': (187, 131, 125), 'tw': (145, 93, 85)}, button={'cn': (958, 665, 1113, 714), 'en': (962, 688, 1109, 711), 'jp': (1035, 674, 1088, 702), 'tw': (963, 671, 1091, 709)}, file={'cn': './assets/cn/ui/MAIN_GOTO_BUILD.png', 'en': './assets/en/ui/MAIN_GOTO_BUILD.png', 'jp': './assets/jp/ui/MAIN_GOTO_BUILD.png', 'tw': './assets/tw/ui/MAIN_GOTO_BUILD.png'}) MAIN_GOTO_CAMPAIGN = Button(area={'cn': (1029, 304, 1102, 342), 'en': (1027, 307, 1118, 333), 'jp': (1019, 305, 1096, 343), 'tw': (1026, 303, 1104, 344)}, color={'cn': (240, 213, 157), 'en': (243, 219, 165), 'jp': (239, 210, 155), 'tw': (240, 213, 162)}, button={'cn': (1021, 292, 1160, 432), 'en': (1018, 293, 1156, 431), 'jp': (1006, 288, 1155, 436), 'tw': (1014, 288, 1159, 433)}, file={'cn': './assets/cn/ui/MAIN_GOTO_CAMPAIGN.png', 'en': './assets/en/ui/MAIN_GOTO_CAMPAIGN.png', 'jp': './assets/jp/ui/MAIN_GOTO_CAMPAIGN.png', 'tw': './assets/tw/ui/MAIN_GOTO_CAMPAIGN.png'}) MAIN_GOTO_DOCK = Button(area={'cn': (172, 668, 326, 715), 'en': (172, 668, 326, 715), 'jp': (172, 668, 326, 715), 'tw': (172, 668, 326, 715)}, color={'cn': (72, 90, 122), 'en': (72, 90, 122), 'jp': (72, 90, 122), 'tw': (72, 90, 122)}, button={'cn': (172, 668, 326, 715), 'en': (172, 668, 326, 715), 'jp': (172, 668, 326, 715), 'tw': (172, 668, 326, 715)}, file={'cn': './assets/cn/ui/MAIN_GOTO_DOCK.png', 'en': './assets/en/ui/MAIN_GOTO_DOCK.png', 'jp': './assets/jp/ui/MAIN_GOTO_DOCK.png', 'tw': './assets/tw/ui/MAIN_GOTO_DOCK.png'})