初始提交:三玩法 Web 原型与设计文档

- 玩法一 数字一笔:规则库、求解器、26 关、竖屏触摸 Web 原型、测试
- 玩法二 连连气球:连消畅玩版核心、Web 原型、Cocos 球槽组件与导出脚本
- 玩法三 六边一笔:规则库、求解器、10 关 + 转墙实验包、Web 原型、测试
- 产品文档、UI 设计规范、各玩法 GDD / HANDOFF
- 文档移除全部外部参考作引用;删除玩法二 v0 旧稿
This commit is contained in:
cabinw
2026-09-16 14:30:59 +08:00
commit 8026e4628d
169 changed files with 22162 additions and 0 deletions
@@ -0,0 +1,20 @@
import { mkdir, rm, readFile, writeFile, copyFile } from 'node:fs/promises';
import { resolve, join } from 'node:path';
const target = resolve(process.argv[2] || 'cocos/export/02-connect-1234');
// 默认目录是可再生构建产物,清掉 v1 遗留;自定义导出目录不删除用户文件。
if (!process.argv[2]) await rm(target, {recursive:true, force:true});
for (const dir of ['src', 'levels', 'adapters']) await mkdir(join(target, dir), { recursive: true });
const active = ['flow.ts', 'flow-rules.ts', 'cascade.ts', 'supply.ts', 'flow-animation.ts', 'record.ts', 'input.ts', 'rules.ts', 'types.ts', 'config.ts', 'physics.ts', 'random.ts', 'view.ts', 'storage.ts'];
for (const name of active) {
if (!name.endsWith('.ts')) continue;
let source = await readFile(join('src', name), 'utf8');
// Creator 不必依赖 bundler 的 JSON module 支持,导出时生成等价 TypeScript 数据模块。
source = source.replace("'../levels/spawn.json'", "'../levels/spawn-data'").replace("'../levels/campaign.json'", "'../levels/campaign-data'");
await writeFile(join(target, 'src', name), source);
}
for (const name of ['spawn']) {
const json = await readFile(`levels/${name}.json`, 'utf8');
await writeFile(join(target, 'levels', `${name}-data.ts`), `// 由 export-cocos.mjs 生成;在原始 levels/${name}.json 编辑。\nexport default ${json.trim()};\n`);
}
await copyFile('cocos/Connect1234Board.ts', join(target, 'adapters/Connect1234Board.ts'));
console.log(`Cocos 迁移包已导出:${target}`);