This commit is contained in:
Evilom
2026-05-12 00:11:56 +08:00
parent 83e99a7ef8
commit 93961c10bb
29 changed files with 3134 additions and 454 deletions
+26 -6
View File
@@ -47,8 +47,25 @@ src/
## Data Architecture (全部可 Mod 覆盖)
所有游戏数据通过 `DataRegistry` 统一加载和管理。Mod 可覆盖任何数据类型:
- **DataRegistry**: 中央数据注册表,加载 JSON 文件,监听 `mod:dataResolved` 事件
- **数据类型**: items, weapons, armor, enemies, quests, races, skills, perks, standingStones, spells, recipes
- **DataRegistry**: 中央数据注册表,加载 24 个 JSON 文件,监听 `mod:dataResolved` 事件
- **19 个数据域**: items, armor, enemies, races, skills, perkTrees, spells, shouts, standingStones, quests, recipes, enchantments, soulGems, smithing, cooking, dialogue, transforms, vampireStages, gameConfig
- **JSON 数据文件** (24 个):
- `src/data/items/` — items.json, weapons.json, armor.json, enchantments.json, soul-gems.json
- `src/data/spells/` — spells.json, shouts.json
- `src/data/enemies/` — enemies.json
- `src/data/quests/` — quests.json
- `src/data/races/` — races.json
- `src/data/skills/` — skills.json, perks.json, werewolf-perks.json, vampire-perks.json
- `src/data/world/` — standing-stones.json
- `src/data/alchemy/` — ingredients.json, potions.json
- `src/data/crafting/` — smithing.json, cooking.json
- `src/data/dialogue/` — trees.json
- `src/data/transforms.json`, `vampire-stages.json`, `game-config.json`
- **系统数据驱动化**: 11 个游戏系统全部从 DataRegistry 读取数据,不再硬编码:
- MagicSystem, CombatSystem, LevelingSystem, RegenSystem
- EnchantingSystem, SmithingSystem, AlchemySystem, CookingSystem
- TransformationSystem, VampireSystem, DialogueSystem
- **循环依赖解决**: CombatSystem/MagicSystem/QuestSystem/DialogueSystem 通过 `globalThis` 注册,ScriptContext lazy 访问
- **地图数据**: 由 MapManager 从 `zones.json` 加载,支持 Mod 覆盖
- **UI 组件**: CharacterCreationUI/SkillTreeUI 从 DataRegistry 读取数据,不再直接导入 JSON
@@ -211,11 +228,14 @@ src/
- **高级系统**: 狼人变形 + 吸血鬼感染 + 传奇技能
## Mod 生态
- Mod 格式: JSON 数据文件 + manifest.json 清单
- 加载方式: 深度合并,后加载覆盖先加载
- 事件钩子: GameEvents.on('event:name', callback)
- Mod 格式: `ModPackage` (manifest + data + scripts),通过 `modLoader.loadMod()` 加载
- 加载方式: 深度合并,按 priority 排序后加载,后加载覆盖先加载
- 依赖检查: `manifest.dependencies` 声明前置依赖,未满足则拒绝加载
- 冲突检测: 同域同 ID 多个 Mod 声明冲突,最后一个赢
- 事件钩子: `mod:loaded`, `mod:dataResolved` 事件
- Mod 管理器: 启用/禁用/排序/冲突检测
- **全部数据可覆盖**: 所有游戏数据 (物品/武器/护甲/敌人/任务/种族/技能/天赋/站立之石/法术/配方/地图) 均通过 DataRegistry 或 MapManager 加载,Mod 可覆盖任何数据
- **19 个数据域全部可覆盖**: items, armor, enemies, races, skills, perkTrees, spells, shouts, standingStones, quests, recipes, enchantments, soulGems, smithing, cooking, dialogue, transforms, vampireStages, gameConfig
- **E2E 测试验证**: `src/mods/ModE2E.test.ts` — 10 个测试覆盖数据覆盖、新数据添加、优先级排序、依赖检查、系统热重载
## Mod 脚本系统
Mod 可为游戏实体附加自定义脚本逻辑,与原版上古卷轴的脚本系统一致。