1
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
2026-04-11 15:43:32 +08:00
parent f19e482c8f
commit 0981d6ee1b
78 changed files with 1102 additions and 8510 deletions

View File

@@ -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;