Files
mtgodot-poc/project/test_intro_loading_parity.gd
T
shenandshen 66d217b313 feat(client): 完成40250客户端核心功能1:1对齐与桥梁高度采样修复
- 桥梁与静态物体高度采样修复:
  - 严格对齐 40250 CMapOutdoor::GetHeight 与 CAttributeInstance::GetHeight
  - 解析 .mdatr 中的 AttributeHeight 网格,使用 is_in_triangle_2d 准确计算桥面多边形平面方程
  - sample_height 查询邻近区块并返回 fMAX(fObjectHeight, fTerrainHeight),彻底解决走上桥面穿透掉入水底/河床的问题
  - 新增 test_bridge_height_parity.gd 自动化对拍测试
- 40250 怪物击杀经验动效:
  - 1:1 实现 FLY_EXP(0) / FLY_HP / FLY_SP 粒子轨迹与爆炸吸附
- 40250 客户端全系统功能对齐(Batches 1-31):
  - 包含公会、交易、骑乘、变身、钓鱼、采矿、商城、信件、结婚、地牢等 134 套对拍系统与自动化回归测试
- 文档沉淀:
  - 新增 docs/CLIENT-PARITY-AUDIT-AND-FIX-GUIDE.md 客户端对拍缺陷发现与修复工程指南
2026-09-19 08:51:25 -07:00

78 lines
2.7 KiB
GDScript

# test_intro_loading_parity.gd —— 40250 官方插画过场加载与 Tip 轮播回归测试
extends SceneTree
const SystemClass = preload("res://intro_loading_phase.gd")
var _passed: int = 0
var _failed: int = 0
func _assert(cond: bool, msg: String) -> void:
if cond:
_passed += 1
print(" [PASS] %s" % msg)
else:
_failed += 1
printerr(" [FAIL] %s" % msg)
func _init() -> void:
print("\n=== Running test_intro_loading_parity (Batch 30 Direction 2) ===")
_test_loading_wallpapers_and_tips()
_test_step_by_step_progress_stream()
_test_completion_flow()
print("\n=== Result: %d Passed, %d Failed ===" % [_passed, _failed])
if _failed == 0:
print("ALL TESTS PASSED!\n")
else:
printerr("SOME TESTS FAILED!\n")
quit(0 if _failed == 0 else 1)
func _test_loading_wallpapers_and_tips() -> void:
print("\n--- Test 1: Wallpapers & Tips Selection ---")
var loader = SystemClass.new()
loader.start_loading(1, 2)
_assert(loader.current_wallpaper == SystemClass.OFFICIAL_LOADING_WALLPAPERS[1], "Selected wallpaper 1")
_assert(loader.current_tip == SystemClass.OFFICIAL_LOADING_TIPS[2], "Selected tip 2 (Biologist)")
_assert(loader.current_tip.contains("生物学家"), "Tip content matches official text")
_assert(loader.progress_percent == 0.0, "Initial progress is 0%")
_assert(loader.is_completed() == false, "Loading not completed initially")
func _test_step_by_step_progress_stream() -> void:
print("\n--- Test 2: Step-by-Step Progress Stream (25% -> 50% -> 75% -> 100%) ---")
var loader = SystemClass.new()
loader.start_loading()
# Step 1: Property (25%)
var s1 = loader.advance_loading_step()
_assert(s1["step"] == SystemClass.STEP_PROPERTY, "Advanced to STEP_PROPERTY")
_assert(s1["progress"] == 0.25, "Progress is 25%")
_assert(s1["status_text"].contains("25%"), "Status text displays 25%")
# Step 2: Terrain (50%)
var s2 = loader.advance_loading_step()
_assert(s2["step"] == SystemClass.STEP_TERRAIN, "Advanced to STEP_TERRAIN")
_assert(s2["progress"] == 0.50, "Progress is 50%")
# Step 3: Entities (75%)
var s3 = loader.advance_loading_step()
_assert(s3["step"] == SystemClass.STEP_ENTITIES, "Advanced to STEP_ENTITIES")
_assert(s3["progress"] == 0.75, "Progress is 75%")
# Step 4: UI & Audio (100%)
var s4 = loader.advance_loading_step()
_assert(s4["step"] == SystemClass.STEP_UI_AUDIO, "Advanced to STEP_UI_AUDIO")
_assert(s4["progress"] == 1.0, "Progress reached 100%")
func _test_completion_flow() -> void:
print("\n--- Test 3: Loading Completion Lifecycle ---")
var loader = SystemClass.new()
loader.start_loading()
# Run all steps to finish
for i in range(5):
loader.advance_loading_step()
_assert(loader.is_completed() == true, "Loading fully completed")
_assert(loader.progress_percent == 1.0, "Progress is 100%")