Solidify campaign progression state
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
import Phaser from 'phaser';
|
||||
import { soundDirector } from '../audio/SoundDirector';
|
||||
import { firstBattleVictoryPages } from '../data/scenario';
|
||||
import { hasCampaignSave, loadCampaignState, startNewCampaign } from '../state/campaignState';
|
||||
import { palette } from '../ui/palette';
|
||||
|
||||
export class TitleScene extends Phaser.Scene {
|
||||
@@ -160,8 +162,9 @@ export class TitleScene extends Phaser.Scene {
|
||||
this.add.rectangle(menuX, menuY - 126, 186, 2, palette.gold, 0.7);
|
||||
this.add.rectangle(menuX, menuY + 126, 186, 2, palette.gold, 0.36);
|
||||
|
||||
const canContinue = hasCampaignSave();
|
||||
this.createMenuButton(menuX, menuY - 70, '새 게임', true, () => this.startGame());
|
||||
this.createMenuButton(menuX, menuY, '이어하기', false, () => undefined);
|
||||
this.createMenuButton(menuX, menuY, '이어하기', canContinue, () => this.continueGame());
|
||||
this.createMenuButton(menuX, menuY + 70, '설정', true, () => this.openSettingsPanel(menuX, menuY));
|
||||
}
|
||||
|
||||
@@ -285,6 +288,31 @@ export class TitleScene extends Phaser.Scene {
|
||||
soundDirector.start();
|
||||
soundDirector.resume();
|
||||
soundDirector.playSelect();
|
||||
startNewCampaign();
|
||||
this.scene.start('StoryScene');
|
||||
}
|
||||
|
||||
private continueGame() {
|
||||
soundDirector.start();
|
||||
soundDirector.resume();
|
||||
soundDirector.playSelect();
|
||||
|
||||
const campaign = loadCampaignState();
|
||||
if (campaign.step === 'first-camp') {
|
||||
this.scene.start('CampScene');
|
||||
return;
|
||||
}
|
||||
|
||||
if (campaign.step === 'first-battle') {
|
||||
this.scene.start('BattleScene');
|
||||
return;
|
||||
}
|
||||
|
||||
if (campaign.step === 'first-victory-story') {
|
||||
this.scene.start('StoryScene', { pages: firstBattleVictoryPages, nextScene: 'TitleScene' });
|
||||
return;
|
||||
}
|
||||
|
||||
this.scene.start('StoryScene');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user