// Level Manager - handles multiple levels and level transitions import { Level } from './types'; import { createLevel1 } from './Level'; import { createLevel2 } from './Level2'; import { createLevel3 } from './Level3'; export type LevelTheme = 'overworld' | 'underground' | 'castle'; export interface LevelInfo { id: number; name: string; theme: LevelTheme; createLevel: () => Level; } export class LevelManager { private levels: LevelInfo[] = [ { id: 1, name: 'World 1-1', theme: 'overworld', createLevel: createLevel1, }, { id: 2, name: 'World 1-2', theme: 'underground', createLevel: createLevel2, }, { id: 3, name: 'World 1-3', theme: 'castle', createLevel: createLevel3, }, ]; private currentLevelIndex: number = 0; getCurrentLevel(): Level { return this.levels[this.currentLevelIndex].createLevel(); } getCurrentLevelInfo(): LevelInfo { return this.levels[this.currentLevelIndex]; } getLevelCount(): number { return this.levels.length; } getCurrentLevelNumber(): number { return this.currentLevelIndex + 1; } setLevel(levelIndex: number): Level | null { if (levelIndex >= 0 && levelIndex < this.levels.length) { this.currentLevelIndex = levelIndex; return this.getCurrentLevel(); } return null; } nextLevel(): Level | null { if (this.currentLevelIndex < this.levels.length - 1) { this.currentLevelIndex++; return this.getCurrentLevel(); } return null; // No more levels - game complete! } previousLevel(): Level | null { if (this.currentLevelIndex > 0) { this.currentLevelIndex--; return this.getCurrentLevel(); } return null; } resetToFirstLevel(): Level { this.currentLevelIndex = 0; return this.getCurrentLevel(); } isLastLevel(): boolean { return this.currentLevelIndex === this.levels.length - 1; } getAllLevels(): LevelInfo[] { return [...this.levels]; } }