Complete Cocos Creator port with level bundles, themes, and tooling.
Adds level prefabs, theme assets, audio, extensions, and deployment scripts for the Unity WebGL migration. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,47 +1,94 @@
|
||||
import { Direction } from '../core/Define';
|
||||
/**
|
||||
* 关卡注册表 — 统一从 LevelDatabase(单一 JSON)读取
|
||||
*/
|
||||
import { LevelConfig } from './LevelTypes';
|
||||
import { LEVELS_600 } from './levels-600.generated';
|
||||
import { LEVEL_ID_BASE } from './LevelIds';
|
||||
|
||||
/** 额外关卡(多人等) */
|
||||
const EXTRA_LEVELS: Record<number, LevelConfig> = {
|
||||
601: {
|
||||
levelID: 601,
|
||||
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: [
|
||||
{ x: 0, y: 0, kind: 'player', playerDirection: Direction.North },
|
||||
{ x: 6, y: 6, kind: 'prop' },
|
||||
{ x: -1, y: 2, kind: 'prop' },
|
||||
],
|
||||
},
|
||||
999001: {
|
||||
levelID: 999001,
|
||||
boundary: { x: 999, y: 999 },
|
||||
spawns: [
|
||||
{ x: -9, y: -9, kind: 'player', playerDirection: Direction.South },
|
||||
{ x: 9, y: 9, kind: 'player', playerDirection: Direction.North },
|
||||
{ x: -9, y: -10, kind: 'vehicle', vehicleDirection: Direction.North },
|
||||
{ x: 9, y: 10, kind: 'vehicle', vehicleDirection: Direction.South },
|
||||
],
|
||||
},
|
||||
};
|
||||
spawns: [],
|
||||
cocosPrefab: `level-prefabs/Level${levelID}`,
|
||||
theme: 'sanxing',
|
||||
};
|
||||
}
|
||||
|
||||
const allLevels: Record<number, LevelConfig> = {
|
||||
...LEVELS_600,
|
||||
...EXTRA_LEVELS,
|
||||
};
|
||||
/** @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 allLevels[levelID] ?? null;
|
||||
return dbGet(levelID);
|
||||
}
|
||||
|
||||
export function hasLevel(levelID: number): boolean {
|
||||
return levelID in allLevels;
|
||||
return dbHas(levelID);
|
||||
}
|
||||
|
||||
export function registerLevel(config: LevelConfig) {
|
||||
allLevels[config.levelID] = config;
|
||||
dbSet(config);
|
||||
}
|
||||
|
||||
export function addLevel(config: LevelConfig) {
|
||||
dbAdd(config);
|
||||
}
|
||||
|
||||
export function removeLevel(levelID: number) {
|
||||
dbRemove(levelID);
|
||||
}
|
||||
|
||||
export function getLevelCount(): number {
|
||||
return Object.keys(allLevels).length;
|
||||
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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user