验证BallController配置应用.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. BallController配置应用验证脚本
  5. 用于验证BallController.ts是否正确应用了ballController.json中的配置数据
  6. """
  7. import json
  8. import os
  9. from pathlib import Path
  10. def verify_ballcontroller_config_application():
  11. """验证BallController配置应用"""
  12. print("=== BallController配置应用验证 ===")
  13. # 检查配置文件
  14. config_file = Path("assets/resources/data/ballController.json")
  15. if not config_file.exists():
  16. print(f"❌ 配置文件不存在: {config_file}")
  17. return False
  18. # 读取配置数据
  19. try:
  20. with open(config_file, 'r', encoding='utf-8') as f:
  21. config_data = json.load(f)
  22. print(f"✓ 配置文件读取成功: {config_file}")
  23. except Exception as e:
  24. print(f"❌ 配置文件读取失败: {e}")
  25. return False
  26. # 检查BallController.ts文件
  27. ballcontroller_file = Path("assets/scripts/CombatSystem/BallController.ts")
  28. if not ballcontroller_file.exists():
  29. print(f"❌ BallController.ts文件不存在: {ballcontroller_file}")
  30. return False
  31. # 读取BallController.ts内容
  32. try:
  33. with open(ballcontroller_file, 'r', encoding='utf-8') as f:
  34. ts_content = f.read()
  35. print(f"✓ BallController.ts文件读取成功")
  36. except Exception as e:
  37. print(f"❌ BallController.ts文件读取失败: {e}")
  38. return False
  39. # 验证配置接口
  40. config_interface_file = Path("assets/scripts/Core/ConfigManager.ts")
  41. if not config_interface_file.exists():
  42. print(f"❌ ConfigManager.ts文件不存在: {config_interface_file}")
  43. return False
  44. try:
  45. with open(config_interface_file, 'r', encoding='utf-8') as f:
  46. interface_content = f.read()
  47. print(f"✓ ConfigManager.ts文件读取成功")
  48. except Exception as e:
  49. print(f"❌ ConfigManager.ts文件读取失败: {e}")
  50. return False
  51. print(f"\n=== 配置数据分析 ===")
  52. print(f"配置文件中的参数数量: {len(config_data)}")
  53. # 验证关键配置参数
  54. key_params = {
  55. 'baseSpeed': config_data.get('baseSpeed'),
  56. 'maxReflectionRandomness': config_data.get('maxReflectionRandomness'),
  57. 'FIRE_COOLDOWN': config_data.get('FIRE_COOLDOWN'),
  58. 'ballRadius': config_data.get('ballRadius'),
  59. 'maxAttempts': config_data.get('maxAttempts')
  60. }
  61. for param, value in key_params.items():
  62. print(f"{param}: {value}")
  63. # 检查接口定义
  64. print(f"\n=== 接口定义检查 ===")
  65. interface_checks = {
  66. 'baseSpeed: number': 'baseSpeed: number' in interface_content,
  67. 'maxReflectionRandomness: number': 'maxReflectionRandomness: number' in interface_content,
  68. 'FIRE_COOLDOWN: number': 'FIRE_COOLDOWN: number' in interface_content,
  69. 'ballRadius: number': 'ballRadius: number' in interface_content,
  70. 'maxAttempts: number': 'maxAttempts: number' in interface_content
  71. }
  72. for check, result in interface_checks.items():
  73. status = "✓" if result else "❌"
  74. print(f"{status} {check}: {result}")
  75. # 检查BallController中的配置应用
  76. print(f"\n=== BallController配置应用检查 ===")
  77. application_checks = {
  78. '配置加载方法': 'loadConfig()' in ts_content,
  79. '配置应用方法': 'applyConfig()' in ts_content,
  80. 'baseSpeed应用': 'this.baseSpeed = this.config.baseSpeed' in ts_content,
  81. 'FIRE_COOLDOWN应用': 'this.FIRE_COOLDOWN = this.config.FIRE_COOLDOWN' in ts_content,
  82. 'maxAttempts getter': 'get maxAttempts()' in ts_content,
  83. '默认配置包含maxAttempts': 'maxAttempts: 50' in ts_content
  84. }
  85. for check, result in application_checks.items():
  86. status = "✓" if result else "❌"
  87. print(f"{status} {check}: {result}")
  88. # 检查配置值的一致性
  89. print(f"\n=== 配置值一致性检查 ===")
  90. # 检查JSON中的值是否与预期一致
  91. expected_values = {
  92. 'baseSpeed': 30,
  93. 'FIRE_COOLDOWN': 0.05,
  94. 'ballRadius': 25,
  95. 'maxAttempts': 50
  96. }
  97. consistency_passed = True
  98. for param, expected in expected_values.items():
  99. actual = config_data.get(param)
  100. if actual == expected:
  101. print(f"✓ {param}: {actual} (符合预期)")
  102. else:
  103. print(f"❌ {param}: {actual} (预期: {expected})")
  104. consistency_passed = False
  105. # 总结
  106. print(f"\n=== 验证总结 ===")
  107. all_interface_checks_passed = all(interface_checks.values())
  108. all_application_checks_passed = all(application_checks.values())
  109. if all_interface_checks_passed and all_application_checks_passed and consistency_passed:
  110. print(f"✅ BallController配置应用验证通过!")
  111. print(f" - 配置接口定义完整")
  112. print(f" - 配置应用逻辑正确")
  113. print(f" - 配置值一致性良好")
  114. return True
  115. else:
  116. print(f"❌ BallController配置应用验证失败!")
  117. if not all_interface_checks_passed:
  118. print(f" - 配置接口定义不完整")
  119. if not all_application_checks_passed:
  120. print(f" - 配置应用逻辑有问题")
  121. if not consistency_passed:
  122. print(f" - 配置值不一致")
  123. return False
  124. def main():
  125. """主函数"""
  126. try:
  127. success = verify_ballcontroller_config_application()
  128. if success:
  129. print(f"\n🎉 验证成功!BallController正确应用了配置文件中的数据。")
  130. return 0
  131. else:
  132. print(f"\n⚠️ 验证发现问题,请检查配置应用逻辑。")
  133. return 1
  134. except Exception as e:
  135. print(f"\n💥 验证过程中发生错误: {e}")
  136. import traceback
  137. traceback.print_exc()
  138. return 1
  139. if __name__ == "__main__":
  140. exit(main())