feat: 국가 성향 모듈 추가 및 관련 타입 수정

This commit is contained in:
2026-01-06 12:50:55 +00:00
parent 19851c6e08
commit 55a9230a36
20 changed files with 456 additions and 4 deletions
@@ -26,6 +26,7 @@ const resolveTraitKey = (
specialWar: string | null;
};
};
nation?: { typeCode: string } | null;
},
kind: TraitKind
): string | null => {
@@ -35,6 +36,9 @@ const resolveTraitKey = (
if (kind === 'war') {
return context.general.role.specialWar;
}
if (kind === 'nation') {
return context.nation?.typeCode ?? null;
}
return context.general.role.personality;
};
@@ -51,6 +55,8 @@ const resolveModule = <TriggerState extends GeneralTriggerState>(
bucket = registry.domestic;
} else if (kind === 'war') {
bucket = registry.war;
} else if (kind === 'nation') {
bucket = registry.nation;
} else {
bucket = registry.personality;
}
@@ -201,10 +207,12 @@ export const createTraitModuleRegistry = <TriggerState extends GeneralTriggerSta
domestic?: TraitModule<TriggerState>[];
war?: TraitModule<TriggerState>[];
personality?: TraitModule<TriggerState>[];
nation?: TraitModule<TriggerState>[];
}): TraitModuleRegistry<TriggerState> => {
const domestic = new Map<string, TraitModule<TriggerState>>();
const war = new Map<string, TraitModule<TriggerState>>();
const personality = new Map<string, TraitModule<TriggerState>>();
const nation = new Map<string, TraitModule<TriggerState>>();
for (const module of options.domestic ?? []) {
domestic.set(module.key, module);
@@ -215,8 +223,11 @@ export const createTraitModuleRegistry = <TriggerState extends GeneralTriggerSta
for (const module of options.personality ?? []) {
personality.set(module.key, module);
}
for (const module of options.nation ?? []) {
nation.set(module.key, module);
}
return { domestic, war, personality };
return { domestic, war, personality, nation };
};
// 특성 레지스트리를 General/전투 파이프라인용 모듈 목록으로 변환한다.
@@ -227,10 +238,12 @@ export const createTraitModules = <TriggerState extends GeneralTriggerState = Ge
new TraitGeneralActionRouter<TriggerState>('domestic', registry),
new TraitGeneralActionRouter<TriggerState>('war', registry),
new TraitGeneralActionRouter<TriggerState>('personality', registry),
new TraitGeneralActionRouter<TriggerState>('nation', registry),
],
war: [
new TraitWarActionRouter<TriggerState>('domestic', registry),
new TraitWarActionRouter<TriggerState>('war', registry),
new TraitWarActionRouter<TriggerState>('personality', registry),
new TraitWarActionRouter<TriggerState>('nation', registry),
],
});