Adds level prefabs, theme assets, audio, extensions, and deployment scripts for the Unity WebGL migration. Co-authored-by: Cursor <cursoragent@cursor.com>
95 lines
2.3 KiB
TypeScript
95 lines
2.3 KiB
TypeScript
/**
|
||
* 关卡注册表 — 统一从 LevelDatabase(单一 JSON)读取
|
||
*/
|
||
import { LevelConfig } from './LevelTypes';
|
||
import { LEVEL_ID_BASE } from './LevelIds';
|
||
|
||
export { LEVEL_ID_BASE, isGameLevelId } from './LevelIds';
|
||
import {
|
||
getLevelConfig as dbGet,
|
||
hasLevel as dbHas,
|
||
getLevelIds as dbIds,
|
||
getLevelCount as dbCount,
|
||
nextLevelId as dbNext,
|
||
prevLevelId as dbPrev,
|
||
setLevel as dbSet,
|
||
removeLevel as dbRemove,
|
||
addLevel as dbAdd,
|
||
loadLevelDatabase,
|
||
isLevelDatabaseReady,
|
||
MIN_LEVEL_ID as dbMin,
|
||
MAX_LEVEL_ID as dbMax,
|
||
} from './LevelDatabase';
|
||
|
||
export { loadLevelDatabase, isLevelDatabaseReady };
|
||
|
||
export function getMinLevelId(): number {
|
||
return isLevelDatabaseReady() ? dbMin() : LEVEL_ID_BASE;
|
||
}
|
||
|
||
export function getMaxLevelId(): number {
|
||
return isLevelDatabaseReady() ? dbMax() : LEVEL_ID_BASE;
|
||
}
|
||
|
||
/**
|
||
* 主站 SendMessage(levelID) → 查 Cocos 关卡库;无条目时按 Level{id}.prefab 加载。
|
||
*/
|
||
export function resolveLevelConfig(levelID: number): LevelConfig | null {
|
||
const cfg = dbGet(levelID);
|
||
if (cfg) return cfg;
|
||
if (levelID <= 0) return null;
|
||
return {
|
||
levelID,
|
||
boundary: { x: 20, y: 20 },
|
||
spawns: [],
|
||
cocosPrefab: `level-prefabs/Level${levelID}`,
|
||
theme: 'sanxing',
|
||
};
|
||
}
|
||
|
||
/** @deprecated 请用 getMinLevelId() / getMaxLevelId() */
|
||
export let MIN_LEVEL_ID = LEVEL_ID_BASE;
|
||
/** @deprecated 请用 getMaxLevelId() */
|
||
export let MAX_LEVEL_ID = LEVEL_ID_BASE;
|
||
|
||
export function refreshLevelIdBounds() {
|
||
MIN_LEVEL_ID = getMinLevelId();
|
||
MAX_LEVEL_ID = getMaxLevelId();
|
||
}
|
||
|
||
export function getLevelConfig(levelID: number): LevelConfig | null {
|
||
return dbGet(levelID);
|
||
}
|
||
|
||
export function hasLevel(levelID: number): boolean {
|
||
return dbHas(levelID);
|
||
}
|
||
|
||
export function registerLevel(config: LevelConfig) {
|
||
dbSet(config);
|
||
}
|
||
|
||
export function addLevel(config: LevelConfig) {
|
||
dbAdd(config);
|
||
}
|
||
|
||
export function removeLevel(levelID: number) {
|
||
dbRemove(levelID);
|
||
}
|
||
|
||
export function getLevelCount(): number {
|
||
return dbCount();
|
||
}
|
||
|
||
export function getLevelIds(): number[] {
|
||
return dbIds();
|
||
}
|
||
|
||
export function nextLevelId(cur: number): number {
|
||
return dbNext(cur);
|
||
}
|
||
|
||
export function prevLevelId(cur: number): number {
|
||
return dbPrev(cur);
|
||
}
|