66 lines
2.2 KiB
GDScript
66 lines
2.2 KiB
GDScript
# 40250 EquipmentDialog:槽位布局与统一属性面板回归测试。
|
|
extends SceneTree
|
|
|
|
const ViewEquipmentUI = preload("res://ui/view_equipment_ui.gd")
|
|
const UiManager = preload("res://ui/ui_manager.gd")
|
|
|
|
class MockClient extends Node:
|
|
var equipment := []
|
|
func get_view_equipment(_vid: int) -> Array: return equipment
|
|
|
|
class MockProto extends Node:
|
|
func item(vnum: int) -> Dictionary:
|
|
if vnum != 19:
|
|
return {}
|
|
return {
|
|
"vnum": 19, "locale_name": "战斗剑 +9", "type": 1,
|
|
"values": [0, 0, 0, 10, 20, 0],
|
|
}
|
|
|
|
var failures := 0
|
|
|
|
func _check(ok: bool, message: String) -> void:
|
|
if ok:
|
|
print("PASS: " + message)
|
|
else:
|
|
failures += 1
|
|
printerr("FAIL: " + message)
|
|
|
|
func _init() -> void:
|
|
call_deferred("_run")
|
|
|
|
func _run() -> void:
|
|
var ui := UiManager.new()
|
|
get_root().add_child(ui)
|
|
var client := MockClient.new()
|
|
client.equipment.resize(11)
|
|
for wear in 11:
|
|
client.equipment[wear] = {"wear": wear, "vnum": 0}
|
|
client.equipment[4] = {"wear": 4, "vnum": 19, "count": 1,
|
|
"sockets": [0, 0, 0], "attrs": [{"type": 5, "value": 12}]}
|
|
var view := ViewEquipmentUI.new()
|
|
get_root().add_child(view)
|
|
view.setup(client, ui, MockProto.new())
|
|
view.show_for(1001)
|
|
await process_frame
|
|
|
|
var dialog: Control = ui.find_child("ViewEquipment", true, false)
|
|
_check(dialog != null and dialog.size == Vector2(180, 230), "uses the 40250 180x230 dialog")
|
|
_check(view._slots.size() == 11, "creates all 11 legacy EquipmentSlot positions")
|
|
var weapon: Panel = view._slots.get(4)
|
|
_check(weapon != null and weapon.position == Vector2(6, 6) and weapon.size == Vector2(32, 96),
|
|
"weapon slot matches 40250 index 4 rectangle")
|
|
_check(weapon.tooltip_text.is_empty(), "slot has no native Godot tooltip panel")
|
|
view._on_slot_over_in(4)
|
|
await process_frame
|
|
var tooltip: Control = ui.get_item_tooltip_view(AssetRoot.path(), view.proto, null)
|
|
_check(tooltip.visible, "hover opens the shared 40250 ItemTooltipView")
|
|
_check(ui.find_children("ItemTooltipView", "", true, false).size() == 1,
|
|
"only one item attribute panel exists")
|
|
view._hide_item_tooltip()
|
|
_check(not tooltip.visible, "leaving the slot hides the shared attribute panel")
|
|
|
|
if failures == 0:
|
|
print("ALL TESTS PASSED")
|
|
quit(failures)
|