Implement 40250 classic client port

This commit is contained in:
shenlei
2026-09-01 18:49:28 +09:00
parent 2277b1dd60
commit 8f61990a83
481 changed files with 169826 additions and 293 deletions
+33 -2
View File
@@ -14,11 +14,13 @@ class FakeClient extends Node:
signal guild_changed()
signal guild_skill_changed()
signal guild_war_changed()
signal guild_comments_changed()
var guild := {"in_guild": true, "id": 77, "name": "Dragons", "level": 12,
"member_count": 2, "max_member_count": 32, "gold": 5}
var skill := {"valid": false}
var wars := []
var war := {"opp_guild_id": 0, "opp_name": "", "type": 0, "state": 0}
var comments := []
var calls := []
func is_in_game() -> bool: return true
func get_guild() -> Dictionary: return guild
@@ -27,10 +29,17 @@ class FakeClient extends Node:
func get_guild_skill() -> Dictionary: return skill
func get_guild_wars() -> Array: return wars
func get_guild_war() -> Dictionary: return war
func get_guild_comments() -> Array: return comments
func use_guild_skill(vnum: int, target: int) -> bool:
calls.append(["use", vnum, target]); return true
func declare_guild_war(name: String) -> bool:
calls.append(["war", name]); return true
func guild_post_comment(text: String) -> bool:
calls.append(["post_comment", text]); return true
func guild_refresh_comments() -> bool:
calls.append(["refresh_comments"]); return true
func guild_delete_comment(comment_id: int) -> bool:
calls.append(["delete_comment", comment_id]); return true
var _fail := 0
func _ck(c: bool, m: String) -> void:
@@ -39,7 +48,7 @@ func _ck(c: bool, m: String) -> void:
printerr("FAIL: " + m)
func _init() -> void:
_run()
await _run()
if _fail == 0:
print("PASS: guild_war_skill_test")
quit(0)
@@ -72,7 +81,7 @@ func _run() -> void:
gu.setup(fc, canvas, tbl)
gu.toggle()
_ck(gu.is_open(), "公会窗打开")
_ck(gu._pages.size() == 3, "3")
_ck(gu._pages.size() == 4, "4(成员/技能/公会战/公告)")
# --- 技能页 ---
gu._set_tab(1)
@@ -108,3 +117,25 @@ func _run() -> void:
var wt := _labels_text(gu._pages[2])
_ck(wt.contains("对 Tigers") and wt.contains("交战中"), "公会战页:当前战状态")
_ck(wt.contains("Dragons vs Tigers") and wt.contains("◀我方"), "公会战页:GvG 行 + 我方标记")
# --- 公告页 ---
gu._set_tab(3)
_ck(_labels_text(gu._pages[3]).contains("暂无公告"), "公告页:无数据提示")
fc.comments = [{"id": 9, "name": "Alice", "content": "今晚攻城"}]
fc.guild_comments_changed.emit()
await process_frame
var ct := _labels_text(gu._pages[3])
_ck(ct.contains("Alice:今晚攻城"), "公告页:公告内容")
var edits: Array = gu._pages[3].find_children("*", "LineEdit", true, false)
_ck(edits.size() == 1, "公告页:输入框")
if edits.size() == 1:
edits[0].text = "明晚集合"
_btn(gu._pages[3], "发布").pressed.emit()
_ck(fc.calls[-1] == ["post_comment", "明晚集合"], "公告页:发布")
_btn(gu._pages[3], "刷新").pressed.emit()
_ck(fc.calls[-1] == ["refresh_comments"], "公告页:刷新")
for b in gu._pages[3].find_children("*", "Button", true, false):
if String(b.text) == "":
b.pressed.emit()
break
_ck(fc.calls[-1] == ["delete_comment", 9], "公告页:删除")