@@ -16,6 +16,7 @@ export function detectCustomWorldThemeMode(
|
||||
| 'tone'
|
||||
| 'playerGoal'
|
||||
| 'templateWorldType'
|
||||
| 'compatibilityTemplateWorldType'
|
||||
| 'ownedSettingLayers'
|
||||
>,
|
||||
): CustomWorldThemeMode {
|
||||
@@ -45,17 +46,36 @@ export function detectCustomWorldThemeMode(
|
||||
return 'mythic';
|
||||
}
|
||||
|
||||
export function resolveCustomWorldAnchorWorldType(
|
||||
export function resolveCustomWorldCompatibilityTemplateWorldType(
|
||||
profile: Pick<
|
||||
CustomWorldProfile,
|
||||
| 'settingText'
|
||||
| 'summary'
|
||||
| 'tone'
|
||||
| 'playerGoal'
|
||||
| 'templateWorldType'
|
||||
| 'compatibilityTemplateWorldType'
|
||||
| 'ownedSettingLayers'
|
||||
>,
|
||||
> &
|
||||
Partial<
|
||||
Pick<
|
||||
CustomWorldProfile,
|
||||
'settingText' | 'summary' | 'tone' | 'playerGoal'
|
||||
>
|
||||
>,
|
||||
): WorldTemplateType {
|
||||
if (
|
||||
profile.compatibilityTemplateWorldType === WorldType.WUXIA ||
|
||||
profile.compatibilityTemplateWorldType === WorldType.XIANXIA
|
||||
) {
|
||||
return profile.compatibilityTemplateWorldType;
|
||||
}
|
||||
|
||||
const compatibilityTemplateWorldType =
|
||||
profile.ownedSettingLayers?.compatibilityProfile?.compatibilityTemplateWorldType;
|
||||
if (
|
||||
compatibilityTemplateWorldType === WorldType.WUXIA ||
|
||||
compatibilityTemplateWorldType === WorldType.XIANXIA
|
||||
) {
|
||||
return compatibilityTemplateWorldType;
|
||||
}
|
||||
|
||||
const legacyTemplateWorldType =
|
||||
profile.ownedSettingLayers?.compatibilityProfile?.legacyTemplateWorldType;
|
||||
|
||||
@@ -66,6 +86,24 @@ export function resolveCustomWorldAnchorWorldType(
|
||||
return legacyTemplateWorldType;
|
||||
}
|
||||
|
||||
const themeMode = detectCustomWorldThemeMode(profile);
|
||||
if (
|
||||
profile.templateWorldType === WorldType.WUXIA ||
|
||||
profile.templateWorldType === WorldType.XIANXIA
|
||||
) {
|
||||
return profile.templateWorldType;
|
||||
}
|
||||
|
||||
const themeMode = detectCustomWorldThemeMode({
|
||||
settingText: profile.settingText ?? '',
|
||||
summary: profile.summary ?? '',
|
||||
tone: profile.tone ?? '',
|
||||
playerGoal: profile.playerGoal ?? '',
|
||||
templateWorldType: profile.templateWorldType ?? WorldType.WUXIA,
|
||||
compatibilityTemplateWorldType: profile.compatibilityTemplateWorldType,
|
||||
ownedSettingLayers: profile.ownedSettingLayers,
|
||||
});
|
||||
return themeMode === 'arcane' ? WorldType.XIANXIA : WorldType.WUXIA;
|
||||
}
|
||||
|
||||
export const resolveCustomWorldAnchorWorldType =
|
||||
resolveCustomWorldCompatibilityTemplateWorldType;
|
||||
|
||||
Reference in New Issue
Block a user