Skip to content

Commit 5e05db0

Browse files
committed
Add: Switch mode in map preparation
1 parent 96647e6 commit 5e05db0

13 files changed

Lines changed: 85 additions & 5 deletions
7.33 KB
Loading
7.33 KB
Loading
7.33 KB
Loading
7.33 KB
Loading
7.33 KB
Loading
7.33 KB
Loading
7.33 KB
Loading
7.33 KB
Loading

campaign/event_20240725_cn/campaign_base.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ def campaign_ensure_mode(self, mode='normal'):
1717
Returns:
1818
bool: If mode changed.
1919
"""
20+
if mode == 'hard':
21+
self.config.override(Campaign_Mode='hard')
22+
2023
if mode in ['normal', 'hard', 'ex']:
2124
MODE_SWITCH_20240725.set('combat', main=self)
2225
elif mode in ['story']:

module/campaign/campaign_ui.py

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ def campaign_ensure_mode(self, mode='normal'):
7777
Returns:
7878
bool: If mode changed.
7979
"""
80+
if mode == 'hard':
81+
self.config.override(Campaign_Mode='hard')
82+
8083
switch_2 = MODE_SWITCH_2.get(main=self)
8184

8285
if switch_2 == 'unknown':
@@ -100,6 +103,29 @@ def campaign_ensure_mode(self, mode='normal'):
100103
else:
101104
logger.warning(f'Unknown campaign mode: {mode}')
102105

106+
def campaign_get_mode_names(self, name):
107+
"""
108+
Get stage names in both 'normal' and 'hard'
109+
t1 -> [t1, ht1]
110+
ht1 -> [t1, ht1]
111+
a1 -> [a1, c1]
112+
113+
Args:
114+
name (str):
115+
116+
Returns:
117+
list[str]:
118+
"""
119+
if name.startswith('t'):
120+
return [f't{name[1:]}', f'ht{name[1:]}']
121+
if name.startswith('ht'):
122+
return [f't{name[2:]}', f'ht{name[2:]}']
123+
if name.startswith('a') or name.startswith('c'):
124+
return [f'a{name[1:]}', f'c{name[1:]}']
125+
if name.startswith('b') or name.startswith('d'):
126+
return [f'b{name[1:]}', f'd{name[1:]}']
127+
return [name]
128+
103129
def campaign_get_entrance(self, name):
104130
"""
105131
Args:
@@ -108,12 +134,18 @@ def campaign_get_entrance(self, name):
108134
Returns:
109135
Button:
110136
"""
137+
entrance_name = name
138+
if self.config.MAP_HAS_MODE_SWITCH:
139+
for mode_name in self.campaign_get_mode_names(name):
140+
if mode_name in self.stage_entrance:
141+
name = mode_name
142+
111143
if name not in self.stage_entrance:
112144
logger.warning(f'Stage not found: {name}')
113145
raise CampaignNameError
114146

115147
entrance = self.stage_entrance[name]
116-
entrance.name = name
148+
entrance.name = entrance_name
117149
return entrance
118150

119151
def campaign_set_chapter_main(self, chapter, mode='normal'):
@@ -132,11 +164,11 @@ def campaign_set_chapter_main(self, chapter, mode='normal'):
132164
return False
133165

134166
def campaign_set_chapter_event(self, chapter, mode='normal'):
135-
if chapter in ['a', 'b', 'c', 'd', 'ex_sp', 'as', 'bs', 'cs', 'ds', 't', 'ts', 'tss', 'hts']:
167+
if chapter in ['a', 'b', 'c', 'd', 'ex_sp', 'as', 'bs', 'cs', 'ds', 't', 'ts', 'tss', 'ht', 'hts']:
136168
self.ui_goto_event()
137169
if chapter in ['a', 'b', 'as', 'bs', 't', 'ts', 'tss']:
138170
self.campaign_ensure_mode('normal')
139-
elif chapter in ['c', 'd', 'cs', 'ds', 'hts']:
171+
elif chapter in ['c', 'd', 'cs', 'ds', 'ht', 'hts']:
140172
self.campaign_ensure_mode('hard')
141173
elif chapter == 'ex_sp':
142174
self.campaign_ensure_mode('ex')

0 commit comments

Comments
 (0)