Require visible unlock reward labels
This commit is contained in:
@@ -16,7 +16,7 @@ const sortieFlowAfterBattleIds = extractSortieFlowAfterBattleIds(campaignFlowSou
|
|||||||
const sortieFlowCampaignSteps = extractSortieFlowCampaignSteps(campaignFlowSource);
|
const sortieFlowCampaignSteps = extractSortieFlowCampaignSteps(campaignFlowSource);
|
||||||
const sortieFlowNextBattleIds = extractSortieFlowNextBattleIds(campaignFlowSource, battleScenarioIds);
|
const sortieFlowNextBattleIds = extractSortieFlowNextBattleIds(campaignFlowSource, battleScenarioIds);
|
||||||
const sortieFlowTitleBattleIds = extractSortieFlowTitleBattleIds(campaignFlowSource, battleScenarioIds);
|
const sortieFlowTitleBattleIds = extractSortieFlowTitleBattleIds(campaignFlowSource, battleScenarioIds);
|
||||||
const campaignRewardUnlockBattleIds = extractCampaignRewardUnlockBattleIds(battlesSource, battleScenarioIds);
|
const campaignRewardUnlocks = extractCampaignRewardUnlocks(battlesSource, battleScenarioIds);
|
||||||
const sortieFlowDisplayFields = ['eyebrow', 'title', 'description', 'rewardHint'];
|
const sortieFlowDisplayFields = ['eyebrow', 'title', 'description', 'rewardHint'];
|
||||||
|
|
||||||
const failures = [];
|
const failures = [];
|
||||||
@@ -104,9 +104,11 @@ for (const flowKey of sortieFlowKeys) {
|
|||||||
assert(/\bunavailableNotice\s*:/.test(flowBody), `Non-battle sortie flow ${flowKey} must provide an unavailableNotice for repeat clicks`);
|
assert(/\bunavailableNotice\s*:/.test(flowBody), `Non-battle sortie flow ${flowKey} must provide an unavailableNotice for repeat clicks`);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const [battleId, unlockBattleId] of campaignRewardUnlockBattleIds.entries()) {
|
for (const [battleId, unlock] of campaignRewardUnlocks.entries()) {
|
||||||
|
const { battleId: unlockBattleId, label } = unlock;
|
||||||
const nextBattleId = sortieFlowNextBattleIds.get(battleId);
|
const nextBattleId = sortieFlowNextBattleIds.get(battleId);
|
||||||
assert(battleIds.has(unlockBattleId), `Battle ${battleId} campaign reward unlocks unknown battle id: ${unlockBattleId}`);
|
assert(battleIds.has(unlockBattleId), `Battle ${battleId} campaign reward unlocks unknown battle id: ${unlockBattleId}`);
|
||||||
|
assert(label.length > 0, `Battle ${battleId} campaign reward unlock ${unlockBattleId} must provide a visible unlockLabel`);
|
||||||
assert(nextBattleId, `Battle ${battleId} campaign reward unlocks ${unlockBattleId} but has no sortie flow next battle`);
|
assert(nextBattleId, `Battle ${battleId} campaign reward unlocks ${unlockBattleId} but has no sortie flow next battle`);
|
||||||
assert(
|
assert(
|
||||||
nextBattleId === unlockBattleId,
|
nextBattleId === unlockBattleId,
|
||||||
@@ -253,14 +255,18 @@ function extractSortieFlowAfterBattleIds(source, scenarioIds) {
|
|||||||
return entries;
|
return entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
function extractCampaignRewardUnlockBattleIds(source, scenarioIds) {
|
function extractCampaignRewardUnlocks(source, scenarioIds) {
|
||||||
const entries = new Map();
|
const entries = new Map();
|
||||||
const declarationPattern = /export const (\w+BattleScenario)\b[\s\S]*?^\};/gm;
|
const declarationPattern = /export const (\w+BattleScenario)\b[\s\S]*?^\};/gm;
|
||||||
for (const match of source.matchAll(declarationPattern)) {
|
for (const match of source.matchAll(declarationPattern)) {
|
||||||
const battleId = scenarioIds.get(match[1]);
|
const battleId = scenarioIds.get(match[1]);
|
||||||
const unlockMatch = /unlockBattleId:\s*'([^']+)'/.exec(match[0]);
|
const unlockMatch = /unlockBattleId:\s*'([^']+)'/.exec(match[0]);
|
||||||
|
const labelMatch = /unlockLabel:\s*'([^']+)'/.exec(match[0]);
|
||||||
if (battleId && unlockMatch) {
|
if (battleId && unlockMatch) {
|
||||||
entries.set(battleId, unlockMatch[1]);
|
entries.set(battleId, {
|
||||||
|
battleId: unlockMatch[1],
|
||||||
|
label: (labelMatch?.[1] ?? '').trim()
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return entries;
|
return entries;
|
||||||
|
|||||||
Reference in New Issue
Block a user