Recover blank campaign battle titles

This commit is contained in:
2026-07-05 12:07:56 +09:00
parent d48726c21c
commit 3e7a7c2478
2 changed files with 9 additions and 10 deletions

View File

@@ -446,6 +446,7 @@ try {
gold: 320,
firstBattleReport: {
battleId: 'first-battle-zhuo-commandery',
battleTitle: ' ',
outcome: 'victory',
turnNumber: '4',
rewardGold: '120',
@@ -542,7 +543,7 @@ try {
);
assert(
malformedReport.firstBattleReport?.battleId === 'first-battle-zhuo-commandery' &&
malformedReport.firstBattleReport.battleTitle.length > 0 &&
malformedReport.firstBattleReport.battleTitle === firstScenario.title &&
malformedReport.firstBattleReport.turnNumber === 4 &&
malformedReport.firstBattleReport.objectives.length === 24 &&
malformedReport.firstBattleReport.objectives[0].rewardGold === 80 &&
@@ -609,7 +610,7 @@ try {
battleHistory: {
'wrong-history-key': {
battleId: 'first-battle-zhuo-commandery',
battleTitle: 'Zhuo Commandery',
battleTitle: ' ',
outcome: 'victory',
rewardGold: '120',
itemRewards: ['Bean', 12, 'Bean'],
@@ -724,6 +725,7 @@ try {
assert(
Object.keys(malformedHistory.battleHistory).length === 1 &&
malformedHistory.battleHistory['first-battle-zhuo-commandery']?.rewardGold === 120 &&
malformedHistory.battleHistory['first-battle-zhuo-commandery']?.battleTitle === firstScenario.title &&
malformedHistory.battleHistory['wrong-history-key'] === undefined,
`Expected malformed battle history entries to be filtered while valid settlements are keyed by battleId: ${JSON.stringify(malformedHistory)}`
);

View File

@@ -1008,12 +1008,12 @@ function normalizeCampaignBattleSettlement(value: unknown): CampaignBattleSettle
const settlement = value as Partial<CampaignBattleSettlement>;
const battleId = typeof settlement.battleId === 'string' ? settlement.battleId : '';
const battleTitle = normalizeDisplayString(settlement.battleTitle) || battleScenarios[battleId as BattleScenarioId]?.title;
const completedAt = normalizeCampaignTimestamp(settlement.completedAt);
if (
battleId.length === 0 ||
!(battleId in battleScenarios) ||
typeof settlement.battleTitle !== 'string' ||
settlement.battleTitle.length === 0 ||
!battleTitle ||
(settlement.outcome !== 'victory' && settlement.outcome !== 'defeat') ||
!completedAt
) {
@@ -1022,7 +1022,7 @@ function normalizeCampaignBattleSettlement(value: unknown): CampaignBattleSettle
return {
battleId,
battleTitle: normalizeDisplayString(settlement.battleTitle),
battleTitle,
outcome: settlement.outcome,
rewardGold: normalizeNonNegativeInteger(settlement.rewardGold),
itemRewards: uniqueStrings(settlement.itemRewards),
@@ -1198,17 +1198,14 @@ function normalizeFirstBattleReport(report: unknown): FirstBattleReport | undefi
return undefined;
}
const battleTitle =
typeof report.battleTitle === 'string' && report.battleTitle.length > 0
? report.battleTitle
: battleScenarios[battleId as BattleScenarioId]?.title;
const battleTitle = normalizeDisplayString(report.battleTitle) || battleScenarios[battleId as BattleScenarioId]?.title;
if (!battleTitle) {
return undefined;
}
return {
battleId,
battleTitle: normalizeDisplayString(battleTitle),
battleTitle,
outcome: report.outcome,
turnNumber: normalizeNonNegativeInteger(report.turnNumber),
rewardGold: normalizeNonNegativeInteger(report.rewardGold),