Simplify custom world result editing controls
This commit is contained in:
@@ -9,9 +9,32 @@ export type CustomWorldThemeMode =
|
||||
| 'mythic';
|
||||
|
||||
export function detectCustomWorldThemeMode(
|
||||
profile: Pick<CustomWorldProfile, 'settingText' | 'summary' | 'tone' | 'playerGoal' | 'templateWorldType'>,
|
||||
profile: Pick<
|
||||
CustomWorldProfile,
|
||||
| 'settingText'
|
||||
| 'summary'
|
||||
| 'tone'
|
||||
| 'playerGoal'
|
||||
| 'templateWorldType'
|
||||
| 'ownedSettingLayers'
|
||||
>,
|
||||
): CustomWorldThemeMode {
|
||||
const source = `${profile.settingText} ${profile.summary} ${profile.tone} ${profile.playerGoal}`;
|
||||
const semanticAnchor = profile.ownedSettingLayers?.semanticAnchor;
|
||||
const expressionProfile = profile.ownedSettingLayers?.expressionProfile;
|
||||
const source = [
|
||||
profile.settingText,
|
||||
profile.summary,
|
||||
profile.tone,
|
||||
profile.playerGoal,
|
||||
...(semanticAnchor?.genreSignals ?? []),
|
||||
...(semanticAnchor?.conflictForms ?? []),
|
||||
...(semanticAnchor?.institutionTypes ?? []),
|
||||
...(semanticAnchor?.tabooTypes ?? []),
|
||||
...(semanticAnchor?.carrierTypes ?? []),
|
||||
...(semanticAnchor?.forceSystemTypes ?? []),
|
||||
...(semanticAnchor?.atmosphereTags ?? []),
|
||||
...(expressionProfile?.presentationTone ?? []),
|
||||
].join(' ');
|
||||
|
||||
if (/[机关蒸汽齿轮工坊机巧城轨炮舰]/u.test(source)) return 'machina';
|
||||
if (/[海潮港湾船舟湖泊澜雾湾]/u.test(source)) return 'tide';
|
||||
@@ -23,8 +46,26 @@ export function detectCustomWorldThemeMode(
|
||||
}
|
||||
|
||||
export function resolveCustomWorldAnchorWorldType(
|
||||
profile: Pick<CustomWorldProfile, 'settingText' | 'summary' | 'tone' | 'playerGoal' | 'templateWorldType'>,
|
||||
profile: Pick<
|
||||
CustomWorldProfile,
|
||||
| 'settingText'
|
||||
| 'summary'
|
||||
| 'tone'
|
||||
| 'playerGoal'
|
||||
| 'templateWorldType'
|
||||
| 'ownedSettingLayers'
|
||||
>,
|
||||
): WorldTemplateType {
|
||||
const legacyTemplateWorldType =
|
||||
profile.ownedSettingLayers?.compatibilityProfile?.legacyTemplateWorldType;
|
||||
|
||||
if (
|
||||
legacyTemplateWorldType === WorldType.WUXIA ||
|
||||
legacyTemplateWorldType === WorldType.XIANXIA
|
||||
) {
|
||||
return legacyTemplateWorldType;
|
||||
}
|
||||
|
||||
const themeMode = detectCustomWorldThemeMode(profile);
|
||||
return themeMode === 'arcane' ? WorldType.XIANXIA : WorldType.WUXIA;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user