troytt
|
6e6d8ed022
|
feat: 将所有动态实体加入地形深度排序渲染列队 (fixes #10)
将 monsters、npcs、projectiles、ground items 等 Engine 内的物理对象一并收集,
利用相同的 `cell.x + cell.y` 画家排序与 `act-scene.ts` 里由预处理好的 `walls` / `objectDrawables` 进行混合深度渲染。
此改变为后续加载真实的实体资源图集打下渲染基础。
|
2026-09-14 12:40:48 +00:00 |
troytt
|
38d06cdb28
|
feat: 抽取独立无状态 GameEngine 领域与相关逻辑
将 map-scene 中负责每帧更新逻辑与状态管理的巨量代码抽取成 `src/game/engine.ts` 内的 `GameEngine`。
解耦模拟与 WebGL 和 DOM,保证可以无界面测试。
并引入了 `tests/engine.test.ts` 自动化单元测试(Vitest)。
|
2026-09-14 12:37:29 +00:00 |
troytt
|
4d47a56e68
|
feat(mpq): 实现 ADPCM 与 Huffman 音频解码并接入 Web Audio (fixes #13)
- 基于 StormLib 的 C++ 原型,实现了 4-bit IMA ADPCM 解码(单声道与双声道分离)。
- 实现 FGK 自适应 Huffman 树解码,从给定分布表构建静态初始树进而按流插入权重并重平衡。
- 保证严格使用位运算确保 16-bit 符号处理正确,增加对应 ADPCM 解码保护边界。
- 新增 `AudioManager` 基于 Web Audio API 设计跨文件懒加载及混音管理,避免在未配置时报错。
- `tests/mpq-audio.test.ts` 加入覆盖测试,并含 ADPCM 打包构造器,证明解压流程完整有效。
- `package.json` 添加 `verify:audio` 脚本,可快速校验环境依赖导入。
|
2026-09-14 12:30:21 +00:00 |
troytt
|
f4dd55be6c
|
fix(formats): 按官方哈希桶格式重写 tbl 解码器与编码器 (fixes #8)
- 重构了 `src/formats/tbl.ts` 以正确读取 21字节魔数头与 17字节哈希桶节点
- 使用了 NUL 终止与正确的字节长度计算方式,修正之前错误的 UTF-16 假设
- 支持通过 `TextDecoder` 选择代码页 (默认为 windows-1252,支持 gbk 等 fallback)
- 暴露了原始的 O(1) 线性探测查询函数 `lookupTblFast` 和哈希函数 `tblHash`
- 对 `scripts/lib/tbl-writer.ts` 及其验证脚本进行了重写,以正确写入和校验哈希桶布局
- 增加了完整涵盖功能与越界校验的 vitest 单元测试,并在真实的 113c patchstring.tbl 下实现了 1169/1169 哈希全量验证通过
- 将测试文件加入项目目录
|
2026-09-14 12:30:07 +00:00 |
troytt
|
1a81693d74
|
test: 引入 Vitest 测试框架、覆盖率统计与 CI 流水线 (fixes #14)
- 安装了 `vitest` 和 `@vitest/coverage-v8`,配置支持对 `tests/**/*.test.ts` 文件做测试。
- 将基于 `process.exit(1)` 的断言脚本平滑翻译为了符合 Vitest 生态的 `test` 与 `expect` 结构。
- 加入了 Github Actions (Gitea Actions) 语法的 CI 文件,分别验证 20.x, 22.x 下的测试通过情况。
- 原有的 `scripts/verify-*.ts` 等 CLI 脚本功能照常运作,且依赖缺失时通过 skipIf 进行安全跳过。
|
2026-09-14 12:25:28 +00:00 |