fix: 装备属性面板避让逻辑 + 多项功能更新
- item_tooltip_view.gd: 新增 avoid_rect 属性,tooltip 与装备窗口重叠时自动推到左侧 - inventory_ui.gd: 悬停装备时传入窗口矩形作为避让区域 - 包含其他累积的功能开发和测试文件
This commit is contained in:
@@ -292,6 +292,12 @@ private:
|
||||
m_warp_seen = true;
|
||||
GCWarp w{GC_WARP, sizeof(GCWarp), 4321, 8765, 0, 0};
|
||||
send_raw(&w, sizeof(w));
|
||||
GCCharacterAdd stale_tail{};
|
||||
stale_tail.header = GC_CHARACTER_ADD;
|
||||
stale_tail.length = sizeof(stale_tail);
|
||||
stale_tail.vid = 9902;
|
||||
stale_tail.race = 101;
|
||||
send_raw(&stale_tail, sizeof(stale_tail));
|
||||
break;
|
||||
}
|
||||
case CG_FISHING: {
|
||||
@@ -714,11 +720,27 @@ int main() {
|
||||
CHECK(auth.done(), "auth reached a result");
|
||||
CHECK(auth.handshaked(), "auth: cipher activated");
|
||||
CHECK(auth.sent_login(), "auth: CG_LOGIN3 sent at PHASE_AUTH");
|
||||
CHECK(auth.login_secret_cleared(), "auth: password cleared after CG_LOGIN3");
|
||||
CHECK(auth.success(), "auth: GC_AUTH_SUCCESS");
|
||||
CHECK(auth.login_key() == 0x0BADF00D, "auth: login_key");
|
||||
login_key = auth.login_key();
|
||||
}
|
||||
|
||||
// A pending auth connection must leave Connecting on the reference
|
||||
// deadline instead of waiting forever for a phase packet.
|
||||
{
|
||||
AuthClient pending("admin", "123456789");
|
||||
if (pending.connect("192.0.2.1", 9, 0) &&
|
||||
pending.state() == NetStream::State::Connecting) {
|
||||
pending.process();
|
||||
CHECK(pending.state() == NetStream::State::Offline,
|
||||
"pending auth connect times out before Online");
|
||||
CHECK(pending.last_error() == "connect timeout", "pending auth connect reports timeout");
|
||||
} else {
|
||||
std::puts("auth connect timeout probe skipped (connect was synchronous)");
|
||||
}
|
||||
}
|
||||
|
||||
// --- game server: connect -> KX -> CG_LOGIN2 -> char list -> select -> GAME ---
|
||||
{
|
||||
MockServer srv(MockServer::Mode::Game);
|
||||
@@ -841,6 +863,8 @@ int main() {
|
||||
auto warps = game.world().drain_warps();
|
||||
CHECK(!warps.empty() && warps.back().x == 4321 && warps.back().y == 8765,
|
||||
"game: GC_WARP destination surfaced");
|
||||
CHECK(game.world().get(9902) == nullptr,
|
||||
"game: GC_WARP drops pipelined old-socket tail");
|
||||
}
|
||||
CHECK(game.send_fishing(36), "game: CG_FISHING sent");
|
||||
run(srv, game, 200, [] { return false; });
|
||||
|
||||
Reference in New Issue
Block a user