Compare commits
27 Commits
dev
...
62c147fdab
| Author | SHA1 | Date | |
|---|---|---|---|
|
62c147fdab
|
|||
|
5d4c5f939b
|
|||
|
e6649762c8
|
|||
|
8cb4803f80
|
|||
|
51c7a5fed2
|
|||
|
e7ecf0e94f
|
|||
|
2a1394d733
|
|||
|
164dee90d9
|
|||
|
f0da132f4e
|
|||
|
191c3b31dc
|
|||
|
a5d20a95be
|
|||
|
7f0b2ff73f
|
|||
|
daf55b76e2
|
|||
|
5b2e22163a
|
|||
|
2ec7e45172
|
|||
|
cd27718801
|
|||
|
2b12f51110
|
|||
|
a059394b71
|
|||
|
cdccc85207
|
|||
|
9a1d8f101d
|
|||
|
bb5224d721
|
|||
|
573d742c03
|
|||
|
f9076ae537
|
|||
|
9d9e3c0f91
|
|||
|
c6063a4f3d
|
|||
|
b9cf5aa910
|
|||
|
d082df0f03
|
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 9.9 KiB |
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 9.7 KiB |
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 6.2 KiB |
@@ -218,7 +218,7 @@
|
|||||||
},
|
},
|
||||||
"SecondCafe": {
|
"SecondCafe": {
|
||||||
"name": "Second Floor",
|
"name": "Second Floor",
|
||||||
"help": "JP server only\nEnable auto switch to second floor and perform interaction"
|
"help": "Enable auto switch to second floor and perform interaction"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Invitation": {
|
"Invitation": {
|
||||||
|
|||||||
@@ -218,7 +218,7 @@
|
|||||||
},
|
},
|
||||||
"SecondCafe": {
|
"SecondCafe": {
|
||||||
"name": "第二咖啡厅",
|
"name": "第二咖啡厅",
|
||||||
"help": "仅支持日服\n自动切换第二咖啡厅进行互动点击"
|
"help": "自动切换第二咖啡厅进行互动点击"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Invitation": {
|
"Invitation": {
|
||||||
|
|||||||
@@ -51,17 +51,17 @@ CAFE_CHECK = ButtonWrapper(
|
|||||||
name='CAFE_CHECK',
|
name='CAFE_CHECK',
|
||||||
jp=Button(
|
jp=Button(
|
||||||
file='./assets/jp/base/page/CAFE_CHECK.png',
|
file='./assets/jp/base/page/CAFE_CHECK.png',
|
||||||
area=(264, 11, 337, 35),
|
area=(108, 11, 182, 36),
|
||||||
search=(244, 0, 357, 55),
|
search=(88, 0, 202, 56),
|
||||||
color=(188, 197, 205),
|
color=(191, 200, 208),
|
||||||
button=(264, 11, 337, 35),
|
button=(108, 11, 182, 36),
|
||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/base/page/CAFE_CHECK.png',
|
file='./assets/en/base/page/CAFE_CHECK.png',
|
||||||
area=(196, 8, 259, 37),
|
area=(106, 12, 167, 36),
|
||||||
search=(176, 0, 279, 57),
|
search=(86, 0, 187, 56),
|
||||||
color=(188, 197, 206),
|
color=(173, 184, 194),
|
||||||
button=(196, 8, 259, 37),
|
button=(106, 12, 167, 36),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
CIRCLE_CHECK = ButtonWrapper(
|
CIRCLE_CHECK = ButtonWrapper(
|
||||||
@@ -183,10 +183,10 @@ MAIN_GO_TO_CIRCLE = ButtonWrapper(
|
|||||||
name='MAIN_GO_TO_CIRCLE',
|
name='MAIN_GO_TO_CIRCLE',
|
||||||
share=Button(
|
share=Button(
|
||||||
file='./assets/share/base/page/MAIN_GO_TO_CIRCLE.png',
|
file='./assets/share/base/page/MAIN_GO_TO_CIRCLE.png',
|
||||||
area=(540, 631, 583, 660),
|
area=(542, 630, 581, 665),
|
||||||
search=(520, 611, 603, 680),
|
search=(522, 610, 601, 685),
|
||||||
color=(131, 204, 234),
|
color=(163, 225, 242),
|
||||||
button=(540, 631, 583, 660),
|
button=(542, 630, 581, 665),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
MAIN_GO_TO_CRAFTING = ButtonWrapper(
|
MAIN_GO_TO_CRAFTING = ButtonWrapper(
|
||||||
@@ -446,101 +446,101 @@ WORK_GO_TO_BOUNTY = ButtonWrapper(
|
|||||||
name='WORK_GO_TO_BOUNTY',
|
name='WORK_GO_TO_BOUNTY',
|
||||||
jp=Button(
|
jp=Button(
|
||||||
file='./assets/jp/base/page/WORK_GO_TO_BOUNTY.png',
|
file='./assets/jp/base/page/WORK_GO_TO_BOUNTY.png',
|
||||||
area=(669, 412, 765, 436),
|
area=(667, 383, 764, 409),
|
||||||
search=(649, 392, 785, 456),
|
search=(647, 363, 784, 429),
|
||||||
color=(165, 181, 208),
|
color=(171, 187, 212),
|
||||||
button=(669, 412, 765, 436),
|
button=(667, 383, 764, 409),
|
||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/base/page/WORK_GO_TO_BOUNTY.png',
|
file='./assets/en/base/page/WORK_GO_TO_BOUNTY.png',
|
||||||
area=(671, 409, 760, 440),
|
area=(668, 385, 756, 412),
|
||||||
search=(651, 389, 780, 460),
|
search=(648, 365, 776, 432),
|
||||||
color=(183, 202, 227),
|
color=(180, 198, 223),
|
||||||
button=(671, 409, 760, 440),
|
button=(668, 385, 756, 412),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
WORK_GO_TO_COMMISSIONS = ButtonWrapper(
|
WORK_GO_TO_COMMISSIONS = ButtonWrapper(
|
||||||
name='WORK_GO_TO_COMMISSIONS',
|
name='WORK_GO_TO_COMMISSIONS',
|
||||||
jp=Button(
|
jp=Button(
|
||||||
file='./assets/jp/base/page/WORK_GO_TO_COMMISSIONS.png',
|
file='./assets/jp/base/page/WORK_GO_TO_COMMISSIONS.png',
|
||||||
area=(655, 494, 751, 518),
|
area=(653, 475, 749, 501),
|
||||||
search=(635, 474, 771, 538),
|
search=(633, 455, 769, 521),
|
||||||
color=(165, 179, 204),
|
color=(171, 185, 208),
|
||||||
button=(655, 494, 751, 518),
|
button=(653, 475, 749, 501),
|
||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/base/page/WORK_GO_TO_COMMISSIONS.png',
|
file='./assets/en/base/page/WORK_GO_TO_COMMISSIONS.png',
|
||||||
area=(656, 494, 803, 517),
|
area=(653, 477, 787, 496),
|
||||||
search=(636, 474, 823, 537),
|
search=(633, 457, 807, 516),
|
||||||
color=(192, 204, 221),
|
color=(187, 199, 218),
|
||||||
button=(656, 494, 803, 517),
|
button=(653, 477, 787, 496),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
WORK_GO_TO_MISSION = ButtonWrapper(
|
WORK_GO_TO_MISSION = ButtonWrapper(
|
||||||
name='WORK_GO_TO_MISSION',
|
name='WORK_GO_TO_MISSION',
|
||||||
jp=Button(
|
jp=Button(
|
||||||
file='./assets/jp/base/page/WORK_GO_TO_MISSION.png',
|
file='./assets/jp/base/page/WORK_GO_TO_MISSION.png',
|
||||||
area=(720, 160, 803, 199),
|
area=(722, 155, 807, 199),
|
||||||
search=(700, 140, 823, 219),
|
search=(702, 135, 827, 219),
|
||||||
color=(165, 178, 204),
|
color=(173, 188, 211),
|
||||||
button=(720, 160, 803, 199),
|
button=(722, 155, 807, 199),
|
||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/base/page/WORK_GO_TO_MISSION.png',
|
file='./assets/en/base/page/WORK_GO_TO_MISSION.png',
|
||||||
area=(720, 160, 871, 206),
|
area=(721, 158, 873, 197),
|
||||||
search=(700, 140, 891, 226),
|
search=(701, 138, 893, 217),
|
||||||
color=(192, 204, 221),
|
color=(180, 195, 215),
|
||||||
button=(720, 160, 871, 206),
|
button=(721, 158, 873, 197),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
WORK_GO_TO_SCHOOL_EXCHANGE = ButtonWrapper(
|
WORK_GO_TO_SCHOOL_EXCHANGE = ButtonWrapper(
|
||||||
name='WORK_GO_TO_SCHOOL_EXCHANGE',
|
name='WORK_GO_TO_SCHOOL_EXCHANGE',
|
||||||
jp=Button(
|
jp=Button(
|
||||||
file='./assets/jp/base/page/WORK_GO_TO_SCHOOL_EXCHANGE.png',
|
file='./assets/jp/base/page/WORK_GO_TO_SCHOOL_EXCHANGE.png',
|
||||||
area=(641, 575, 758, 599),
|
area=(636, 566, 753, 592),
|
||||||
search=(621, 555, 778, 619),
|
search=(616, 546, 773, 612),
|
||||||
color=(165, 179, 204),
|
color=(176, 187, 207),
|
||||||
button=(641, 575, 758, 599),
|
button=(636, 566, 753, 592),
|
||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/base/page/WORK_GO_TO_SCHOOL_EXCHANGE.png',
|
file='./assets/en/base/page/WORK_GO_TO_SCHOOL_EXCHANGE.png',
|
||||||
area=(643, 572, 778, 602),
|
area=(635, 569, 769, 597),
|
||||||
search=(623, 552, 798, 622),
|
search=(615, 549, 789, 617),
|
||||||
color=(190, 203, 221),
|
color=(198, 204, 216),
|
||||||
button=(643, 572, 778, 602),
|
button=(635, 569, 769, 597),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
WORK_GO_TO_STORY = ButtonWrapper(
|
WORK_GO_TO_STORY = ButtonWrapper(
|
||||||
name='WORK_GO_TO_STORY',
|
name='WORK_GO_TO_STORY',
|
||||||
jp=Button(
|
jp=Button(
|
||||||
file='./assets/jp/base/page/WORK_GO_TO_STORY.png',
|
file='./assets/jp/base/page/WORK_GO_TO_STORY.png',
|
||||||
area=(995, 163, 1032, 197),
|
area=(998, 155, 1078, 199),
|
||||||
search=(975, 143, 1052, 217),
|
search=(978, 135, 1098, 219),
|
||||||
color=(191, 201, 219),
|
color=(215, 221, 232),
|
||||||
button=(995, 163, 1032, 197),
|
button=(998, 155, 1078, 199),
|
||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/base/page/WORK_GO_TO_STORY.png',
|
file='./assets/en/base/page/WORK_GO_TO_STORY.png',
|
||||||
area=(994, 159, 1109, 211),
|
area=(996, 159, 1112, 205),
|
||||||
search=(974, 139, 1129, 231),
|
search=(976, 139, 1132, 225),
|
||||||
color=(208, 215, 228),
|
color=(200, 209, 225),
|
||||||
button=(994, 159, 1109, 211),
|
button=(996, 159, 1112, 205),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
WORK_GO_TO_TACTICAL_CHALLENGE = ButtonWrapper(
|
WORK_GO_TO_TACTICAL_CHALLENGE = ButtonWrapper(
|
||||||
name='WORK_GO_TO_TACTICAL_CHALLENGE',
|
name='WORK_GO_TO_TACTICAL_CHALLENGE',
|
||||||
jp=Button(
|
jp=Button(
|
||||||
file='./assets/jp/base/page/WORK_GO_TO_TACTICAL_CHALLENGE.png',
|
file='./assets/jp/base/page/WORK_GO_TO_TACTICAL_CHALLENGE.png',
|
||||||
area=(1012, 535, 1151, 562),
|
area=(801, 565, 920, 593),
|
||||||
search=(992, 515, 1171, 582),
|
search=(781, 545, 940, 613),
|
||||||
color=(159, 174, 200),
|
color=(172, 186, 209),
|
||||||
button=(1012, 535, 1151, 562),
|
button=(801, 565, 920, 593),
|
||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/base/page/WORK_GO_TO_TACTICAL_CHALLENGE.png',
|
file='./assets/en/base/page/WORK_GO_TO_TACTICAL_CHALLENGE.png',
|
||||||
area=(1012, 532, 1152, 591),
|
area=(803, 566, 922, 623),
|
||||||
search=(992, 512, 1172, 611),
|
search=(783, 546, 942, 643),
|
||||||
color=(199, 211, 227),
|
color=(186, 201, 220),
|
||||||
button=(1012, 532, 1152, 591),
|
button=(803, 566, 922, 623),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -27,27 +27,27 @@ CAFE_FIRST = ButtonWrapper(
|
|||||||
name='CAFE_FIRST',
|
name='CAFE_FIRST',
|
||||||
jp=Button(
|
jp=Button(
|
||||||
file='./assets/jp/cafe/CAFE_FIRST.png',
|
file='./assets/jp/cafe/CAFE_FIRST.png',
|
||||||
area=(82, 152, 136, 175),
|
area=(96, 92, 111, 110),
|
||||||
search=(62, 132, 156, 195),
|
search=(76, 72, 131, 130),
|
||||||
color=(111, 127, 147),
|
color=(185, 192, 200),
|
||||||
button=(82, 152, 136, 175),
|
button=(96, 92, 111, 110),
|
||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/cafe/CAFE_FIRST.png',
|
file='./assets/en/cafe/CAFE_FIRST.png',
|
||||||
area=(82, 152, 136, 175),
|
area=(100, 156, 148, 175),
|
||||||
search=(62, 132, 156, 195),
|
search=(80, 136, 168, 195),
|
||||||
color=(111, 127, 147),
|
color=(107, 123, 144),
|
||||||
button=(82, 152, 136, 175),
|
button=(100, 156, 148, 175),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
CAFE_INVITE = ButtonWrapper(
|
CAFE_INVITE = ButtonWrapper(
|
||||||
name='CAFE_INVITE',
|
name='CAFE_INVITE',
|
||||||
jp=Button(
|
jp=Button(
|
||||||
file='./assets/jp/cafe/CAFE_INVITE.png',
|
file='./assets/jp/cafe/CAFE_INVITE.png',
|
||||||
area=(816, 635, 845, 655),
|
area=(870, 637, 903, 663),
|
||||||
search=(796, 615, 865, 675),
|
search=(850, 617, 923, 683),
|
||||||
color=(173, 182, 192),
|
color=(253, 217, 235),
|
||||||
button=(816, 635, 845, 655),
|
button=(870, 637, 903, 663),
|
||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/cafe/CAFE_INVITE.png',
|
file='./assets/en/cafe/CAFE_INVITE.png',
|
||||||
@@ -61,10 +61,10 @@ CAFE_INVITED = ButtonWrapper(
|
|||||||
name='CAFE_INVITED',
|
name='CAFE_INVITED',
|
||||||
jp=Button(
|
jp=Button(
|
||||||
file='./assets/jp/cafe/CAFE_INVITED.png',
|
file='./assets/jp/cafe/CAFE_INVITED.png',
|
||||||
area=(815, 633, 847, 657),
|
area=(870, 637, 903, 663),
|
||||||
search=(795, 613, 867, 677),
|
search=(850, 617, 923, 683),
|
||||||
color=(144, 144, 146),
|
color=(111, 109, 109),
|
||||||
button=(815, 633, 847, 657),
|
button=(870, 637, 903, 663),
|
||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/cafe/CAFE_INVITED.png',
|
file='./assets/en/cafe/CAFE_INVITED.png',
|
||||||
@@ -78,17 +78,17 @@ CAFE_SECOND = ButtonWrapper(
|
|||||||
name='CAFE_SECOND',
|
name='CAFE_SECOND',
|
||||||
jp=Button(
|
jp=Button(
|
||||||
file='./assets/jp/cafe/CAFE_SECOND.png',
|
file='./assets/jp/cafe/CAFE_SECOND.png',
|
||||||
area=(219, 152, 279, 175),
|
area=(99, 92, 108, 110),
|
||||||
search=(199, 132, 299, 195),
|
search=(79, 72, 128, 130),
|
||||||
color=(110, 126, 146),
|
color=(193, 200, 209),
|
||||||
button=(219, 152, 279, 175),
|
button=(99, 92, 108, 110),
|
||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/cafe/CAFE_SECOND.png',
|
file='./assets/en/cafe/CAFE_SECOND.png',
|
||||||
area=(219, 152, 279, 175),
|
area=(242, 157, 291, 174),
|
||||||
search=(199, 132, 299, 195),
|
search=(222, 137, 311, 194),
|
||||||
color=(110, 126, 146),
|
color=(119, 134, 153),
|
||||||
button=(219, 152, 279, 175),
|
button=(242, 157, 291, 174),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
CHANGE_CAFE_NOT_SELECTED = ButtonWrapper(
|
CHANGE_CAFE_NOT_SELECTED = ButtonWrapper(
|
||||||
@@ -102,10 +102,10 @@ CHANGE_CAFE_NOT_SELECTED = ButtonWrapper(
|
|||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/cafe/CHANGE_CAFE_NOT_SELECTED.png',
|
file='./assets/en/cafe/CHANGE_CAFE_NOT_SELECTED.png',
|
||||||
area=(84, 89, 178, 109),
|
area=(99, 93, 197, 110),
|
||||||
search=(64, 69, 198, 129),
|
search=(79, 73, 217, 130),
|
||||||
color=(185, 193, 203),
|
color=(179, 187, 196),
|
||||||
button=(84, 89, 178, 109),
|
button=(99, 93, 197, 110),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
CHANGE_CAFE_SELECTED = ButtonWrapper(
|
CHANGE_CAFE_SELECTED = ButtonWrapper(
|
||||||
@@ -119,10 +119,10 @@ CHANGE_CAFE_SELECTED = ButtonWrapper(
|
|||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/cafe/CHANGE_CAFE_SELECTED.png',
|
file='./assets/en/cafe/CHANGE_CAFE_SELECTED.png',
|
||||||
area=(40, 87, 191, 112),
|
area=(57, 92, 199, 112),
|
||||||
search=(20, 67, 211, 132),
|
search=(37, 72, 219, 132),
|
||||||
color=(82, 105, 130),
|
color=(92, 115, 140),
|
||||||
button=(40, 87, 191, 112),
|
button=(57, 92, 199, 112),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
CHECK_MOMOTALK = ButtonWrapper(
|
CHECK_MOMOTALK = ButtonWrapper(
|
||||||
@@ -146,10 +146,10 @@ CHECK_REWARD = ButtonWrapper(
|
|||||||
name='CHECK_REWARD',
|
name='CHECK_REWARD',
|
||||||
jp=Button(
|
jp=Button(
|
||||||
file='./assets/jp/cafe/CHECK_REWARD.png',
|
file='./assets/jp/cafe/CHECK_REWARD.png',
|
||||||
area=(1095, 621, 1146, 637),
|
area=(1120, 635, 1166, 651),
|
||||||
search=(1075, 601, 1166, 657),
|
search=(1100, 615, 1186, 671),
|
||||||
color=(82, 105, 129),
|
color=(79, 102, 127),
|
||||||
button=(1086, 607, 1225, 685),
|
button=(1109, 627, 1239, 691),
|
||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/cafe/CHECK_REWARD.png',
|
file='./assets/en/cafe/CHECK_REWARD.png',
|
||||||
@@ -180,10 +180,10 @@ GET_REWARD = ButtonWrapper(
|
|||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/cafe/GET_REWARD.png',
|
file='./assets/en/cafe/GET_REWARD.png',
|
||||||
area=(581, 503, 692, 536),
|
area=(593, 506, 687, 548),
|
||||||
search=(561, 483, 712, 556),
|
search=(573, 486, 707, 568),
|
||||||
color=(208, 190, 63),
|
color=(211, 193, 64),
|
||||||
button=(539, 491, 741, 555),
|
button=(543, 492, 736, 564),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
GET_REWARD_CLOSE = ButtonWrapper(
|
GET_REWARD_CLOSE = ButtonWrapper(
|
||||||
@@ -197,10 +197,10 @@ GET_REWARD_CLOSE = ButtonWrapper(
|
|||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/cafe/GET_REWARD_CLOSE.png',
|
file='./assets/en/cafe/GET_REWARD_CLOSE.png',
|
||||||
area=(883, 134, 926, 178),
|
area=(968, 132, 997, 162),
|
||||||
search=(863, 114, 946, 198),
|
search=(948, 112, 1017, 182),
|
||||||
color=(215, 220, 224),
|
color=(187, 193, 201),
|
||||||
button=(883, 134, 926, 178),
|
button=(968, 132, 997, 162),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
GOT_REWARD = ButtonWrapper(
|
GOT_REWARD = ButtonWrapper(
|
||||||
@@ -214,10 +214,10 @@ GOT_REWARD = ButtonWrapper(
|
|||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/cafe/GOT_REWARD.png',
|
file='./assets/en/cafe/GOT_REWARD.png',
|
||||||
area=(543, 489, 741, 558),
|
area=(544, 493, 735, 563),
|
||||||
search=(523, 469, 761, 578),
|
search=(524, 473, 755, 583),
|
||||||
color=(211, 212, 212),
|
color=(213, 213, 212),
|
||||||
button=(543, 489, 741, 558),
|
button=(544, 493, 735, 563),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
INVENTORY = ButtonWrapper(
|
INVENTORY = ButtonWrapper(
|
||||||
@@ -377,10 +377,10 @@ OCR_CAFE = ButtonWrapper(
|
|||||||
name='OCR_CAFE',
|
name='OCR_CAFE',
|
||||||
jp=Button(
|
jp=Button(
|
||||||
file='./assets/jp/cafe/OCR_CAFE.png',
|
file='./assets/jp/cafe/OCR_CAFE.png',
|
||||||
area=(1103, 642, 1202, 672),
|
area=(1127, 657, 1219, 682),
|
||||||
search=(1083, 622, 1222, 692),
|
search=(1107, 637, 1239, 702),
|
||||||
color=(87, 107, 129),
|
color=(93, 112, 134),
|
||||||
button=(1103, 642, 1202, 672),
|
button=(1127, 657, 1219, 682),
|
||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/cafe/OCR_CAFE.png',
|
file='./assets/en/cafe/OCR_CAFE.png',
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
||||||
from module.base.decorator import Config
|
|
||||||
from module.base.timer import Timer
|
from module.base.timer import Timer
|
||||||
from module.logger import logger
|
from module.logger import logger
|
||||||
from module.ui.switch import Switch
|
from module.ui.switch import Switch
|
||||||
@@ -30,16 +29,10 @@ class CafeStatus(Enum):
|
|||||||
|
|
||||||
|
|
||||||
class Cafe(CafeUI):
|
class Cafe(CafeUI):
|
||||||
@Config.when(Emulator_GameLanguage='jp')
|
@property
|
||||||
def _is_second_cafe_on(self):
|
def is_second_cafe_on(self):
|
||||||
return self.config.Cafe_SecondCafe
|
return self.config.Cafe_SecondCafe
|
||||||
|
|
||||||
@Config.when(Emulator_GameLanguage=None)
|
|
||||||
def _is_second_cafe_on(self):
|
|
||||||
return False
|
|
||||||
|
|
||||||
is_second_cafe_on = property(_is_second_cafe_on)
|
|
||||||
|
|
||||||
def _handle_cafe(self, status):
|
def _handle_cafe(self, status):
|
||||||
match status:
|
match status:
|
||||||
case CafeStatus.STUDENT_LIST:
|
case CafeStatus.STUDENT_LIST:
|
||||||
@@ -70,7 +63,7 @@ class Cafe(CafeUI):
|
|||||||
if handle_invitation(self):
|
if handle_invitation(self):
|
||||||
return CafeStatus.CLICK
|
return CafeStatus.CLICK
|
||||||
case CafeStatus.CLICK:
|
case CafeStatus.CLICK:
|
||||||
buttons = self.get_clickable_buttons(offset=(45, 10))
|
buttons = self.get_clickable_buttons()
|
||||||
self.click = len(buttons)
|
self.click = len(buttons)
|
||||||
logger.attr('Clickable', self.click)
|
logger.attr('Clickable', self.click)
|
||||||
if not buttons:
|
if not buttons:
|
||||||
@@ -116,7 +109,6 @@ class Cafe(CafeUI):
|
|||||||
status = CafeStatus.STUDENT_LIST
|
status = CafeStatus.STUDENT_LIST
|
||||||
loading_timer = Timer(2).start()
|
loading_timer = Timer(2).start()
|
||||||
action_timer = Timer(1, count=1)
|
action_timer = Timer(1, count=1)
|
||||||
is_list = False
|
|
||||||
is_reset = False
|
is_reset = False
|
||||||
is_second = False
|
is_second = False
|
||||||
is_enable = is_reward_on or is_touch_on
|
is_enable = is_reward_on or is_touch_on
|
||||||
@@ -133,11 +125,6 @@ class Cafe(CafeUI):
|
|||||||
if not loading_timer.reached():
|
if not loading_timer.reached():
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not is_list and status == CafeStatus.STUDENT_LIST and self.appear(STUDENT_LIST):
|
|
||||||
is_list = True
|
|
||||||
loading_timer = Timer(3).start()
|
|
||||||
continue
|
|
||||||
|
|
||||||
if not is_reward_on and status == CafeStatus.OCR:
|
if not is_reward_on and status == CafeStatus.OCR:
|
||||||
logger.info('Skip reward')
|
logger.info('Skip reward')
|
||||||
status = CafeStatus.CLICK
|
status = CafeStatus.CLICK
|
||||||
@@ -154,26 +141,41 @@ class Cafe(CafeUI):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
if self.is_second_cafe_on and not is_second and status == CafeStatus.FINISHED:
|
if self.is_second_cafe_on and not is_second and status == CafeStatus.FINISHED:
|
||||||
if not SWITCH_CAFE.appear(main=self):
|
# handle new jp ui
|
||||||
logger.warning('Cafe switch not found')
|
if self.config.Emulator_GameLanguage == 'jp':
|
||||||
continue
|
if not SWITCH_CAFE_SELECT.appear(main=self):
|
||||||
if SWITCH_CAFE.get(main=self) == 'off':
|
logger.info('Cafe switch not found')
|
||||||
SWITCH_CAFE.set('on', main=self)
|
continue
|
||||||
logger.info('Switching to second cafe')
|
match SWITCH_CAFE_SELECT.get(main=self):
|
||||||
if not SWITCH_CAFE_SELECT.appear(main=self):
|
case '1':
|
||||||
logger.info('Cafe switch select not found')
|
if self.click_with_interval(CAFE_FIRST):
|
||||||
continue
|
continue
|
||||||
match (SWITCH_CAFE_SELECT.get(main=self)):
|
case '2':
|
||||||
case '1':
|
logger.info('Cafe second arrived')
|
||||||
if self.click_with_interval(CAFE_SECOND):
|
status = CafeStatus.STUDENT_LIST
|
||||||
continue
|
is_second = True
|
||||||
case '2':
|
self.check = 0
|
||||||
logger.info('Cafe second arrived')
|
loading_timer.reset().start()
|
||||||
SWITCH_CAFE.set('off', main=self)
|
else:
|
||||||
status = CafeStatus.STUDENT_LIST
|
if not SWITCH_CAFE.appear(main=self):
|
||||||
is_list = False
|
logger.warning('Cafe switch not found')
|
||||||
is_second = True
|
continue
|
||||||
self.check = 0
|
if SWITCH_CAFE.get(main=self) == 'off':
|
||||||
|
SWITCH_CAFE.set('on', main=self)
|
||||||
|
logger.info('Switching to second cafe')
|
||||||
|
if not SWITCH_CAFE_SELECT.appear(main=self):
|
||||||
|
logger.info('Cafe switch select not found')
|
||||||
|
continue
|
||||||
|
match SWITCH_CAFE_SELECT.get(main=self):
|
||||||
|
case '1':
|
||||||
|
if self.click_with_interval(CAFE_SECOND):
|
||||||
|
continue
|
||||||
|
case '2':
|
||||||
|
logger.info('Cafe second arrived')
|
||||||
|
SWITCH_CAFE.set('off', main=self)
|
||||||
|
status = CafeStatus.STUDENT_LIST
|
||||||
|
is_second = True
|
||||||
|
self.check = 0
|
||||||
|
|
||||||
if action_timer.reached_and_reset():
|
if action_timer.reached_and_reset():
|
||||||
logger.attr('Status', status)
|
logger.attr('Status', status)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import numpy as np
|
|||||||
|
|
||||||
from module.base.base import ModuleBase
|
from module.base.base import ModuleBase
|
||||||
from module.base.timer import Timer
|
from module.base.timer import Timer
|
||||||
from module.base.utils import area_size, area_offset
|
from module.base.utils import area_offset, area_size
|
||||||
from module.config.utils import get_server_next_update
|
from module.config.utils import get_server_next_update
|
||||||
from module.logger import logger
|
from module.logger import logger
|
||||||
from module.ocr.ocr import Ocr
|
from module.ocr.ocr import Ocr
|
||||||
@@ -223,7 +223,7 @@ def handle_invitation_status(status: InvitationStatus, main: ModuleBase) -> Invi
|
|||||||
if not invitation.is_invitation:
|
if not invitation.is_invitation:
|
||||||
logger.info('Invitation waiting until next refresh')
|
logger.info('Invitation waiting until next refresh')
|
||||||
return InvitationStatus.FINISHED
|
return InvitationStatus.FINISHED
|
||||||
if main.appear(CAFE_INVITED):
|
if main.match_color(CAFE_INVITED):
|
||||||
logger.info('Invitation in cooldown')
|
logger.info('Invitation in cooldown')
|
||||||
return InvitationStatus.FINISHED
|
return InvitationStatus.FINISHED
|
||||||
if invitation.choice != 'list_top' and invitation.target_name is None:
|
if invitation.choice != 'list_top' and invitation.target_name is None:
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ class CafeUI(UI):
|
|||||||
# generate result
|
# generate result
|
||||||
return cv2.bitwise_and(image, image, mask=mask)
|
return cv2.bitwise_and(image, image, mask=mask)
|
||||||
|
|
||||||
def get_clickable_buttons(self, similarity=0.8, offset=(45, 10)):
|
def get_clickable_buttons(self, similarity=0.8, offset=(40, 10)):
|
||||||
image = self.extract_clickable_from_image(self.device.image)
|
image = self.extract_clickable_from_image(self.device.image)
|
||||||
self.template.matched_button._button_offset = offset
|
self.template.matched_button._button_offset = offset
|
||||||
self.template.load_offset(self.template)
|
self.template.load_offset(self.template)
|
||||||
|
|||||||
@@ -3,6 +3,23 @@ from module.base.button import Button, ButtonWrapper
|
|||||||
# This file was auto-generated, do not modify it manually. To generate:
|
# This file was auto-generated, do not modify it manually. To generate:
|
||||||
# ``` python -m dev_tools.button_extract ```
|
# ``` python -m dev_tools.button_extract ```
|
||||||
|
|
||||||
|
CIRCLE = ButtonWrapper(
|
||||||
|
name='CIRCLE',
|
||||||
|
jp=Button(
|
||||||
|
file='./assets/jp/circle/CIRCLE.png',
|
||||||
|
area=(191, 314, 233, 356),
|
||||||
|
search=(171, 294, 253, 376),
|
||||||
|
color=(191, 224, 240),
|
||||||
|
button=(188, 299, 435, 456),
|
||||||
|
),
|
||||||
|
en=Button(
|
||||||
|
file='./assets/en/circle/CIRCLE.png',
|
||||||
|
area=(196, 314, 235, 355),
|
||||||
|
search=(176, 294, 255, 375),
|
||||||
|
color=(183, 221, 238),
|
||||||
|
button=(191, 298, 434, 457),
|
||||||
|
),
|
||||||
|
)
|
||||||
GET_REWARD_AP = ButtonWrapper(
|
GET_REWARD_AP = ButtonWrapper(
|
||||||
name='GET_REWARD_AP',
|
name='GET_REWARD_AP',
|
||||||
jp=Button(
|
jp=Button(
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ from enum import Enum
|
|||||||
|
|
||||||
from module.base.timer import Timer
|
from module.base.timer import Timer
|
||||||
from module.logger import logger
|
from module.logger import logger
|
||||||
from tasks.base.page import page_circle
|
from tasks.base.page import CIRCLE_CHECK, MAIN_GO_TO_CIRCLE
|
||||||
from tasks.base.ui import UI
|
from tasks.base.ui import UI
|
||||||
from tasks.circle.assets.assets_circle import *
|
from tasks.circle.assets.assets_circle import *
|
||||||
|
|
||||||
@@ -17,6 +17,19 @@ class CircleStatus(Enum):
|
|||||||
|
|
||||||
|
|
||||||
class Circle(UI):
|
class Circle(UI):
|
||||||
|
def _enter_circle(self):
|
||||||
|
self.ui_goto_main()
|
||||||
|
action_timer = Timer(1, 8)
|
||||||
|
while not self.appear(CIRCLE_CHECK):
|
||||||
|
self.device.screenshot()
|
||||||
|
if not action_timer.reached_and_reset():
|
||||||
|
continue
|
||||||
|
if self.appear(CIRCLE):
|
||||||
|
self.click_with_interval(CIRCLE, 3)
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
self.device.click(MAIN_GO_TO_CIRCLE)
|
||||||
|
|
||||||
def _handle_circle(self, status):
|
def _handle_circle(self, status):
|
||||||
match status:
|
match status:
|
||||||
case CircleStatus.REWARD:
|
case CircleStatus.REWARD:
|
||||||
@@ -31,7 +44,7 @@ class Circle(UI):
|
|||||||
return status
|
return status
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
self.ui_ensure(page_circle)
|
self._enter_circle()
|
||||||
|
|
||||||
status = CircleStatus.REWARD
|
status = CircleStatus.REWARD
|
||||||
action_timer = Timer(0.5)
|
action_timer = Timer(0.5)
|
||||||
|
|||||||
@@ -133,9 +133,9 @@ PLAYER_SELECT_FIRST = ButtonWrapper(
|
|||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/tactical_challenge/PLAYER_SELECT_FIRST.png',
|
file='./assets/en/tactical_challenge/PLAYER_SELECT_FIRST.png',
|
||||||
area=(470, 293, 503, 322),
|
area=(468, 296, 493, 315),
|
||||||
search=(450, 273, 523, 342),
|
search=(448, 276, 513, 335),
|
||||||
color=(206, 214, 220),
|
color=(191, 202, 207),
|
||||||
button=(606, 181, 1100, 256),
|
button=(606, 181, 1100, 256),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@@ -150,9 +150,9 @@ PLAYER_SELECT_SECOND = ButtonWrapper(
|
|||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/tactical_challenge/PLAYER_SELECT_SECOND.png',
|
file='./assets/en/tactical_challenge/PLAYER_SELECT_SECOND.png',
|
||||||
area=(467, 450, 507, 482),
|
area=(467, 454, 493, 473),
|
||||||
search=(447, 430, 527, 502),
|
search=(447, 434, 513, 493),
|
||||||
color=(210, 219, 225),
|
color=(191, 202, 207),
|
||||||
button=(610, 338, 1098, 407),
|
button=(610, 338, 1098, 407),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
@@ -167,9 +167,9 @@ PLAYER_SELECT_THIRD = ButtonWrapper(
|
|||||||
),
|
),
|
||||||
en=Button(
|
en=Button(
|
||||||
file='./assets/en/tactical_challenge/PLAYER_SELECT_THIRD.png',
|
file='./assets/en/tactical_challenge/PLAYER_SELECT_THIRD.png',
|
||||||
area=(472, 612, 504, 641),
|
area=(468, 613, 492, 631),
|
||||||
search=(452, 592, 524, 661),
|
search=(448, 593, 512, 651),
|
||||||
color=(208, 216, 222),
|
color=(188, 199, 204),
|
||||||
button=(609, 500, 1101, 565),
|
button=(609, 500, 1101, 565),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|||||||