feat: align campaign audiovisual story flow

This commit is contained in:
2026-07-23 02:14:59 +09:00
parent 8bda36d46d
commit a9e401aedf
18 changed files with 1405 additions and 243 deletions

View File

@@ -171,6 +171,7 @@ import {
campaignVictoryRewardPresentation,
campaignSortiePresetIds,
campaignReserveTrainingFocusDefinitions,
completeCampaignAftermath,
defaultCampaignReserveTrainingFocusId,
dismissCampaignVictoryRewardNotice,
ensureCampaignRosterUnits,
@@ -825,6 +826,7 @@ type CampSceneData = {
openSortieImprovement?: boolean;
retryBattleId?: BattleScenarioId;
skipIntroStory?: boolean;
completedAftermathBattleId?: BattleScenarioId;
};
const campSupplies: CampSupplyDefinition[] = [
@@ -11398,6 +11400,9 @@ export class CampScene extends Phaser.Scene {
init(data?: CampSceneData) {
this.ownedCampTextureKeys.clear();
if (data?.completedAftermathBattleId) {
completeCampaignAftermath(data.completedAftermathBattleId);
}
this.openSortiePrepOnCreate = Boolean(data?.openSortiePrep);
this.openSortieImprovementOnCreate = Boolean(data?.openSortieImprovement);
this.retrySortieBattleId = data?.retryBattleId;
@@ -19858,14 +19863,18 @@ export class CampScene extends Phaser.Scene {
}
this.startCampNavigationWithCampaignStep(flow.campaignStep, 'StoryScene', {
pages: flow.pages,
nextScene: flow.campaignStep === 'ending-complete' ? 'EndingScene' : 'CampScene'
nextScene: flow.campaignStep === 'ending-complete' ? 'EndingScene' : 'CampScene',
presentationBattleId: flow.afterBattleId,
presentationStage: flow.campaignStep === 'ending-complete' ? 'aftermath' : 'story'
});
return;
}
if (flow.pages.length > 0) {
this.startCampNavigation('StoryScene', {
pages: flow.pages,
nextScene: 'CampScene'
nextScene: 'CampScene',
presentationBattleId: flow.afterBattleId,
presentationStage: 'story'
});
return;
}
@@ -19905,6 +19914,8 @@ export class CampScene extends Phaser.Scene {
this.startCampNavigationWithCampaignStep(flow.campaignStep, 'StoryScene', {
pages: flow.pages,
nextScene: 'BattleScene',
presentationBattleId: flow.nextBattleId,
presentationStage: 'story',
nextSceneData: {
battleId: flow.nextBattleId,
selectedSortieUnitIds,