| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- """
- 测试burnEffect字段深度合并功能
- """
- import json
- import copy
- from pathlib import Path
- def deep_merge_weapon_config(existing_weapon, new_weapon):
- """深度合并武器配置,保留现有武器中表格没有的字段"""
- # 创建新武器的深拷贝作为基础
- merged = copy.deepcopy(new_weapon)
-
- # 递归合并函数,将现有武器中新武器没有的字段添加到合并结果中
- def preserve_existing_fields(target, existing):
- for key, value in existing.items():
- if key not in target:
- # 现有武器有但新武器没有的字段,保留
- target[key] = copy.deepcopy(value)
- elif isinstance(target[key], dict) and isinstance(value, dict):
- # 如果两者都是字典,递归处理
- preserve_existing_fields(target[key], value)
-
- # 执行深度合并,保留现有武器中的额外字段
- preserve_existing_fields(merged, existing_weapon)
- return merged
- def test_burn_effect_merge():
- """测试burnEffect字段合并"""
- print("=== 测试burnEffect字段深度合并 ===")
-
- # 模拟现有武器配置(包含burnEffect)
- existing_weapon = {
- "id": "saw_grass",
- "name": "锯齿草",
- "bulletConfig": {
- "visual": {
- "bulletPrefab": "bullets/Saw_GrassBullet",
- "hitEffect": "Animation/WeaponTx/tx0002/tx0002",
- "trailEffect": None,
- "burnEffect": "Animation/Effects/burn_effect" # 现有的额外字段
- }
- }
- }
-
- # 模拟新武器配置(来自Excel,没有burnEffect)
- new_weapon = {
- "id": "saw_grass",
- "name": "锯齿草",
- "bulletConfig": {
- "visual": {
- "bulletPrefab": "bullets/Saw_GrassBullet",
- "hitEffect": "Animation/WeaponTx/tx0002/tx0002",
- "trailEffect": None
- }
- }
- }
-
- print("现有武器visual字段:")
- print(json.dumps(existing_weapon["bulletConfig"]["visual"], indent=2, ensure_ascii=False))
-
- print("\n新武器visual字段:")
- print(json.dumps(new_weapon["bulletConfig"]["visual"], indent=2, ensure_ascii=False))
-
- # 执行深度合并
- merged_weapon = deep_merge_weapon_config(existing_weapon, new_weapon)
-
- print("\n合并后visual字段:")
- print(json.dumps(merged_weapon["bulletConfig"]["visual"], indent=2, ensure_ascii=False))
-
- # 检查burnEffect是否被保留
- if "burnEffect" in merged_weapon["bulletConfig"]["visual"]:
- print("\n✓ 成功!burnEffect字段已保留")
- print(f"burnEffect值: {merged_weapon['bulletConfig']['visual']['burnEffect']}")
- return True
- else:
- print("\n✗ 失败!burnEffect字段丢失")
- return False
- if __name__ == "__main__":
- success = test_burn_effect_merge()
- if success:
- print("\n深度合并功能正常工作")
- else:
- print("\n深度合并功能存在问题")
|