From cc2cf0d0463963172d1e9004a554aa3abaaaaea8 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Fri, 20 Dec 2024 21:07:58 +0800 Subject: [PATCH] Refactor: Abstract chapter switches from 20240725 to 20241219 --- ...0241024_EX.png => CHAPTER_20241219_EX.png} | Bin ...1024_AB.png => CHAPTER_20241219_PART1.png} | Bin ...1024_CD.png => CHAPTER_20241219_PART2.png} | Bin ...0241024_SP.png => CHAPTER_20241219_SP.png} | Bin ..._COMBAT.png => SWITCH_20241219_COMBAT.png} | Bin ...25_STORY.png => SWITCH_20241219_STORY.png} | Bin assets/en/campaign/SWITCH_20240725_COMBAT.png | Bin 7698 -> 0 bytes assets/en/campaign/SWITCH_20240725_STORY.png | Bin 6779 -> 0 bytes assets/jp/campaign/SWITCH_20240725_COMBAT.png | Bin 7698 -> 0 bytes assets/jp/campaign/SWITCH_20240725_STORY.png | Bin 6779 -> 0 bytes assets/tw/campaign/SWITCH_20240725_COMBAT.png | Bin 7698 -> 0 bytes assets/tw/campaign/SWITCH_20240725_STORY.png | Bin 6779 -> 0 bytes campaign/event_20240725_cn/campaign_base.py | 14 +-- campaign/event_20240829_cn/campaign_base.py | 15 +-- campaign/event_20240912_cn/campaign_base.py | 12 ++- campaign/event_20241024_cn/campaign_base.py | 46 ++------ campaign/event_20241024_cn/sp.py | 1 + campaign/event_20241024_cn/t1.py | 1 + campaign/event_20241121_cn/campaign_base.py | 52 +++------ campaign/event_20241121_cn/sp.py | 1 + campaign/event_20241121_cn/t1.py | 1 + campaign/event_20241121_cn/ttl1.py | 1 + campaign/event_20241219_cn/campaign_base.py | 9 ++ module/campaign/assets.py | 12 +-- module/campaign/campaign_ui.py | 101 +++++++++++++++++- module/config/config_manual.py | 2 + module/map/map_operation.py | 2 +- 27 files changed, 151 insertions(+), 119 deletions(-) rename assets/cn/campaign/{CHAPTER_20241024_EX.png => CHAPTER_20241219_EX.png} (100%) rename assets/cn/campaign/{CHAPTER_20241024_AB.png => CHAPTER_20241219_PART1.png} (100%) rename assets/cn/campaign/{CHAPTER_20241024_CD.png => CHAPTER_20241219_PART2.png} (100%) rename assets/cn/campaign/{CHAPTER_20241024_SP.png => CHAPTER_20241219_SP.png} (100%) rename assets/cn/campaign/{SWITCH_20240725_COMBAT.png => SWITCH_20241219_COMBAT.png} (100%) rename assets/cn/campaign/{SWITCH_20240725_STORY.png => SWITCH_20241219_STORY.png} (100%) delete mode 100644 assets/en/campaign/SWITCH_20240725_COMBAT.png delete mode 100644 assets/en/campaign/SWITCH_20240725_STORY.png delete mode 100644 assets/jp/campaign/SWITCH_20240725_COMBAT.png delete mode 100644 assets/jp/campaign/SWITCH_20240725_STORY.png delete mode 100644 assets/tw/campaign/SWITCH_20240725_COMBAT.png delete mode 100644 assets/tw/campaign/SWITCH_20240725_STORY.png create mode 100644 campaign/event_20241219_cn/campaign_base.py diff --git a/assets/cn/campaign/CHAPTER_20241024_EX.png b/assets/cn/campaign/CHAPTER_20241219_EX.png similarity index 100% rename from assets/cn/campaign/CHAPTER_20241024_EX.png rename to assets/cn/campaign/CHAPTER_20241219_EX.png diff --git a/assets/cn/campaign/CHAPTER_20241024_AB.png b/assets/cn/campaign/CHAPTER_20241219_PART1.png similarity index 100% rename from assets/cn/campaign/CHAPTER_20241024_AB.png rename to assets/cn/campaign/CHAPTER_20241219_PART1.png diff --git a/assets/cn/campaign/CHAPTER_20241024_CD.png b/assets/cn/campaign/CHAPTER_20241219_PART2.png similarity index 100% rename from assets/cn/campaign/CHAPTER_20241024_CD.png rename to assets/cn/campaign/CHAPTER_20241219_PART2.png diff --git a/assets/cn/campaign/CHAPTER_20241024_SP.png b/assets/cn/campaign/CHAPTER_20241219_SP.png similarity index 100% rename from assets/cn/campaign/CHAPTER_20241024_SP.png rename to assets/cn/campaign/CHAPTER_20241219_SP.png diff --git a/assets/cn/campaign/SWITCH_20240725_COMBAT.png b/assets/cn/campaign/SWITCH_20241219_COMBAT.png similarity index 100% rename from assets/cn/campaign/SWITCH_20240725_COMBAT.png rename to assets/cn/campaign/SWITCH_20241219_COMBAT.png diff --git a/assets/cn/campaign/SWITCH_20240725_STORY.png b/assets/cn/campaign/SWITCH_20241219_STORY.png similarity index 100% rename from assets/cn/campaign/SWITCH_20240725_STORY.png rename to assets/cn/campaign/SWITCH_20241219_STORY.png diff --git a/assets/en/campaign/SWITCH_20240725_COMBAT.png b/assets/en/campaign/SWITCH_20240725_COMBAT.png deleted file mode 100644 index dea5a57fc79066cdbad0c123cae626b546352784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7698 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 A2 > A3 > B1 > B2 > B3', + 'C1 > C2 > C3', + 'D1 > D2 > D3', + ] diff --git a/module/campaign/assets.py b/module/campaign/assets.py index 83f4da2fe..97088d89c 100644 --- a/module/campaign/assets.py +++ b/module/campaign/assets.py @@ -4,10 +4,10 @@ from module.base.template import Template # This file was automatically generated by dev_tools/button_extract.py. # Don't modify it manually. -CHAPTER_20241024_AB = Button(area={'cn': (17, 226, 34, 241), 'en': (17, 226, 34, 241), 'jp': (17, 226, 34, 241), 'tw': (17, 226, 34, 241)}, color={'cn': (162, 169, 196), 'en': (162, 169, 196), 'jp': (162, 169, 196), 'tw': (162, 169, 196)}, button={'cn': (17, 226, 34, 241), 'en': (17, 226, 34, 241), 'jp': (17, 226, 34, 241), 'tw': (17, 226, 34, 241)}, file={'cn': './assets/cn/campaign/CHAPTER_20241024_AB.png', 'en': './assets/cn/campaign/CHAPTER_20241024_AB.png', 'jp': './assets/cn/campaign/CHAPTER_20241024_AB.png', 'tw': './assets/cn/campaign/CHAPTER_20241024_AB.png'}) -CHAPTER_20241024_CD = Button(area={'cn': (17, 299, 34, 314), 'en': (17, 299, 34, 314), 'jp': (17, 299, 34, 314), 'tw': (17, 299, 34, 314)}, color={'cn': (168, 176, 204), 'en': (168, 176, 204), 'jp': (168, 176, 204), 'tw': (168, 176, 204)}, button={'cn': (17, 299, 34, 314), 'en': (17, 299, 34, 314), 'jp': (17, 299, 34, 314), 'tw': (17, 299, 34, 314)}, file={'cn': './assets/cn/campaign/CHAPTER_20241024_CD.png', 'en': './assets/cn/campaign/CHAPTER_20241024_CD.png', 'jp': './assets/cn/campaign/CHAPTER_20241024_CD.png', 'tw': './assets/cn/campaign/CHAPTER_20241024_CD.png'}) -CHAPTER_20241024_EX = Button(area={'cn': (17, 446, 34, 461), 'en': (17, 446, 34, 461), 'jp': (17, 446, 34, 461), 'tw': (17, 446, 34, 461)}, color={'cn': (169, 178, 207), 'en': (169, 178, 207), 'jp': (169, 178, 207), 'tw': (169, 178, 207)}, button={'cn': (17, 446, 34, 461), 'en': (17, 446, 34, 461), 'jp': (17, 446, 34, 461), 'tw': (17, 446, 34, 461)}, file={'cn': './assets/cn/campaign/CHAPTER_20241024_EX.png', 'en': './assets/cn/campaign/CHAPTER_20241024_EX.png', 'jp': './assets/cn/campaign/CHAPTER_20241024_EX.png', 'tw': './assets/cn/campaign/CHAPTER_20241024_EX.png'}) -CHAPTER_20241024_SP = Button(area={'cn': (17, 372, 34, 388), 'en': (17, 372, 34, 388), 'jp': (17, 372, 34, 388), 'tw': (17, 372, 34, 388)}, color={'cn': (163, 172, 201), 'en': (163, 172, 201), 'jp': (163, 172, 201), 'tw': (163, 172, 201)}, button={'cn': (17, 372, 34, 388), 'en': (17, 372, 34, 388), 'jp': (17, 372, 34, 388), 'tw': (17, 372, 34, 388)}, file={'cn': './assets/cn/campaign/CHAPTER_20241024_SP.png', 'en': './assets/cn/campaign/CHAPTER_20241024_SP.png', 'jp': './assets/cn/campaign/CHAPTER_20241024_SP.png', 'tw': './assets/cn/campaign/CHAPTER_20241024_SP.png'}) +CHAPTER_20241219_EX = Button(area={'cn': (17, 446, 34, 461), 'en': (17, 446, 34, 461), 'jp': (17, 446, 34, 461), 'tw': (17, 446, 34, 461)}, color={'cn': (169, 178, 207), 'en': (169, 178, 207), 'jp': (169, 178, 207), 'tw': (169, 178, 207)}, button={'cn': (17, 446, 34, 461), 'en': (17, 446, 34, 461), 'jp': (17, 446, 34, 461), 'tw': (17, 446, 34, 461)}, file={'cn': './assets/cn/campaign/CHAPTER_20241219_EX.png', 'en': './assets/cn/campaign/CHAPTER_20241219_EX.png', 'jp': './assets/cn/campaign/CHAPTER_20241219_EX.png', 'tw': './assets/cn/campaign/CHAPTER_20241219_EX.png'}) +CHAPTER_20241219_PART1 = Button(area={'cn': (17, 226, 34, 241), 'en': (17, 226, 34, 241), 'jp': (17, 226, 34, 241), 'tw': (17, 226, 34, 241)}, color={'cn': (162, 169, 196), 'en': (162, 169, 196), 'jp': (162, 169, 196), 'tw': (162, 169, 196)}, button={'cn': (17, 226, 34, 241), 'en': (17, 226, 34, 241), 'jp': (17, 226, 34, 241), 'tw': (17, 226, 34, 241)}, file={'cn': './assets/cn/campaign/CHAPTER_20241219_PART1.png', 'en': './assets/cn/campaign/CHAPTER_20241219_PART1.png', 'jp': './assets/cn/campaign/CHAPTER_20241219_PART1.png', 'tw': './assets/cn/campaign/CHAPTER_20241219_PART1.png'}) +CHAPTER_20241219_PART2 = Button(area={'cn': (17, 299, 34, 314), 'en': (17, 299, 34, 314), 'jp': (17, 299, 34, 314), 'tw': (17, 299, 34, 314)}, color={'cn': (168, 176, 204), 'en': (168, 176, 204), 'jp': (168, 176, 204), 'tw': (168, 176, 204)}, button={'cn': (17, 299, 34, 314), 'en': (17, 299, 34, 314), 'jp': (17, 299, 34, 314), 'tw': (17, 299, 34, 314)}, file={'cn': './assets/cn/campaign/CHAPTER_20241219_PART2.png', 'en': './assets/cn/campaign/CHAPTER_20241219_PART2.png', 'jp': './assets/cn/campaign/CHAPTER_20241219_PART2.png', 'tw': './assets/cn/campaign/CHAPTER_20241219_PART2.png'}) +CHAPTER_20241219_SP = Button(area={'cn': (17, 372, 34, 388), 'en': (17, 372, 34, 388), 'jp': (17, 372, 34, 388), 'tw': (17, 372, 34, 388)}, color={'cn': (163, 172, 201), 'en': (163, 172, 201), 'jp': (163, 172, 201), 'tw': (163, 172, 201)}, button={'cn': (17, 372, 34, 388), 'en': (17, 372, 34, 388), 'jp': (17, 372, 34, 388), 'tw': (17, 372, 34, 388)}, file={'cn': './assets/cn/campaign/CHAPTER_20241219_SP.png', 'en': './assets/cn/campaign/CHAPTER_20241219_SP.png', 'jp': './assets/cn/campaign/CHAPTER_20241219_SP.png', 'tw': './assets/cn/campaign/CHAPTER_20241219_SP.png'}) CHAPTER_NEXT = Button(area={'cn': (1216, 362, 1232, 388), 'en': (1216, 362, 1232, 388), 'jp': (1216, 362, 1232, 388), 'tw': (1216, 362, 1232, 388)}, color={'cn': (121, 150, 198), 'en': (121, 150, 198), 'jp': (121, 150, 198), 'tw': (121, 150, 198)}, button={'cn': (1216, 362, 1232, 388), 'en': (1216, 362, 1232, 388), 'jp': (1216, 362, 1232, 388), 'tw': (1216, 362, 1232, 388)}, file={'cn': './assets/cn/campaign/CHAPTER_NEXT.png', 'en': './assets/en/campaign/CHAPTER_NEXT.png', 'jp': './assets/jp/campaign/CHAPTER_NEXT.png', 'tw': './assets/tw/campaign/CHAPTER_NEXT.png'}) CHAPTER_PREV = Button(area={'cn': (42, 360, 58, 387), 'en': (42, 360, 58, 387), 'jp': (42, 360, 58, 387), 'tw': (42, 360, 58, 387)}, color={'cn': (105, 133, 169), 'en': (105, 133, 169), 'jp': (105, 133, 169), 'tw': (105, 133, 169)}, button={'cn': (42, 360, 58, 387), 'en': (42, 360, 58, 387), 'jp': (42, 360, 58, 387), 'tw': (42, 360, 58, 387)}, file={'cn': './assets/cn/campaign/CHAPTER_PREV.png', 'en': './assets/en/campaign/CHAPTER_PREV.png', 'jp': './assets/jp/campaign/CHAPTER_PREV.png', 'tw': './assets/tw/campaign/CHAPTER_PREV.png'}) COMMISSION_NOTICE_AT_CAMPAIGN = Button(area={'cn': (1077, 637, 1083, 643), 'en': (1077, 637, 1083, 643), 'jp': (1077, 637, 1083, 643), 'tw': (1077, 637, 1083, 643)}, color={'cn': (172, 72, 49), 'en': (172, 72, 49), 'jp': (172, 72, 49), 'tw': (172, 72, 49)}, button={'cn': (1077, 637, 1083, 643), 'en': (1077, 637, 1083, 643), 'jp': (1077, 637, 1083, 643), 'tw': (1077, 637, 1083, 643)}, file={'cn': './assets/cn/campaign/COMMISSION_NOTICE_AT_CAMPAIGN.png', 'en': './assets/en/campaign/COMMISSION_NOTICE_AT_CAMPAIGN.png', 'jp': './assets/jp/campaign/COMMISSION_NOTICE_AT_CAMPAIGN.png', 'tw': './assets/tw/campaign/COMMISSION_NOTICE_AT_CAMPAIGN.png'}) @@ -18,8 +18,8 @@ OCR_OIL = Button(area={'cn': (614, 23, 714, 51), 'en': (614, 23, 714, 51), 'jp': OCR_OIL_CHECK = Button(area={'cn': (573, 30, 592, 49), 'en': (573, 30, 592, 49), 'jp': (573, 30, 592, 49), 'tw': (573, 30, 592, 49)}, color={'cn': (82, 82, 82), 'en': (82, 82, 82), 'jp': (82, 82, 82), 'tw': (82, 82, 82)}, button={'cn': (573, 30, 592, 49), 'en': (573, 30, 592, 49), 'jp': (573, 30, 592, 49), 'tw': (573, 30, 592, 49)}, file={'cn': './assets/cn/campaign/OCR_OIL_CHECK.png', 'en': './assets/en/campaign/OCR_OIL_CHECK.png', 'jp': './assets/jp/campaign/OCR_OIL_CHECK.png', 'tw': './assets/tw/campaign/OCR_OIL_CHECK.png'}) SWITCH_1_HARD = Button(area={'cn': (82, 641, 148, 675), 'en': (87, 642, 148, 676), 'jp': (24, 645, 150, 697), 'tw': (82, 641, 148, 675)}, color={'cn': (233, 141, 128), 'en': (234, 139, 124), 'jp': (219, 116, 106), 'tw': (236, 159, 148)}, button={'cn': (82, 641, 148, 675), 'en': (87, 642, 148, 676), 'jp': (24, 645, 150, 697), 'tw': (82, 641, 148, 675)}, file={'cn': './assets/cn/campaign/SWITCH_1_HARD.png', 'en': './assets/en/campaign/SWITCH_1_HARD.png', 'jp': './assets/jp/campaign/SWITCH_1_HARD.png', 'tw': './assets/tw/campaign/SWITCH_1_HARD.png'}) SWITCH_1_NORMAL = Button(area={'cn': (80, 641, 148, 675), 'en': (79, 638, 147, 675), 'jp': (24, 644, 150, 697), 'tw': (79, 641, 148, 675)}, color={'cn': (157, 180, 227), 'en': (157, 180, 227), 'jp': (143, 169, 222), 'tw': (156, 179, 227)}, button={'cn': (80, 641, 148, 675), 'en': (79, 638, 147, 675), 'jp': (24, 644, 150, 697), 'tw': (79, 641, 148, 675)}, file={'cn': './assets/cn/campaign/SWITCH_1_NORMAL.png', 'en': './assets/en/campaign/SWITCH_1_NORMAL.png', 'jp': './assets/jp/campaign/SWITCH_1_NORMAL.png', 'tw': './assets/tw/campaign/SWITCH_1_NORMAL.png'}) -SWITCH_20240725_COMBAT = Button(area={'cn': (39, 659, 71, 691), 'en': (39, 659, 71, 691), 'jp': (39, 659, 71, 691), 'tw': (39, 659, 71, 691)}, color={'cn': (133, 96, 49), 'en': (133, 96, 49), 'jp': (133, 96, 49), 'tw': (133, 96, 49)}, button={'cn': (39, 659, 71, 691), 'en': (39, 659, 71, 691), 'jp': (39, 659, 71, 691), 'tw': (39, 659, 71, 691)}, file={'cn': './assets/cn/campaign/SWITCH_20240725_COMBAT.png', 'en': './assets/en/campaign/SWITCH_20240725_COMBAT.png', 'jp': './assets/jp/campaign/SWITCH_20240725_COMBAT.png', 'tw': './assets/tw/campaign/SWITCH_20240725_COMBAT.png'}) -SWITCH_20240725_STORY = Button(area={'cn': (327, 657, 352, 688), 'en': (327, 657, 352, 688), 'jp': (327, 657, 352, 688), 'tw': (327, 657, 352, 688)}, color={'cn': (105, 77, 31), 'en': (105, 77, 31), 'jp': (105, 77, 31), 'tw': (105, 77, 31)}, button={'cn': (327, 657, 352, 688), 'en': (327, 657, 352, 688), 'jp': (327, 657, 352, 688), 'tw': (327, 657, 352, 688)}, file={'cn': './assets/cn/campaign/SWITCH_20240725_STORY.png', 'en': './assets/en/campaign/SWITCH_20240725_STORY.png', 'jp': './assets/jp/campaign/SWITCH_20240725_STORY.png', 'tw': './assets/tw/campaign/SWITCH_20240725_STORY.png'}) +SWITCH_20241219_COMBAT = Button(area={'cn': (39, 659, 71, 691), 'en': (39, 659, 71, 691), 'jp': (39, 659, 71, 691), 'tw': (39, 659, 71, 691)}, color={'cn': (133, 96, 49), 'en': (133, 96, 49), 'jp': (133, 96, 49), 'tw': (133, 96, 49)}, button={'cn': (39, 659, 71, 691), 'en': (39, 659, 71, 691), 'jp': (39, 659, 71, 691), 'tw': (39, 659, 71, 691)}, file={'cn': './assets/cn/campaign/SWITCH_20241219_COMBAT.png', 'en': './assets/cn/campaign/SWITCH_20241219_COMBAT.png', 'jp': './assets/cn/campaign/SWITCH_20241219_COMBAT.png', 'tw': './assets/cn/campaign/SWITCH_20241219_COMBAT.png'}) +SWITCH_20241219_STORY = Button(area={'cn': (327, 657, 352, 688), 'en': (327, 657, 352, 688), 'jp': (327, 657, 352, 688), 'tw': (327, 657, 352, 688)}, color={'cn': (105, 77, 31), 'en': (105, 77, 31), 'jp': (105, 77, 31), 'tw': (105, 77, 31)}, button={'cn': (327, 657, 352, 688), 'en': (327, 657, 352, 688), 'jp': (327, 657, 352, 688), 'tw': (327, 657, 352, 688)}, file={'cn': './assets/cn/campaign/SWITCH_20241219_STORY.png', 'en': './assets/cn/campaign/SWITCH_20241219_STORY.png', 'jp': './assets/cn/campaign/SWITCH_20241219_STORY.png', 'tw': './assets/cn/campaign/SWITCH_20241219_STORY.png'}) SWITCH_2_EX = Button(area={'cn': (272, 658, 310, 676), 'en': (251, 644, 313, 697), 'jp': (186, 638, 314, 692), 'tw': (241, 640, 312, 692)}, color={'cn': (253, 168, 98), 'en': (254, 163, 80), 'jp': (205, 136, 64), 'tw': (254, 161, 72)}, button={'cn': (272, 658, 310, 676), 'en': (251, 644, 313, 697), 'jp': (186, 638, 314, 692), 'tw': (241, 640, 312, 692)}, file={'cn': './assets/cn/campaign/SWITCH_2_EX.png', 'en': './assets/en/campaign/SWITCH_2_EX.png', 'jp': './assets/jp/campaign/SWITCH_2_EX.png', 'tw': './assets/tw/campaign/SWITCH_2_EX.png'}) SWITCH_2_HARD = Button(area={'cn': (246, 641, 311, 675), 'en': (244, 640, 312, 684), 'jp': (233, 655, 310, 681), 'tw': (245, 641, 311, 674)}, color={'cn': (233, 140, 127), 'en': (228, 121, 106), 'jp': (223, 110, 96), 'tw': (237, 161, 150)}, button={'cn': (246, 641, 311, 675), 'en': (244, 640, 312, 684), 'jp': (233, 655, 310, 681), 'tw': (245, 641, 311, 674)}, file={'cn': './assets/cn/campaign/SWITCH_2_HARD.png', 'en': './assets/en/campaign/SWITCH_2_HARD.png', 'jp': './assets/jp/campaign/SWITCH_2_HARD.png', 'tw': './assets/tw/campaign/SWITCH_2_HARD.png'}) TEMPLATE_EVENT_20230817_STORY_E1 = Template(file={'cn': './assets/cn/campaign/TEMPLATE_EVENT_20230817_STORY_E1.png', 'en': './assets/en/campaign/TEMPLATE_EVENT_20230817_STORY_E1.png', 'jp': './assets/jp/campaign/TEMPLATE_EVENT_20230817_STORY_E1.png', 'tw': './assets/tw/campaign/TEMPLATE_EVENT_20230817_STORY_E1.png'}) diff --git a/module/campaign/campaign_ui.py b/module/campaign/campaign_ui.py index e8cd110ad..38582d37d 100644 --- a/module/campaign/campaign_ui.py +++ b/module/campaign/campaign_ui.py @@ -24,6 +24,17 @@ MODE_SWITCH_2 = ModeSwitch('Mode_switch_2', offset=(30, 10)) MODE_SWITCH_2.add_state('hard', SWITCH_2_HARD) MODE_SWITCH_2.add_state('ex', SWITCH_2_EX) +# Event mode switches changing from 20240725 to 20241219 +# I think it stable at 20241219, so give them names with date 20241219 +MODE_SWITCH_20241219 = ModeSwitch('Mode_switch_20241219', is_selector=True, offset=(30, 30)) +MODE_SWITCH_20241219.add_state('combat', SWITCH_20241219_COMBAT) +MODE_SWITCH_20241219.add_state('story', SWITCH_20241219_STORY) +ASIDE_SWITCH_20241219 = ModeSwitch('Aside_switch_20241219', is_selector=True, offset=(30, 30)) +ASIDE_SWITCH_20241219.add_state('part1', CHAPTER_20241219_PART1) +ASIDE_SWITCH_20241219.add_state('part2', CHAPTER_20241219_PART2) +ASIDE_SWITCH_20241219.add_state('sp', CHAPTER_20241219_SP) +ASIDE_SWITCH_20241219.add_state('ex', CHAPTER_20241219_EX) + class CampaignUI(MapOperation, CampaignEvent, CampaignOcr): ENTRANCE = Button(area=(), color=(), button=(), name='default_button') @@ -83,9 +94,6 @@ class CampaignUI(MapOperation, CampaignEvent, CampaignOcr): """ Args: mode (str): 'normal', 'hard', 'ex' - - Returns: - bool: If mode changed. """ if mode == 'hard': self.config.override(Campaign_Mode='hard') @@ -113,6 +121,34 @@ class CampaignUI(MapOperation, CampaignEvent, CampaignOcr): else: logger.warning(f'Unknown campaign mode: {mode}') + def campaign_ensure_mode_20241219(self, mode='combat'): + """ + Args: + mode (str): 'combat' or 'story' + """ + if mode in ['normal', 'hard', 'ex', 'combat']: + MODE_SWITCH_20241219.set('combat', main=self) + elif mode in ['story']: + MODE_SWITCH_20241219.set('story', main=self) + else: + logger.warning(f'Unknown campaign mode: {mode}') + + def campaign_ensure_aside_20241219(self, chapter): + """ + Args: + chapter: 'part1', 'part2', 'sp', 'ex' + """ + if chapter in ['part1', 'a', 'c', 't']: + MODE_SWITCH_20241219.set('part1', main=self) + elif chapter in ['part2', 'b', 'd']: + MODE_SWITCH_20241219.set('part2', main=self) + elif chapter in ['sp', 'ex_sp']: + MODE_SWITCH_20241219.set('sp', main=self) + elif chapter in ['ex', 'ex_ex']: + MODE_SWITCH_20241219.set('sp', main=self) + else: + logger.warning(f'Unknown campaign aside: {chapter}') + def campaign_get_mode_names(self, name): """ Get stage names in both 'normal' and 'hard' @@ -136,6 +172,22 @@ class CampaignUI(MapOperation, CampaignEvent, CampaignOcr): return [f'b{name[1:]}', f'd{name[1:]}'] return [name] + def _campaign_name_is_hard(self, name): + """ + Reuse manual defination in campaign_get_mode_names() + + Args: + name: 'a1', 'ht1', 'sp1' + + Returns: + bool: If stage is hard mode + """ + mode_names = self.campaign_get_mode_names(name) + if len(mode_names) == 2 and mode_names[1] == name: + return True + else: + return False + def campaign_get_entrance(self, name): """ Args: @@ -145,7 +197,7 @@ class CampaignUI(MapOperation, CampaignEvent, CampaignOcr): Button: """ entrance_name = name - if self.config.MAP_HAS_MODE_SWITCH: + if self.config.MAP_HAS_MODE_SWITCH or self.config.MAP_CHAPTER_SWITCH_20241219: for mode_name in self.campaign_get_mode_names(name): if mode_name in self.stage_entrance: name = mode_name @@ -195,16 +247,55 @@ class CampaignUI(MapOperation, CampaignEvent, CampaignOcr): else: return False + def campaign_set_chapter_20241219(self, chapter, stage, mode='combat'): + if not self.config.MAP_CHAPTER_SWITCH_20241219: + return False + + if self._campaign_name_is_hard(f'{chapter}{stage}'): + self.config.override(Campaign_Mode='hard') + + if mode == 'story': + MODE_SWITCH_20241219.set('story', main=self) + return True + if chapter in ['a', 'c', 't']: + self.ui_goto_event() + MODE_SWITCH_20241219.set('combat', main=self) + ASIDE_SWITCH_20241219.set('part1', main=self) + self.campaign_ensure_chapter(index=chapter) + return True + if chapter in ['b', 'd', 'ttl']: + self.ui_goto_event() + MODE_SWITCH_20241219.set('combat', main=self) + ASIDE_SWITCH_20241219.set('part2', main=self) + self.campaign_ensure_chapter(index=chapter) + return True + if chapter in ['ex_sp']: + self.ui_goto_event() + MODE_SWITCH_20241219.set('combat', main=self) + ASIDE_SWITCH_20241219.set('sp', main=self) + self.campaign_ensure_chapter(index=chapter) + return True + if chapter in ['ex_ex']: + self.ui_goto_event() + MODE_SWITCH_20241219.set('combat', main=self) + ASIDE_SWITCH_20241219.set('ex', main=self) + self.campaign_ensure_chapter(index=chapter) + return True + else: + return False + def campaign_set_chapter(self, name, mode='normal'): """ Args: name (str): Campaign name, such as '7-2', 'd3', 'sp3'. mode (str): 'normal' or 'hard'. """ - chapter, _ = self._campaign_separate_name(name) + chapter, stage = self._campaign_separate_name(name) if self.campaign_set_chapter_main(chapter, mode): pass + elif self.campaign_set_chapter_20241219(chapter, stage, mode): + pass elif self.campaign_set_chapter_event(chapter, mode): pass elif self.campaign_set_chapter_sp(chapter, mode): diff --git a/module/config/config_manual.py b/module/config/config_manual.py index 140f53a57..b1b0ab466 100644 --- a/module/config/config_manual.py +++ b/module/config/config_manual.py @@ -112,6 +112,8 @@ class ManualConfig: module.map.fleet """ MAP_HAS_MODE_SWITCH = False # event_20240725_cn has mode switch in map preparation + # Events from 20240725 to 20241219 introduced new chapter switches + MAP_CHAPTER_SWITCH_20241219 = False MAP_HAS_CLEAR_PERCENTAGE = True MAP_HAS_WALK_SPEEDUP = False MAP_HAS_AMBUSH = True diff --git a/module/map/map_operation.py b/module/map/map_operation.py index 4a9de599a..2fae8cd76 100644 --- a/module/map/map_operation.py +++ b/module/map/map_operation.py @@ -265,7 +265,7 @@ class MapOperation(MysteryHandler, FleetPreparation, Retirement, FastForwardHand bool: If map mode satisfied Always True if map doesn't have mode switch in map preparation """ - if not self.config.MAP_HAS_MODE_SWITCH: + if not self.config.MAP_HAS_MODE_SWITCH and not self.config.MAP_CHAPTER_SWITCH_20241219: return True if mode == 'normal':