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:
2026-06-16 15:30:58 +08:00
parent cba5105908
commit d393302388
6248 changed files with 17322729 additions and 11036 deletions

View File

@@ -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);
}