Browse Source

音乐播放控制

181404010226 1 month ago
parent
commit
a67552e3b9
1 changed files with 23 additions and 51 deletions
  1. 23 51
      assets/scripts/LevelSystem/LevelConfigManager.ts

+ 23 - 51
assets/scripts/LevelSystem/LevelConfigManager.ts

@@ -40,27 +40,6 @@ interface EnemyWaveConfig {
     characteristics: string[];
 }
 
-/**
- * 关卡JSON文件配置项
- */
-@ccclass('LevelJsonConfig')
-export class LevelJsonConfig {
-    @property({
-        tooltip: '关卡ID'
-    })
-    public levelId: number = 1;
-
-    @property({
-        tooltip: '关卡名称'
-    })
-    public levelName: string = '';
-
-    @property({
-        type: JsonAsset,
-        tooltip: '关卡配置JSON文件'
-    })
-    public configFile: JsonAsset = null;
-}
 
 /**
  * 关卡配置管理器
@@ -76,10 +55,10 @@ export class LevelConfigManager extends Component {
     public totalLevels: number = 5;
 
     @property({
-        type: [LevelJsonConfig],
-        tooltip: '关卡配置列表(拖入对应的JSON文件)'
+        type: [JsonAsset],
+        tooltip: '关卡配置文件列表(按关卡序号排列)'
     })
-    public levelConfigs: LevelJsonConfig[] = [];
+    public levelConfigs: JsonAsset[] = [];
 
     // 缓存已加载的关卡配置
     private loadedConfigs: Map<number, LevelConfig> = new Map();
@@ -108,22 +87,13 @@ export class LevelConfigManager extends Component {
      * 验证关卡配置的完整性
      */
     private validateConfigs() {
-        // 检查是否所有关卡都有配置
+        // 检查是否所有关卡都有配置(按数组索引对应关卡ID)
         for (let i = 1; i <= this.totalLevels; i++) {
-            const config = this.levelConfigs.find(c => c.levelId === i);
-            if (!config) {
-                console.warn(`关卡 ${i} 缺少配置`);
-            } else if (!config.configFile) {
+            const configFile = this.levelConfigs[i - 1];
+            if (!configFile) {
                 console.warn(`关卡 ${i} 缺少JSON文件`);
             }
         }
-
-        // 检查是否有重复的关卡ID
-        const levelIds = this.levelConfigs.map(c => c.levelId);
-        const duplicates = levelIds.filter((id, index) => levelIds.indexOf(id) !== index);
-        if (duplicates.length > 0) {
-            console.error(`发现重复的关卡ID: ${duplicates.join(', ')}`);
-        }
     }
 
     /**
@@ -135,16 +105,16 @@ export class LevelConfigManager extends Component {
             return this.loadedConfigs.get(levelId);
         }
 
-        // 查找对应的配置项
-        const configItem = this.levelConfigs.find(c => c.levelId === levelId);
-        if (!configItem || !configItem.configFile) {
+        // 按数组索引查找对应的配置文件
+        const configFile = this.levelConfigs[levelId - 1];
+        if (!configFile) {
             console.error(`关卡 ${levelId} 配置不存在或缺少JSON文件`);
             return null;
         }
 
         try {
             // 解析JSON数据
-            const jsonData = configItem.configFile.json;
+            const jsonData = configFile.json;
             if (!jsonData) {
                 console.error(`关卡 ${levelId} JSON文件解析失败`);
                 return null;
@@ -240,26 +210,28 @@ export class LevelConfigManager extends Component {
      * 获取所有可用关卡ID列表
      */
     public getAvailableLevels(): number[] {
-        return this.levelConfigs
-            .filter(config => config.configFile !== null)
-            .map(config => config.levelId)
-            .sort((a, b) => a - b);
+        const ids: number[] = [];
+        for (let i = 0; i < this.levelConfigs.length; i++) {
+            if (this.levelConfigs[i]) {
+                ids.push(i + 1);
+            }
+        }
+        return ids.sort((a, b) => a - b);
     }
 
     /**
      * 获取关卡名称
      */
     public getLevelName(levelId: number): string {
-        const config = this.levelConfigs.find(c => c.levelId === levelId);
-        return config ? config.levelName : `关卡 ${levelId}`;
+        const asset = this.levelConfigs[levelId - 1];
+        return asset ? (asset.name || `关卡 ${levelId}`) : `关卡 ${levelId}`;
     }
 
     /**
      * 检查关卡是否已配置
      */
     public isLevelConfigured(levelId: number): boolean {
-        const config = this.levelConfigs.find(c => c.levelId === levelId);
-        return config !== undefined && config.configFile !== null;
+        return !!this.levelConfigs[levelId - 1];
     }
 
     /**
@@ -284,9 +256,9 @@ export class LevelConfigManager extends Component {
         console.log(`=== 所有关卡配置信息 ===`);
         console.log(`总关卡数: ${this.totalLevels}`);
         
-        for (const config of this.levelConfigs) {
-            console.log(`关卡 ${config.levelId}: ${config.levelName}`);
-            console.log(`  JSON文件: ${config.configFile ? config.configFile.name : '未设置'}`);
+        for (let i = 0; i < this.levelConfigs.length; i++) {
+            const asset = this.levelConfigs[i];
+            console.log(`关卡 ${i + 1}: ${asset ? asset.name : '未设置'}`);
         }
     }
 }