From 7571ee820adfa5e2442c9ddc770f006bcec37bb8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 2 Aug 2026 13:09:28 +0000 Subject: [PATCH 1/4] Bump version to 0.9.10.18 --- Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index a25b0ee3..ea279420 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -2,7 +2,7 @@ $(NoWarn);IL2104;IL3053;IL3000;IL3002;NU1701;CS0108 - 0.9.10.17 + 0.9.10.18 enable enable From 0156904e2314d765f5da43a8c81fd916c3fe8d07 Mon Sep 17 00:00:00 2001 From: Macocian Alexandru Victor Date: Sun, 30 Aug 2026 20:17:09 +0200 Subject: [PATCH 2/4] Update GWCA (#1610) --- .../GWCA/Include/GWCA/Constants/AgentIDs.h | 40 +- .../GWCA/Include/GWCA/Constants/Constants.h | 4 +- .../GWCA/Include/GWCA/Constants/Skills.h | 5 +- .../GWCA/Include/GWCA/Constants/UIMessages.h | 112 +- .../Include/GWCA/Constants/UIMessages.h.bak | 1027 +++++++++++++++++ .../GWCA/Include/GWCA/Context/MapContext.h | 130 ++- .../Include/GWCA/Context/PreGameContext.h | 2 - .../GWCA/Include/GWCA/Context/TradeContext.h | 3 +- Dependencies/GWCA/Include/GWCA/GWCAVersion.h | 8 +- .../GWCA/Include/GWCA/GWCAVersion.h.in | 15 + .../Include/GWCA/GameContainers/ObjectPool.h | 6 +- .../GWCA/Include/GWCA/GameEntities/Agent.h | 46 +- .../GWCA/Include/GWCA/GameEntities/Camera.h | 3 +- .../GWCA/Include/GWCA/GameEntities/Frame.h | 11 +- .../GWCA/Include/GWCA/GameEntities/Item.h | 10 +- .../GWCA/Include/GWCA/GameEntities/NPC.h | 3 +- .../GWCA/Include/GWCA/GameEntities/Pathing.h | 245 ++-- .../GWCA/Include/GWCA/Managers/AgentMgr.h | 220 ++-- .../GWCA/Include/GWCA/Managers/CameraMgr.h | 5 +- .../GWCA/Include/GWCA/Managers/ChatMgr.h | 6 +- .../GWCA/Include/GWCA/Managers/EffectMgr.h | 6 +- .../GWCA/Include/GWCA/Managers/EventMgr.h | 59 +- .../Include/GWCA/Managers/FriendListMgr.h | 5 +- .../Include/GWCA/Managers/GameThreadMgr.h | 5 +- .../GWCA/Include/GWCA/Managers/GuildMgr.h | 2 - .../GWCA/Include/GWCA/Managers/ItemMgr.h | 2 - .../GWCA/Include/GWCA/Managers/MapMgr.h | 7 +- .../GWCA/Include/GWCA/Managers/MemoryMgr.h | 4 +- .../GWCA/Include/GWCA/Managers/Module.h | 3 +- .../GWCA/Include/GWCA/Managers/PartyMgr.h | 3 +- .../GWCA/Include/GWCA/Managers/PlayerMgr.h | 2 - .../GWCA/Include/GWCA/Managers/QuestMgr.h | 2 - .../GWCA/Include/GWCA/Managers/RenderMgr.h | 134 ++- .../GWCA/Include/GWCA/Managers/SkillbarMgr.h | 14 +- .../GWCA/Include/GWCA/Managers/StoCMgr.h | 9 +- .../GWCA/Include/GWCA/Managers/TradeMgr.h | 2 - .../GWCA/Include/GWCA/Managers/UIMgr.h | 44 +- Dependencies/GWCA/Include/GWCA/Packets/StoC.h | 61 +- .../GWCA/Include/GWCA/Utilities/Debug.h | 5 +- .../GWCA/Include/GWCA/Utilities/Export.h | 13 +- .../GWCA/Include/GWCA/Utilities/Hooker.h | 117 +- .../GWCA/Include/GWCA/Utilities/Scanner.h | 87 +- .../GWCA/Include/GWCA/Utilities/Version.h | 21 + Dependencies/GWCA/Include/GWCA/stdafx.h | 13 + Dependencies/GWCA/gwca.dll | Bin 338017 -> 379392 bytes Dependencies/GWCA/gwca.exp | Bin 146597 -> 153687 bytes Dependencies/GWCA/gwca.lib | Bin 246724 -> 252528 bytes 47 files changed, 1966 insertions(+), 555 deletions(-) create mode 100644 Dependencies/GWCA/Include/GWCA/Constants/UIMessages.h.bak create mode 100644 Dependencies/GWCA/Include/GWCA/GWCAVersion.h.in create mode 100644 Dependencies/GWCA/Include/GWCA/Utilities/Version.h diff --git a/Dependencies/GWCA/Include/GWCA/Constants/AgentIDs.h b/Dependencies/GWCA/Include/GWCA/Constants/AgentIDs.h index 7ff54a0a..5ac2f50f 100644 --- a/Dependencies/GWCA/Include/GWCA/Constants/AgentIDs.h +++ b/Dependencies/GWCA/Include/GWCA/Constants/AgentIDs.h @@ -470,26 +470,26 @@ namespace GW { } // namespace Minipet namespace SummoningStone { - constexpr int ImperialCripplingSlash = 9043; - constexpr int ImperialTripleChop = 9044; - constexpr int ImperialBarrage = 9045; - constexpr int ImperialQuiveringBlade = 9046; - constexpr int TenguHundredBlades = 9047; - constexpr int TenguBroadHeadArrow = 9048; - constexpr int TenguPalmStrike = 9049; - constexpr int TenguLifeSheath = 9050; - constexpr int TenguAngchuElementalist = 9051; - constexpr int TenguFeveredDreams = 9052; - constexpr int TenguSpitefulSpirit = 9053; - constexpr int TenguPreservation = 9054; - constexpr int TenguPrimalRage = 9055; - constexpr int TenguGlassArrows = 9056; - constexpr int TenguWayOftheAssassin = 9057; - constexpr int TenguPeaceandHarmony = 9058; - constexpr int TenguSandstorm = 9059; - constexpr int TenguPanic = 9060; - constexpr int TenguAuraOftheLich = 9061; - constexpr int TenguDefiantWasXinrae = 9062; + constexpr int ImperialCripplingSlash = 9268; + constexpr int ImperialTripleChop = 9269; + constexpr int ImperialBarrage = 9270; + constexpr int ImperialQuiveringBlade = 9271; + constexpr int TenguHundredBlades = 9272; + constexpr int TenguBroadHeadArrow = 9273; + constexpr int TenguPalmStrike = 9274; + constexpr int TenguLifeSheath = 9275; + constexpr int TenguAngchuElementalist = 9276; + constexpr int TenguFeveredDreams = 9277; + constexpr int TenguSpitefulSpirit = 9278; + constexpr int TenguPreservation = 9279; + constexpr int TenguPrimalRage = 9280; + constexpr int TenguGlassArrows = 9281; + constexpr int TenguWayOftheAssassin = 9282; + constexpr int TenguPeaceandHarmony = 9283; + constexpr int TenguSandstorm = 9284; + constexpr int TenguPanic = 9285; + constexpr int TenguAuraOftheLich = 9286; + constexpr int TenguDefiantWasXinrae = 9287; } // namespace SummoningStone } // namespace ModelID } // namespace Constants diff --git a/Dependencies/GWCA/Include/GWCA/Constants/Constants.h b/Dependencies/GWCA/Include/GWCA/Constants/Constants.h index a885b419..b06a4c07 100644 --- a/Dependencies/GWCA/Include/GWCA/Constants/Constants.h +++ b/Dependencies/GWCA/Include/GWCA/Constants/Constants.h @@ -22,7 +22,7 @@ namespace GW { None, Warrior, Ranger, Monk, Necromancer, Mesmer, Elementalist, Assassin, Ritualist, Paragon, Dervish }; - static const char* GetProfessionAcronym(Profession prof) { + inline const char* GetProfessionAcronym(Profession prof) { switch (prof) { case GW::Constants::Profession::None: return "X"; case GW::Constants::Profession::Warrior: return "W"; @@ -38,7 +38,7 @@ namespace GW { default: return ""; } } - static const wchar_t* GetWProfessionAcronym(Profession prof) { + inline const wchar_t* GetWProfessionAcronym(Profession prof) { switch (prof) { case GW::Constants::Profession::None: return L"X"; case GW::Constants::Profession::Warrior: return L"W"; diff --git a/Dependencies/GWCA/Include/GWCA/Constants/Skills.h b/Dependencies/GWCA/Include/GWCA/Constants/Skills.h index 550308dd..01e78761 100644 --- a/Dependencies/GWCA/Include/GWCA/Constants/Skills.h +++ b/Dependencies/GWCA/Include/GWCA/Constants/Skills.h @@ -3033,9 +3033,8 @@ namespace GW { Vow_of_Revolution, Heroic_Refrain, Reforged_Mode=0xD6A, - Dhuums_Covenant_Broken, - Count = 0xD6c - }; + Dhuums_Covenant_Broken + }; enum class SkillType { Bounty = 1, diff --git a/Dependencies/GWCA/Include/GWCA/Constants/UIMessages.h b/Dependencies/GWCA/Include/GWCA/Constants/UIMessages.h index 3b47cb10..451f962f 100644 --- a/Dependencies/GWCA/Include/GWCA/Constants/UIMessages.h +++ b/Dependencies/GWCA/Include/GWCA/Constants/UIMessages.h @@ -560,41 +560,42 @@ namespace GW { kInventoryRelated2, // 0x100001aa, added to GW 2026-02-26 kInventoryRelated3, // 0x100001ab, added to GW 2026-02-26 kInventoryRelated4, // 0x100001ac, added to GW 2026-04-28 - kEquipItem, // 0x100001ad, wparam = { item_id, agent_id } - kMoveItem, // 0x100001ae, wparam = { item_id, to_bag, to_slot, bool prompt } - kItemRelated_1, // 0x100001af - kItemTooltip, // 0x100001b0 - kItemRelated_3, // 0x100001b1, added to GW 2026-02-26 - kItemRelated_4, // 0x100001b2, added to GW 2026-02-26 - kItemRelated_5, // 0x100001b3, added to GW 2026-04-28 - kInitiateTrade, // 0x100001b4 - kMessage_0x100001a7, // 0x100001b5 - kMessage_0x100001a8, // 0x100001b6 - kMessage_0x100001a9, // 0x100001b7 - kMessage_0x100001aa, // 0x100001b8 - kPartySearchWindowDestroyed, // 0x100001b9 - kMessage_0x100001ac, // 0x100001ba - kPartySearchWindowCreated, // 0x100001bb - kMessage_0x100001ae, // 0x100001bc - kMessage_0x100001af, // 0x100001bd - kMessage_0x100001b0, // 0x100001be - kMessage_0x100001b1, // 0x100001bf - kMessage_0x100001b2, // 0x100001c0 - kMessage_0x100001b3, // 0x100001c1 - kMessage_0x100001b4, // 0x100001c2 - kMessage_0x100001b5, // 0x100001c3 - kInventoryAgentChanged, // 0x100001c4, Triggered when inventory needs updating due to agent change; no args - kInventoryRelated_1, // 0x100001c5 - kInventoryRelated_2, // 0x100001c6 - kMissionStatusRelated, // 0x100001c7 - kUnused_1c2, // 0x100001c8 - kCollapseExpandSkillListSection, // 0x100001c9 - kPromptLoadTemplate, // 0x100001ca - kOpenTemplateManager, // 0x100001cb - kPromptSaveTemplate, // 0x100001cc - kOpenTemplate, // 0x100001cd, wparam = GW::UI::ChatTemplate* - kTemplateRelated_3, // 0x100001ce - kTemplateRelated_4, // 0x100001cf + kInventoryRelated4_1, // 0x100001ad, added to GW 2026-08-07 + kEquipItem, // 0x100001ae, wparam = { item_id, agent_id } + kMoveItem, // 0x100001af, wparam = { item_id, to_bag, to_slot, bool prompt } + kItemRelated_1, // 0x100001b0 + kItemTooltip, // 0x100001b1 + kItemRelated_3, // 0x100001b2, added to GW 2026-02-26 + kItemRelated_4, // 0x100001b3, added to GW 2026-02-26 + kItemRelated_5, // 0x100001b4, added to GW 2026-04-28 + kInitiateTrade, // 0x100001b5 + kMessage_0x100001a7, // 0x100001b6 + kMessage_0x100001a8, // 0x100001b7 + kMessage_0x100001a9, // 0x100001b8 + kMessage_0x100001aa, // 0x100001b9 + kPartySearchWindowDestroyed, // 0x100001ba + kMessage_0x100001ac, // 0x100001bb + kPartySearchWindowCreated, // 0x100001bc + kMessage_0x100001ae, // 0x100001bd + kMessage_0x100001af, // 0x100001be + kMessage_0x100001b0, // 0x100001bf + kMessage_0x100001b1, // 0x100001c0 + kMessage_0x100001b2, // 0x100001c1 + kMessage_0x100001b3, // 0x100001c2 + kMessage_0x100001b4, // 0x100001c3 + kMessage_0x100001b5, // 0x100001c4 + kInventoryAgentChanged, // 0x100001c5, Triggered when inventory needs updating due to agent change; no args + kInventoryRelated_1, // 0x100001c6 + kInventoryRelated_2, // 0x100001c7 + kMissionStatusRelated, // 0x100001c8 + kUnused_1c2, // 0x100001c9 + kCollapseExpandSkillListSection, // 0x100001ca + kPromptLoadTemplate, // 0x100001cb + kOpenTemplateManager, // 0x100001cc + kPromptSaveTemplate, // 0x100001cd + kOpenTemplate, // 0x100001ce, wparam = GW::UI::ChatTemplate* + kTemplateRelated_3, // 0x100001cf + kTemplateRelated_4, // 0x100001d0 // GWCA Client to Server commands. Only added the ones that are used for hooks, everything else goes straight into GW @@ -603,7 +604,7 @@ namespace GW { kSendMoveItem = 0x30000000 | 0x5, // 0x30000005, wparam = UIPacket::kSendMoveItem* kSendMerchantRequestQuote = 0x30000000 | 0x6, // 0x30000006, wparam = UIPacket::kSendMerchantRequestQuote* kSendMerchantTransactItem = 0x30000000 | 0x7, // 0x30000007, wparam = UIPacket::kSendMerchantTransactItem* - kSendUseItem = 0x30000000 | 0x8, // 0x30000008, wparam = UIPacket::kSendUseItem* + kSendUseItem = 0x30000000 | 0x8, // 0x30000008, wparam = uint32_t item_id kSendSetActiveQuest = 0x30000000 | 0x9, // 0x30000009, wparam = uint32_t quest_id kSendAbandonQuest = 0x30000000 | 0xA, // 0x3000000a, wparam = uint32_t quest_id kSendChangeTarget = 0x30000000 | 0xB, // 0x3000000b, wparam = UIPacket::kSendChangeTarget* // e.g. tell the gw client to focus on a different target @@ -626,7 +627,7 @@ namespace GW { kChatLinkClicked = 0x30000000 | 0x25 // 0x30000025, wparam = UIPacket::kChatLinkClicked. Triggered when the player clicks an link in chat, e.g. build code }; - //static_assert(GW::UI::UIMessage::kOpenTemplate == (GW::UI::UIMessage)0x100001c4); + static_assert(GW::UI::UIMessage::kOpenTemplate == (GW::UI::UIMessage)0x100001ce); namespace UIPacket { struct kUIFeatureChanged { @@ -723,19 +724,34 @@ namespace GW { uint32_t h0004; uint32_t h0008; }; + // A handler that leaves both entries at 0 falls through to the engine's + // own default sizing (GetMinSize()-based) rather than being treated as "wants zero size". + // + // flags (offset 0xc) is passed through uninitialized in that call site and never visibly + // set before the dispatch - not confirmed as meaningful; treat as reserved/unused for now. struct kMeasureContent { - float max_width; // Maximum width constraint - float max_height; // Maximum height constraint - float* size_output; // Pointer to output buffer for calculated size - uint32_t flags; // Layout flags (similar to the 0x100 flag we saw) - }; + float max_width; // Available width, after the frame's own margin/padding is already subtracted + float max_height; // Available height, after the frame's own margin/padding is already subtracted + float* size_output; // Points at a 2-float [width, height] buffer the handler must fill + uint32_t flags; // Not confirmed meaningful - see comment above + }; + // Every field here is relative to the frame's own content-origin rect (its content_left/ + // content_bottom/content_right/content_top) - not absolute screen coordinates: + // available_width = content_right - content_left + // available_height = content_top - content_bottom + // local_left = resolved_left - content_left + // local_bottom = resolved_bottom - content_bottom + // local_right = resolved_right - content_left + // local_top = resolved_top - content_bottom + // i.e. "here is how much room you have, and here is where your own just-resolved rect sits + // within it" struct kSetLayout { - float field_0x0; - float field_0x4; - float field_0x8; - float field_0xc; float available_width; float available_height; + float local_left; + float local_bottom; + float local_right; + float local_top; }; struct kSetAgentProfession { AgentID agent_id; @@ -939,10 +955,6 @@ namespace GW { uint32_t gold_recv; Merchant::QuoteInfo recv; }; - struct kSendUseItem { - uint32_t item_id; - uint16_t quantity; // Unused, but would be cool - }; struct kSendChatMessage { wchar_t* message; uint32_t agent_id; diff --git a/Dependencies/GWCA/Include/GWCA/Constants/UIMessages.h.bak b/Dependencies/GWCA/Include/GWCA/Constants/UIMessages.h.bak new file mode 100644 index 00000000..451f962f --- /dev/null +++ b/Dependencies/GWCA/Include/GWCA/Constants/UIMessages.h.bak @@ -0,0 +1,1027 @@ +namespace GW { + enum class CallTargetType : uint32_t; + enum class WorldActionId : uint32_t; + struct GamePos; + struct Effect; + struct Vec2f; + typedef uint32_t AgentID; + + namespace Merchant { + enum class TransactionType : uint32_t; + } + namespace Constants { + enum class Language; + enum class MapID : uint32_t; + enum class InstanceType; + enum class QuestID : uint32_t; + enum class SkillID : uint32_t; + } + namespace Chat { + enum Channel : int; + typedef uint32_t Color; + } + + namespace Chat { + enum Channel : int; + } + namespace SkillbarMgr { + struct SkillTemplate; + } + namespace UI { + struct WindowPosition; + enum class FlagPreference : uint32_t; + enum class NumberPreference : uint32_t; + enum class StringPreference : uint32_t; + enum class EnumPreference : uint32_t; + enum class UiProfileSetting : uint32_t; + struct CompassPoint; + + enum class UIMessage : uint32_t { + kNone = 0x0, // 0x0 + kFrameMessage_0x1, // 0x1 + kFrameMessage_0x2, // 0x2 + kFrameMessage_0x3, // 0x3 + kFrameMessage_0x4, // 0x4 + kFrameMessage_0x5, // 0x5 + kFrameMessage_0x6, // 0x6 + kFrameMessage_0x7, // 0x7 + kResize, // 0x8 + kInitFrame, // 0x9 + kFrameMessage_0xa, // 0xa + kDestroyFrame, // 0xb + kFrameDisabledChange, // 0xc, wparam = is_enabled + kFrameMessage_0xd, // 0xd + kFrameMessage_0xe, // 0xe + kFrameMessage_0xf, // 0xf + kFrameMessage_0x10, // 0x10 + kFrameMessage_0x11, // 0x11 + kFrameMessage_0x12, // 0x12 + kFrameMessage_0x13, // 0x13 + kFrameMessage_0x14, // 0x14 + kFrameMessage_0x15, // 0x15 + kFrameMessage_0x16, // 0x16 + kFrameMessage_0x17, // 0x17 + kFrameMessage_0x18, // 0x18 + kFrameMessage_0x19, // 0x19 + kFrameMessage_0x1a, // 0x1a + kFrameMessage_0x1b, // 0x1b + kFrameMessage_0x1c, // 0x1c + kFrameMessage_0x1d, // 0x1d + kKeyDown = 0x20, // 0x20, wparam = UIPacket::kKeyAction* - Updated from 0x1e to 0x20 + kSetFocus, // 0x21, wparam = 1 or 0 + kKeyUp, // 0x22, wparam = UIPacket::kKeyAction* + kFrameMessage_0x21, // 0x23 + kMouseClick, // 0x24, wparam = UIPacket::kMouseClick* + kFrameMessage_0x23, // 0x25 + kMouseCoordsClick, // 0x26, wparam = UIPacket::kMouseCoordsClick* + kFrameMessage_0x25, // 0x27 + kMouseUp, // 0x28, wparam = UIPacket::kMouseCoordsClick* + kFrameMessage_0x27, // 0x29 + kFrameMessage_0x28, // 0x2a + kFrameMessage_0x29, // 0x2b + kFrameMessage_0x2a, // 0x2c + kFrameMessage_0x2b, // 0x2d + kToggleButtonDown, // 0x2e + kFrameMessage_0x2d, // 0x2f + kMouseClick2 = 0x31, // 0x31, wparam = UIPacket::kMouseAction* + kMouseAction, // 0x32, wparam = UIPacket::kMouseAction* + kRenderFrame_0x30, // 0x33 + kRenderFrame_0x31 = 0x35, // 0x35 + kFrameVisibilityChanged, // 0x36, wparam = is_visible + kSetLayout, // 0x37 + kMeasureContent, // 0x38 + kFrameMessage_0x35, // 0x39 + kFrameMessage_0x36, // 0x3a + kRefreshContent, // 0x3b + kFrameMessage_0x38, // 0x3c + kFrameMessage_0x39, // 0x3d + kFrameMessage_0x3a, // 0x3e + kFrameMessage_0x3b, // 0x3f + kFrameMessage_0x3c = 0x44, // 0x44 + kFrameMessage_0x3d, // 0x45 + kFrameMessage_0x3e, // 0x46 + kFrameMessage_0x3f, // 0x47 + kFrameMessage_0x40, // 0x48 + kFrameMessage_0x41, // 0x49 + kFrameMessage_0x42, // 0x4a + kRenderFrame_0x43, // 0x4b + kFrameMessage_0x44 = 0x52, // 0x52 + kFrameMessage_0x45, // 0x53 + kFrameMessage_0x46 = 0x56, // 0x56 + kFrameMessage_0x47, // 0x57, Multiple uses depending on frame + kFrameMessage_0x48, // 0x58, Multiple uses depending on frame + kFrameMessage_0x49, // 0x59, Multiple uses depending on frame + kFrameMessage_0x4a, // 0x5a, Multiple uses depending on frame + kFrameMessage_0x4b, // 0x5b, Multiple uses depending on frame + kFrameMessage_0x4c, // 0x5c, Multiple uses depending on frame + kFrameMessage_0x4d, // 0x5d, Multiple uses depending on frame + kFrameMessage_0x4e, // 0x5e, Multiple uses depending on frame + kFrameMessage_0x4f, // 0x5f, Multiple uses depending on frame + kFrameMessage_0x50, // 0x60, Multiple uses depending on frame + kFrameMessage_0x51, // 0x61, Multiple uses depending on frame + kFrameMessage_0x52, // 0x62, Multiple uses depending on frame + kFrameMessage_0x53, // 0x63, Multiple uses depending on frame + kFrameMessage_0x53_a, // 0x64, Added 2026-05-28 + kFrameMessage_0x53_b, // 0x65, Added 2026-05-28 + kFrameMessage_0x54, // 0x66, Multiple uses depending on frame + kFrameMessage_0x55, // 0x67, Multiple uses depending on frame + kFrameMessage_0x56, // 0x68, Multiple uses depending on frame + kFrameMessage_0x57, // 0x69, Multiple uses depending on frame + kFrameMessage_0x58, // 0x6a, Multiple uses depending on frame + kFrameMessage_0x59, // 0x6b, Multiple uses depending on frame + + // High bit messages start at 0x10000000 + kMessage_0x10000000 = 0x10000000, // 0x10000000 + kMessage_0x10000001, // 0x10000001 + kMessage_0x10000002, // 0x10000002 + kMessage_0x10000003, // 0x10000003 + kMessage_0x10000004, // 0x10000004 + kMessage_0x10000005, // 0x10000005 + kMessage_0x10000006, // 0x10000006 + kAgentUpdate, // 0x10000007, wparam = uint32_t agent_id + kAgentDestroy, // 0x10000008, wparam = uint32_t agent_id + kUpdateAgentEffects, // 0x10000009 + kMessage_0x1000000a, // 0x1000000a + kMessage_0x1000000b, // 0x1000000b + kDialogueMessage, // 0x1000000c + kAgentOverheadFloat, // 0x1000000d, // e.g. XP gain wparam = *GW::UI::UIPacket::kAgentOverheadNumber + kMessage_0x1000000e, // 0x1000000e + kAgentOverheadNumber, // 0x1000000f, // e.g. damage, heal wparam = *GW::UI::UIPacket::kAgentOverheadNumber + kMessage_0x10000010, // 0x10000010 + kAgentOverheadText, // 0x10000011, // e.g. block, dodge wparam = *GW::UI::UIPacket::kAgentOverheadNumber + kMessage_0x10000012, // 0x10000012 + kMessage_0x10000013, // 0x10000013 + kMessage_0x10000014, // 0x10000014 + kMessage_0x10000015, // 0x10000015 + kMessage_0x10000016, // 0x10000016 + kAgentSpeechBubble, // 0x10000017 + kMessage_0x10000018, // 0x10000018 + kShowAgentNameTag, // 0x10000019, wparam = AgentNameTagInfo* + kHideAgentNameTag, // 0x1000001a + kSetAgentNameTagAttribs, // 0x1000001b, wparam = AgentNameTagInfo* + kMessage_0x1000001c, // 0x1000001c + kSetAgentProfession, // 0x1000001d, wparam = UIPacket::kSetAgentProfession* + kMessage_0x1000001e, // 0x1000001e + kMessage_0x1000001f, // 0x1000001f + kChangeTarget, // 0x10000020, wparam = UIPacket::kChangeTarget* + kMessage_0x10000021, // 0x10000021 + kMessage_0x10000022, // 0x10000022 + kMessage_0x10000023, // 0x10000023 + kAgentSkillActivated, // 0x10000024, kAgentSkillPacket + kAgentSkillActivatedInstantly, // 0x10000025, kAgentSkillPacket + kAgentSkillCancelled, // 0x10000026, kAgentSkillPacket + kAgentSkillStartedCast, // 0x10000027, wparam = UIPacket::kAgentStartCasting* + kMessage_0x10000028, // 0x10000028 + kShowMapEntryMessage, // 0x10000029, wparam = { wchar_t* title, wchar_t* subtitle } + kSetCurrentPlayerData, // 0x1000002a, fired after setting the worldcontext player name + kMessage_0x1000002b, // 0x1000002b + kMessage_0x1000002c, // 0x1000002c + kMessage_0x1000002d, // 0x1000002d + kMessage_0x1000002e, // 0x1000002e + kMessage_0x1000002f, // 0x1000002f + kMessage_0x10000030, // 0x10000030 + kMessage_0x10000031, // 0x10000031 + kMessage_0x10000032, // 0x10000032 + kMessage_0x10000033, // 0x10000033 + kPostProcessingEffect, // 0x10000034, Triggered when drunk. wparam = UIPacket::kPostProcessingEffect + kMessage_0x10000035, // 0x10000035 + kMessage_0x10000036, // 0x10000036 + kMessage_0x10000037, // 0x10000037 + kHeroAgentAdded, // 0x10000038, hero assigned to agent/inventory/ai mode + kHeroDataAdded, // 0x10000039, hero info received from server (name, level etc) + kMessage_0x1000003a, // 0x1000003a + kMessage_0x1000003b, // 0x1000003b + kMessage_0x1000003c, // 0x1000003c + kMessage_0x1000003d, // 0x1000003d + kMessage_0x1000003e, // 0x1000003e + kMessage_0x1000003f, // 0x1000003f + kShowXunlaiChest, // 0x10000040 + kMessage_0x10000041, // 0x10000041 + kMessage_0x10000042, // 0x10000042 + kMessage_0x10000043, // 0x10000043 + kMessage_0x10000044, // 0x10000044 + kMessage_0x10000045, // 0x10000045 + kMinionCountUpdated, // 0x10000046 + kMoraleChange, // 0x10000047, wparam = {agent id, morale percent } + kMessage_0x10000048, // 0x10000048 + kMessage_0x10000049, // 0x10000049 + kMessage_0x1000004a, // 0x1000004a + kMessage_0x1000004b, // 0x1000004b + kMessage_0x1000004c, // 0x1000004c + kMessage_0x1000004d, // 0x1000004d + kMessage_0x1000004e, // 0x1000004e + kMessage_0x1000004f, // 0x1000004f + kLoginStateChanged, // 0x10000050, wparam = {bool is_logged_in, bool unk } + kMessage_0x10000051, // 0x10000051 + kMessage_0x10000052, // 0x10000052 + kMessage_0x10000053, // 0x10000053 + kMessage_0x10000054, // 0x10000054 + kEffectAdd, // 0x10000055, wparam = {agent_id, GW::Effect*} + kEffectRenew, // 0x10000056, wparam = GW::Effect* + kEffectRemove, // 0x10000057, wparam = effect id + kMessage_0x10000058, // 0x10000058 + kMessage_0x10000059, // 0x10000059 + kMessage_0x1000005a, // 0x1000005a + kSkillActivated, // 0x1000005b, wparam ={ uint32_t agent_id , uint32_t skill_id } + kMessage_0x1000005c, // 0x1000005c + kMessage_0x1000005d, // 0x1000005d + kUpdateSkillbar, // 0x1000005e, wparam ={ uint32_t agent_id , ... } + kUpdateSkillsAvailable, // 0x1000005f, Triggered on a skill unlock, profession change or map load + kMessage_0x10000060, // 0x10000060 + kMessage_0x10000061, // 0x10000061 + kMessage_0x10000062, // 0x10000062 + kMessage_0x10000063, // 0x10000063 + kPlayerTitleChanged, // 0x10000064, wparam = { uint32_t player_id, uint32_t title_id } + kTitleProgressUpdated, // 0x10000065, wparam = title_id + kExperienceGained, // 0x10000066, wparam = experience amount + kMessage_0x10000067, // 0x10000067 + kMessage_0x10000068, // 0x10000068 + kMessage_0x10000069, // 0x10000069 + kMessage_0x1000006a, // 0x1000006a + kMessage_0x1000006b, // 0x1000006b + kMessage_0x1000006c, // 0x1000006c + kMessage_0x1000006d, // 0x1000006d + kMessage_0x1000006e, // 0x1000006e + kMessage_0x1000006f, // 0x1000006f + kMessage_0x10000070, // 0x10000070 + kMessage_0x10000071, // 0x10000071 + kMessage_0x10000072, // 0x10000072 + kMessage_0x10000073, // 0x10000073 + kMessage_0x10000074, // 0x10000074 + kMessage_0x10000075, // 0x10000075 + kMessage_0x10000076, // 0x10000076 + kMessage_0x10000077, // 0x10000077 + kMessage_0x10000078, // 0x10000078 + kMessage_0x10000079, // 0x10000079 + kMessage_0x1000007a, // 0x1000007a + kMessage_0x1000007b, // 0x1000007b + kMessage_0x1000007c, // 0x1000007c + kMessage_0x1000007d, // 0x1000007d + kMessage_0x1000007e, // 0x1000007e + kWriteToChatLog, // 0x1000007f, wparam = UIPacket::kWriteToChatLog* + kWriteToChatLogWithSender, // 0x10000080, wparam = UIPacket::kWriteToChatLogWithSender* + kAllyOrGuildMessage, // 0x10000081, wparam = UIPacket::kAllyOrGuildMessage* + kPlayerChatMessage, // 0x10000082, wparam = UIPacket::kPlayerChatMessage* + kMessage_0x10000083, // 0x10000083 + kFloatingWindowMoved, // 0x10000084, wparam = frame_id + kMessage_0x10000085, // 0x10000085 + kUIFeatureChanged, // 0x10000086, wparam = UIPacket::kUIFeatureChanged* + kMessage_0x10000087, // 0x10000087 + kMessage_0x10000088, // 0x10000088 + kMessage_0x10000089, // 0x10000089 + kMessage_0x1000008a, // 0x1000008a + kFriendUpdated, // 0x1000008b, wparam = { GW::Friend*, ... } + kMapLoaded, // 0x1000008c + kMessage_0x1000008d, // 0x1000008d + kMessage_0x1000008e, // 0x1000008e + kMessage_0x1000008f, // 0x1000008f + kMessage_0x10000090, // 0x10000090 + kMessage_0x10000091, // 0x10000091 + kOpenWhisper, // 0x10000092, wparam = wchar* name + kMessage_0x10000093, // 0x10000093 + kMessage_0x10000094, // 0x10000094 + kMessage_0x10000095, // 0x10000095 + kMessage_0x10000096, // 0x10000096 + kMessage_0x10000097, // 0x10000097 + kLoadMapContext, // 0x10000098, wparam = UIPacket::kLoadMapContext + kMessage_0x10000099, // 0x10000099 + kMessage_0x1000009a, // 0x1000009a + kMessage_0x1000009b, // 0x1000009b + kDialogueMessageUpdated, // 0x1000009c + kLogout, // 0x1000009d, wparam = { bool unknown, bool character_select } + kCompassDraw, // 0x1000009e, wparam = UIPacket::kCompassDraw* + kMessage_0x1000009f, // 0x1000009f + kMessage_0x100000a0, // 0x100000a0 + kMessage_0x100000a1, // 0x100000a1 + kOnScreenMessage, // 0x100000a2, wparam = wchar_** encoded_string + kDialogButton, // 0x100000a3, wparam = DialogButtonInfo* + kMessage_0x100000a4, // 0x100000a4 + kMessage_0x100000a5, // 0x100000a5 + kDialogBody, // 0x100000a6, wparam = DialogBodyInfo* + kMessage_0x100000a7, // 0x100000a7 + kMessage_0x100000a8, // 0x100000a8 + kMessage_0x100000a9, // 0x100000a9 + kMessage_0x100000aa, // 0x100000aa + kMessage_0x100000ab, // 0x100000ab + kMessage_0x100000ac, // 0x100000ac + kMessage_0x100000ad, // 0x100000ad + kMessage_0x100000ae, // 0x100000ae + kMessage_0x100000af, // 0x100000af + kMessage_0x100000b0, // 0x100000b0 + kMessage_0x100000b1, // 0x100000b1 + kMessage_0x100000b2, // 0x100000b2 + kTargetNPCPartyMember, // 0x100000b3, wparam = { uint32_t unk, uint32_t agent_id } + kTargetPlayerPartyMember, // 0x100000b4, wparam = { uint32_t unk, uint32_t player_number } + kVendorWindow, // 0x100000b5, wparam = UIPacket::kVendorWindow + kVendorError, // 0x100000b6, wparam = { uint32_t flag, uint32_t error_id } + kMessage_0x100000b7, // 0x100000b7 + kMessage_0x100000b8, // 0x100000b8 + kVendorItems, // 0x100000b9, wparam = UIPacket::kVendorItems + kMessage_0x100000ba, // 0x100000ba + kVendorTransComplete, // 0x100000bb, wparam = *TransactionType + kMessage_0x100000bc, // 0x100000bc + kVendorQuote, // 0x100000bd, wparam = UIPacket::kVendorQuote + kMessage_0x100000be, // 0x100000be + kMessage_0x100000bf, // 0x100000bf + kMessage_0x100000c0, // 0x100000c0 + kMessage_0x100000c1, // 0x100000c1 + kStartMapLoad, // 0x100000c2, wparam = { uint32_t map_id, ...} + kMessage_0x100000c3, // 0x100000c3 + kMessage_0x100000c4, // 0x100000c4 + kMessage_0x100000c5, // 0x100000c5 + kMessage_0x100000c6, // 0x100000c6 + kWorldMapUpdated, // 0x100000c7, Triggered when an area in the world map has been discovered/updated + kMessage_0x100000c8, // 0x100000c8 + kMessage_0x100000c9, // 0x100000c9 + kMessage_0x100000ca, // 0x100000ca + kMessage_0x100000cb, // 0x100000cb + kMessage_0x100000cc, // 0x100000cc + kMessage_0x100000cd, // 0x100000cd + kMessage_0x100000ce, // 0x100000ce + kMessage_0x100000cf, // 0x100000cf + kMessage_0x100000d0, // 0x100000d0 + kMessage_0x100000d1, // 0x100000d1 + kMessage_0x100000d2, // 0x100000d2 + kMessage_0x100000d3, // 0x100000d3 + kMessage_0x100000d4, // 0x100000d4 + kMessage_0x100000d5, // 0x100000d5 + kMessage_0x100000d6, // 0x100000d6 + kMessage_0x100000d7, // 0x100000d7 + kMessage_0x100000d8, // 0x100000d8 + kMessage_0x100000d9, // 0x100000d9 + kGuildMemberUpdated, // 0x100000da, wparam = { GuildPlayer::name_ptr } + kMessage_0x100000db, // 0x100000db + kMessage_0x100000dc, // 0x100000dc + kMessage_0x100000dd, // 0x100000dd + kMessage_0x100000de, // 0x100000de + kMessage_0x100000df, // 0x100000df + kMessage_0x100000e0, // 0x100000e0 + kShowHint, // 0x100000e1, wparam = { uint32_t icon_type, wchar_t* message_enc } + kMessage_0x100000e2, // 0x100000e2 + kMessage_0x100000e3, // 0x100000e3 + kMessage_0x100000e4, // 0x100000e4 + kMessage_0x100000e5, // 0x100000e5 + kMessage_0x100000e6, // 0x100000e6 + kMessage_0x100000e7, // 0x100000e7 + kMessage_0x100000e8, // 0x100000e8 + kWeaponSetSwapComplete, // 0x100000e9, wparam = UIPacket::kWeaponSwap* + kWeaponSetSwapCancel, // 0x100000ea + kWeaponSetUpdated, // 0x100000eb + kUpdateGoldCharacter, // 0x100000ec, wparam = { uint32_t unk, uint32_t gold_character } + kUpdateGoldStorage, // 0x100000ed, wparam = { uint32_t unk, uint32_t gold_storage } + kInventorySlotUpdated, // 0x100000ee, Triggered when an item is moved into a slot + kEquipmentSlotUpdated, // 0x100000ef, Triggered when an item is moved into a slot + kMessage_0x100000f0, // 0x100000f0 + kInventorySlotCleared, // 0x100000f1, Triggered when an item has been removed from a slot + kEquipmentSlotCleared, // 0x100000f2, Triggered when an item has been removed from a slot + kMessage_0x100000f3, // 0x100000f3 + kMessage_0x100000f4, // 0x100000f4 + kMessage_0x100000f5, // 0x100000f5 + kMessage_0x100000f6, // 0x100000f6 + kMessage_0x100000f7, // 0x100000f7 + kMessage_0x100000f8, // 0x100000f8 + kMessage_0x100000f9, // 0x100000f9 + kPvPWindowContent, // 0x100000fa + kMessage_0x100000fb, // 0x100000fb + kMessage_0x100000fc, // 0x100000fc + kMessage_0x100000fd, // 0x100000fd + kMessage_0x100000fe, // 0x100000fe + kMessage_0x100000ff, // 0x100000ff + kMessage_0x10000100, // 0x10000100 + kMessage_0x10000101, // 0x10000101 + kPreStartSalvage, // 0x10000102, { uint32_t item_id, uint32_t kit_id } + kTomeSkillSelection, // 0x10000103, wparam = UIPacket::kTomeSkillSelection* + kMessage_0x10000104, // 0x10000104 + kTradePlayerUpdated, // 0x10000105, wparam = GW::TraderPlayer* + kItemUpdated, // 0x10000106, wparam = UIPacket::kItemUpdated* + kMessage_0x10000107, // 0x10000107 + kMessage_0x10000108, // 0x10000108 + kMessage_0x10000109, // 0x10000109 + kMessage_0x1000010a, // 0x1000010a + kMessage_0x1000010b, // 0x1000010b + kMessage_0x1000010c, // 0x1000010c + kMessage_0x1000010d, // 0x1000010d + kMessage_0x1000010e, // 0x1000010e + kMessage_0x1000010f, // 0x1000010f + kMessage_0x10000110, // 0x10000110 + kMapChange, // 0x10000111, wparam = map id + kMessage_0x10000112, // 0x10000112 + kMessage_0x10000113, // 0x10000113 + kMessage_0x10000114, // 0x10000114 + kCalledTargetChange, // 0x10000115, wparam = { player_number, target_id } + kMessage_0x10000116, // 0x10000116 + kMessage_0x10000117, // 0x10000117 + kMessage_0x10000118, // 0x10000118 + kErrorMessage, // 0x10000119, wparam = { int error_index, wchar_t* error_encoded_string } + kPartyHardModeChanged, // 0x1000011a, wparam = { int is_hard_mode } + kPartyAddHenchman, // 0x1000011b + kPartyRemoveHenchman, // 0x1000011c + kMessage_0x1000011d, // 0x1000011d + kPartyAddHero, // 0x1000011e + kPartyRemoveHero, // 0x1000011f + kMessage_0x10000120, // 0x10000120 + kMessage_0x10000121, // 0x10000121 + kMessage_0x10000122, // 0x10000122 + kMessage_0x10000123, // 0x10000123 + kPartyAddPlayer, // 0x10000124 + kMessage_0x10000125, // 0x10000125 + kPartyRemovePlayer, // 0x10000126 + kMessage_0x10000127, // 0x10000127 + kMessage_0x10000128, // 0x10000128 + kMessage_0x10000129, // 0x10000129 + kDisableEnterMissionBtn, // 0x1000012a, wparam = boolean (1 = disabled, 0 = enabled) + kMessage_0x1000012b, // 0x1000012b + kMessage_0x1000012c, // 0x1000012c + kShowCancelEnterMissionBtn, // 0x1000012d + kMessage_0x1000012e, // 0x1000012e + kPartyDefeated, // 0x1000012f + kMessage_0x10000130, // 0x10000130 + kMessage_0x10000131, // 0x10000131 + kMessage_0x10000132, // 0x10000132 + kPartySearchCreated, // 0x10000133, wparam = GW::PartySearch* + kPartySearchIdChanged, // 0x10000134, wparam = uint32_t* party_search_id + kPartySearchRemoved, // 0x10000135, wparam = uint32_t* party_search_id + kPartySearchUpdated, // 0x10000136, wparam = GW::PartySearch* + kPartySearchInviteReceived, // 0x10000137, wparam = UIPacket::kPartySearchInviteReceived* + kMessage_0x10000138, // 0x10000138 + kPartySearchInviteSent, // 0x10000139 + kPartyShowConfirmDialog, // 0x1000013a, wparam = UIPacket::kPartyShowConfirmDialog + kMessage_0x1000013b, // 0x1000013b + kMessage_0x1000013c, // 0x1000013c + kMessage_0x1000013d, // 0x1000013d + kMessage_0x1000013e, // 0x1000013e + kMessage_0x1000013f, // 0x1000013f + kPreferenceEnumChanged, // 0x10000140, wparam = UiPacket::kPreferenceEnumChanged + kPreferenceFlagChanged, // 0x10000141, wparam = UiPacket::kPreferenceFlagChanged + kPreferenceValueChanged, // 0x10000142, wparam = UiPacket::kPreferenceValueChanged + kUIPositionChanged, // 0x10000143, wparam = UIPacket::kUIPositionChanged + kPreBuildLoginScene, // 0x10000144, Called with no args right before login scene is drawn + kMessage_0x10000145, // 0x10000145 + kMessage_0x10000146, // 0x10000146 + kMessage_0x10000147, // 0x10000147 + kMessage_0x10000148, // 0x10000148 + kMessage_0x10000149, // 0x10000149 + kMessage_0x1000014a, // 0x1000014a + kMessage_0x1000014b, // 0x1000014b + kMessage_0x1000014c, // 0x1000014c + kMessage_0x1000014d, // 0x1000014d + kQuestAdded, // 0x1000014e, wparam = { quest_id, ... } + kQuestDetailsChanged, // 0x1000014f, wparam = { quest_id, ... } + kQuestRemoved, // 0x10000150, wparam = { quest_id, ... } + kClientActiveQuestChanged, // 0x10000151, wparam = { quest_id, ... }. Triggered when the game requests the current quest to change + kMessage_0x10000152, // 0x10000152 + kServerActiveQuestChanged, // 0x10000153, wparam = UIPacket::kServerActiveQuestChanged*. Triggered when the server requests the current quest to change + kUnknownQuestRelated, // 0x10000154 + kMessage_0x10000155, // 0x10000155 + kDungeonComplete, // 0x10000156 + kMissionComplete, // 0x10000157 + kMessage_0x10000158, // 0x10000158 + kVanquishComplete, // 0x10000159 + kObjectiveAdd, // 0x1000015a, wparam = UIPacket::kObjectiveAdd* + kObjectiveComplete, // 0x1000015b, wparam = UIPacket::kObjectiveComplete* + kObjectiveUpdated, // 0x1000015c, wparam = UIPacket::kObjectiveUpdated* + kMessage_0x1000015d, // 0x1000015d + kMessage_0x1000015e, // 0x1000015e + kMessage_0x1000015f, // 0x1000015f + kMessage_0x10000160, // 0x10000160 + kMessage_0x10000161, // 0x10000161 + kMessage_0x10000162, // 0x10000162 + kMessage_0x10000163, // 0x10000163 + kMessage_0x10000164, // 0x10000164 + kTradeSessionStart, // 0x10000165, wparam = { trade_state, player_number } + kMessage_0x10000166, // 0x10000166 + kMessage_0x10000167, // 0x10000167 + kMessage_0x10000168, // 0x10000168 + kMessage_0x10000169, // 0x10000169 + kMessage_0x1000016a, // 0x1000016a + kTradeSessionUpdated, // 0x1000016b, no args + kMessage_0x1000016c, // 0x1000016c + kMessage_0x1000016d, // 0x1000016d + kMessage_0x1000016e, // 0x1000016e + kMessage_0x1000016e_1, // 0x1000016f, added to GW 2026-04-28 + kMessage_0x1000016f, // 0x10000170 + kMessage_0x10000170, // 0x10000171 + kMessage_0x10000171, // 0x10000172 + kMessage_0x10000172, // 0x10000173 + kMessage_0x10000173, // 0x10000174 + kMessage_0x10000174, // 0x10000175 + kCheckUIState, // 0x10000176 + kMessage_0x10000176, // 0x10000177 + kMessage_0x10000177, // 0x10000178 + kMessage_0x10000178, // 0x10000179 + kMessage_0x10000178_1, // 0x1000017a, added to GW 2026-02-26 + kMessage_0x10000178_2, // 0x1000017b, added to GW 2026-02-26 + kMessage_0x10000178_3, // 0x1000017c, added to GW 2026-02-26 + kDestroyUIPositionOverlay, // 0x1000017d + kEnableUIPositionOverlay, // 0x1000017e, wparam = uint32_t enable + kMessage_0x1000017b, // 0x1000017f + kGuildHall, // 0x10000180, wparam = gh key (uint32_t[4]) + kMessage_0x1000017d, // 0x10000181 + kLeaveGuildHall, // 0x10000182 + kTravel, // 0x10000183 + kOpenWikiUrl, // 0x10000184, wparam = char* url + kMessage_0x10000181, // 0x10000185 + kOpenUrlNoPrompt, // 0x10000186, wparam = char* url + kSetPreGameContext_Value0, // 0x10000187, wparam = uint32_t value + kMessage_0x10000184, // 0x10000188 + kGetPreGameContext_Value0, // 0x10000189, lparam = *uint32_t value_out + kSetPreGameContext_Value1, // 0x1000018a, wparam = uint32_t value , added to GW 2026-02-06 + kGetPreGameContext_Value1, // 0x1000018b, lparam = *uint32_t value_out, added to GW 2026-02-06 + kMessage_0x10000186, // 0x1000018c + kMessage_0x10000187, // 0x1000018d + kMessage_0x10000188, // 0x1000018e + kMessage_0x10000189, // 0x1000018f + kMessage_0x1000018a, // 0x10000190 + kMessage_0x1000018b, // 0x10000191 + kMessage_0x1000018c, // 0x10000192 + kMessage_0x1000018d, // 0x10000193 + kMessage_0x1000018d_2, // 0x10000194, added to GW 2026-06-17 + kAppendMessageToChat, // 0x10000195, wparam = wchar_t* message + kMessage_0x1000018f, // 0x10000196 + kMessage_0x10000190, // 0x10000197 + kMessage_0x10000191, // 0x10000198 + kMessage_0x10000192, // 0x10000199 + kMessage_0x10000193, // 0x1000019a + kMessage_0x10000194, // 0x1000019b + kMessage_0x10000195, // 0x1000019c + kMessage_0x10000196, // 0x1000019d + kMessage_0x10000197, // 0x1000019e + kMessage_0x10000198, // 0x1000019f + kMessage_0x10000199, // 0x100001a0 + kMessage_0x1000019a, // 0x100001a1 + kMessage_0x1000019b, // 0x100001a2 + kHideHeroPanel, // 0x100001a3, wparam = hero_id + kShowHeroPanel, // 0x100001a4, wparam = hero_id + kMessage_0x1000019e, // 0x100001a5 + kMessage_0x1000019f, // 0x100001a6 + kQuerySuppressedKeyAction, // 0x100001a7, wparam = 0, lparam = bool*. Used to check if the suppress action is pressed (usually shift) + kGetInventoryAgentId, // 0x100001a8, wparam = 0, lparam = uint32_t* agent_id_out. Used to fetch which agent is selected + kInventoryRelated1, // 0x100001a9, added to GW 2026-02-26 + kInventoryRelated2, // 0x100001aa, added to GW 2026-02-26 + kInventoryRelated3, // 0x100001ab, added to GW 2026-02-26 + kInventoryRelated4, // 0x100001ac, added to GW 2026-04-28 + kInventoryRelated4_1, // 0x100001ad, added to GW 2026-08-07 + kEquipItem, // 0x100001ae, wparam = { item_id, agent_id } + kMoveItem, // 0x100001af, wparam = { item_id, to_bag, to_slot, bool prompt } + kItemRelated_1, // 0x100001b0 + kItemTooltip, // 0x100001b1 + kItemRelated_3, // 0x100001b2, added to GW 2026-02-26 + kItemRelated_4, // 0x100001b3, added to GW 2026-02-26 + kItemRelated_5, // 0x100001b4, added to GW 2026-04-28 + kInitiateTrade, // 0x100001b5 + kMessage_0x100001a7, // 0x100001b6 + kMessage_0x100001a8, // 0x100001b7 + kMessage_0x100001a9, // 0x100001b8 + kMessage_0x100001aa, // 0x100001b9 + kPartySearchWindowDestroyed, // 0x100001ba + kMessage_0x100001ac, // 0x100001bb + kPartySearchWindowCreated, // 0x100001bc + kMessage_0x100001ae, // 0x100001bd + kMessage_0x100001af, // 0x100001be + kMessage_0x100001b0, // 0x100001bf + kMessage_0x100001b1, // 0x100001c0 + kMessage_0x100001b2, // 0x100001c1 + kMessage_0x100001b3, // 0x100001c2 + kMessage_0x100001b4, // 0x100001c3 + kMessage_0x100001b5, // 0x100001c4 + kInventoryAgentChanged, // 0x100001c5, Triggered when inventory needs updating due to agent change; no args + kInventoryRelated_1, // 0x100001c6 + kInventoryRelated_2, // 0x100001c7 + kMissionStatusRelated, // 0x100001c8 + kUnused_1c2, // 0x100001c9 + kCollapseExpandSkillListSection, // 0x100001ca + kPromptLoadTemplate, // 0x100001cb + kOpenTemplateManager, // 0x100001cc + kPromptSaveTemplate, // 0x100001cd + kOpenTemplate, // 0x100001ce, wparam = GW::UI::ChatTemplate* + kTemplateRelated_3, // 0x100001cf + kTemplateRelated_4, // 0x100001d0 + + // GWCA Client to Server commands. Only added the ones that are used for hooks, everything else goes straight into GW + + kSendLoadSkillTemplate = 0x30000000 | 0x3, // 0x30000003, wparam = SkillbarMgr::SkillTemplate* + kSendPingWeaponSet = 0x30000000 | 0x4, // 0x30000004, wparam = UIPacket::kSendPingWeaponSet* + kSendMoveItem = 0x30000000 | 0x5, // 0x30000005, wparam = UIPacket::kSendMoveItem* + kSendMerchantRequestQuote = 0x30000000 | 0x6, // 0x30000006, wparam = UIPacket::kSendMerchantRequestQuote* + kSendMerchantTransactItem = 0x30000000 | 0x7, // 0x30000007, wparam = UIPacket::kSendMerchantTransactItem* + kSendUseItem = 0x30000000 | 0x8, // 0x30000008, wparam = uint32_t item_id + kSendSetActiveQuest = 0x30000000 | 0x9, // 0x30000009, wparam = uint32_t quest_id + kSendAbandonQuest = 0x30000000 | 0xA, // 0x3000000a, wparam = uint32_t quest_id + kSendChangeTarget = 0x30000000 | 0xB, // 0x3000000b, wparam = UIPacket::kSendChangeTarget* // e.g. tell the gw client to focus on a different target + kSendCallTarget = 0x30000000 | 0x13, // 0x30000013, wparam = { uint32_t call_type, uint32_t agent_id } // also used to broadcast morale, death penalty, "I'm following X", etc + kSendDialog = 0x30000000 | 0x16, // 0x30000016, wparam = dialog_id // internal use + + + kStartWhisper = 0x30000000 | 0x17, // 0x30000017, wparam = UIPacket::kStartWhisper* + kGetSenderColor = 0x30000000 | 0x18, // 0x30000018, wparam = UIPacket::kGetColor* // Get chat sender color depending on channel, output object passed by reference + kGetMessageColor = 0x30000000 | 0x19, // 0x30000019, wparam = UIPacket::kGetColor* // Get chat message color depending on channel, output object passed by reference + kSendChatMessage = 0x30000000 | 0x1B, // 0x3000001b, wparam = UIPacket::kSendChatMessage* + kLogChatMessage = 0x30000000 | 0x1D, // 0x3000001d, wparam = UIPacket::kLogChatMessage*. Triggered when a message wants to be added to the persistent chat log. + kRecvWhisper = 0x30000000 | 0x1E, // 0x3000001e, wparam = UIPacket::kRecvWhisper* + kPrintChatMessage = 0x30000000 | 0x1F, // 0x3000001f, wparam = UIPacket::kPrintChatMessage*. Triggered when a message wants to be added to the in-game chat window. + kSendWorldAction = 0x30000000 | 0x20, // 0x30000020, wparam = UIPacket::kSendWorldAction* + kSetRendererValue = 0x30000000 | 0x21, // 0x30000021, wparam = UIPacket::kSetRendererValue + kIdentifyItem = 0x30000000 | 0x22, // 0x30000022, wparam = UIPacket::kUseKitOnItem + kSalvageItem = 0x30000000 | 0x23, // 0x30000023, wparam = UIPacket::kUseKitOnItem + kAddCustomChatLink = 0x30000000 | 0x24, // 0x30000024, wparam = UIPacket::kAddCustomChatLink. Triggered when GWCA parses a [label;url] link in chat that GW didn't handle + kChatLinkClicked = 0x30000000 | 0x25 // 0x30000025, wparam = UIPacket::kChatLinkClicked. Triggered when the player clicks an link in chat, e.g. build code + }; + + static_assert(GW::UI::UIMessage::kOpenTemplate == (GW::UI::UIMessage)0x100001ce); + + namespace UIPacket { + struct kUIFeatureChanged { + GW::UI::UiProfileSetting setting; + bool flag; + }; + struct kAddCustomChatLink { + GW::Chat::Channel channel; // GW::Chat::Channel + wchar_t link_prefix[32]; + wchar_t sender[32]; // whoever sent the chat message + wchar_t label[256]; + wchar_t url[256]; + }; + struct kChatLinkClicked { + const wchar_t* sender; + const wchar_t* label; + const wchar_t* url; + }; + struct kAgentOverheadNumber { + uint32_t agent_id; + uint32_t h0004; + wchar_t* encoded_str; + uint32_t style; + uint32_t h0010; + uint32_t h0014; + uint32_t h0018; + uint32_t h001c; + uint32_t agent_id_dupe; + int amount; + }; + static_assert(sizeof(kAgentOverheadNumber) == 40); + struct kDialogueMessage { + uint32_t agent_id; + wchar_t* sender; + wchar_t* message; + uint32_t duration; + uint32_t is_dialogue_1_or_2; + }; + struct kErrorMessage { + uint32_t error_id; + wchar_t* message; + }; + struct kAgentSkillPacket { + uint32_t agent_id; + GW::Constants::SkillID skill_id; + }; + struct kLoadMapContext { + const wchar_t* file_name; + Constants::MapID map_id; + Constants::InstanceType map_type; + Vec2f spawn_point; + uint32_t h0014; + uint32_t h0018; + bool* success; + }; + static_assert(sizeof(kLoadMapContext) == 0x20); + struct kMouseCoordsClick { + float offset_x; + float offset_y; + uint32_t h0008; + uint32_t h000c; + uint32_t* h0010; + uint32_t h0014; + }; + struct kUseKitOnItem { + uint32_t item_id; + uint32_t kit_id; + }; + struct kShowXunlaiChest { + uint32_t h0000 = 0; + bool storage_pane_unlocked = true; + bool anniversary_pane_unlocked = true; + }; + struct kMoveItem { + uint32_t item_id; + uint32_t to_bag_index; + uint32_t to_slot; + uint32_t prompt; + }; + struct kResize { + uint32_t h0000 = 0xffffffff; + float content_width; + float content_height; + float h000c = 0; + float h0010 = 0; + float content_width2; + float content_height2; + float margin_x; + float margin_y; + // ... + }; + struct kTomeSkillSelection { + uint32_t item_id; + uint32_t h0004; + uint32_t h0008; + }; + // A handler that leaves both entries at 0 falls through to the engine's + // own default sizing (GetMinSize()-based) rather than being treated as "wants zero size". + // + // flags (offset 0xc) is passed through uninitialized in that call site and never visibly + // set before the dispatch - not confirmed as meaningful; treat as reserved/unused for now. + struct kMeasureContent { + float max_width; // Available width, after the frame's own margin/padding is already subtracted + float max_height; // Available height, after the frame's own margin/padding is already subtracted + float* size_output; // Points at a 2-float [width, height] buffer the handler must fill + uint32_t flags; // Not confirmed meaningful - see comment above + }; + // Every field here is relative to the frame's own content-origin rect (its content_left/ + // content_bottom/content_right/content_top) - not absolute screen coordinates: + // available_width = content_right - content_left + // available_height = content_top - content_bottom + // local_left = resolved_left - content_left + // local_bottom = resolved_bottom - content_bottom + // local_right = resolved_right - content_left + // local_top = resolved_top - content_bottom + // i.e. "here is how much room you have, and here is where your own just-resolved rect sits + // within it" + struct kSetLayout { + float available_width; + float available_height; + float local_left; + float local_bottom; + float local_right; + float local_top; + }; + struct kSetAgentProfession { + AgentID agent_id; + uint32_t primary; + uint32_t secondary; + }; + struct kWeaponSwap { + uint32_t weapon_bar_frame_id; + uint32_t weapon_set_id; + }; + struct kWeaponSetChanged { + uint32_t h0000; + uint32_t h0004; + uint32_t h0008; + uint32_t h000c; + }; + struct kChangeTarget { + uint32_t evaluated_target_id; + bool has_evaluated_target_changed; + uint32_t auto_target_id; + bool has_auto_target_changed; + uint32_t manual_target_id; + bool has_manual_target_changed; + }; + struct kSendLoadSkillTemplate { + uint32_t agent_id; + SkillbarMgr::SkillTemplate* skill_template; + }; + struct kVendorWindow { + Merchant::TransactionType transaction_type; + uint32_t unk; + uint32_t merchant_agent_id; + uint32_t is_pending; + }; + struct kVendorQuote { + uint32_t item_id; + uint32_t price; + }; + struct kVendorItems { + Merchant::TransactionType transaction_type; + uint32_t item_ids_count; + uint32_t* item_ids_buffer1; // world->merchant_items.buffer + uint32_t* item_ids_buffer2; // world->merchant_items2.buffer + }; + struct kSetRendererValue { + uint32_t renderer_mode; // 0 for window, 2 for full screen + uint32_t metric_id; // TODO: Enum this! + uint32_t value; + }; + struct kEffectAdd { + uint32_t agent_id; + Effect* effect; + }; + struct kAgentSpeechBubble { + uint32_t agent_id; + wchar_t* message; + uint32_t h0008; + uint32_t h000c; + }; + struct kAgentSkillStartedCast { + uint32_t agent_id; + Constants::SkillID skill_id; + float duration; + uint32_t h000c; + }; + struct kPreStartSalvage { + uint32_t item_id; + uint32_t kit_id; + }; + struct kServerActiveQuestChanged { + GW::Constants::QuestID quest_id; + GW::GamePos marker; + uint32_t h0024; + GW::Constants::MapID map_id; + uint32_t log_state; + }; + struct kPrintChatMessage { + GW::Chat::Channel channel; + wchar_t* message; + FILETIME timestamp; + uint32_t is_reprint; + }; + struct kPartyShowConfirmDialog { + uint32_t ui_message_to_send_to_party_frame; + uint32_t prompt_identitifier; + wchar_t* prompt_enc_str; + }; + struct kUIPositionChanged { + uint32_t window_id; + UI::WindowPosition* position; + }; + struct kPreferenceFlagChanged { + UI::FlagPreference preference_id; + uint32_t new_value; + }; + struct kPreferenceValueChanged { + UI::NumberPreference preference_id; + uint32_t new_value; + }; + struct kPreferenceEnumChanged { + UI::EnumPreference preference_id; + uint32_t enum_index; + }; + struct kPartySearchInvite { + uint32_t source_party_search_id; + uint32_t dest_party_search_id; + }; + struct kPostProcessingEffect { + uint32_t tint; + float amount; + }; + struct kLogout { + uint32_t unknown; + uint32_t character_select; + }; + static_assert(sizeof(kLogout) == 0x8); + + struct kKeyAction { + uint32_t gw_key; + uint32_t modifiers = 0; + uint32_t state_flags = 0; // shift held = 0x4, ctrl = 0x2, alt = 0x1 + }; + struct kMouseClick { + uint32_t mouse_button; // 0x0 = left, 0x1 = middle, 0x2 = right + uint32_t is_doubleclick; + uint32_t unknown_type_screen_pos; + uint32_t h000c; + uint32_t h0010; + }; + enum ActionState : uint32_t { + MouseDown = 0x6, // 0x6 + MouseUp = 0x7, // 0x7 + MouseClick = 0x8, // 0x8 + MouseDoubleClick = 0x9, // 0x9 + DragRelease = 0xb, // 0xb + KeyDown = 0xe // 0xe + }; + struct kMouseAction { + uint32_t frame_id; + uint32_t child_offset_id; + ActionState current_state; + void* wparam = 0; + void* lparam = 0; + }; + struct kWriteToChatLog { + GW::Chat::Channel channel; + wchar_t* message; + GW::Chat::Channel channel_dupe; + }; + struct kPlayerChatMessage { + GW::Chat::Channel channel; + wchar_t* message; + uint32_t player_number; + }; + + struct kInteractAgent { + uint32_t agent_id; + bool call_target; + }; + + struct kSendChangeTarget { + uint32_t target_id; + uint32_t auto_target_id; + }; + + struct kSendCallTarget { + CallTargetType call_type; + uint32_t agent_id; + }; + + struct kGetColor { + Chat::Color* color; + GW::Chat::Channel channel; + }; + + struct kWriteToChatLogWithSender { + uint32_t channel; + wchar_t* message; + wchar_t* sender_enc; + }; + + struct kSendPingWeaponSet { + uint32_t agent_id; + uint32_t weapon_item_id; + uint32_t offhand_item_id; + }; + struct kSendMoveItem { + uint32_t item_id; + uint32_t quantity; + uint32_t bag_index; + uint32_t slot; + }; + struct kSendMerchantRequestQuote { + Merchant::TransactionType type; + uint32_t item_id; + }; + struct kSendMerchantTransactItem { + Merchant::TransactionType type; + uint32_t h0004; + Merchant::QuoteInfo give; + uint32_t gold_recv; + Merchant::QuoteInfo recv; + }; + struct kSendChatMessage { + wchar_t* message; + uint32_t agent_id; + }; + struct kLogChatMessage { + wchar_t* message; + GW::Chat::Channel channel; + }; + struct kRecvWhisper { + uint32_t transaction_id; + wchar_t* from; + wchar_t* message; + }; + struct kStartWhisper { + wchar_t* player_name; + }; + struct kCompassDraw { + uint32_t player_number; + uint32_t session_id; + uint32_t number_of_points; + CompassPoint* points; + }; + struct kObjectiveAdd { + uint32_t objective_id; + wchar_t* name; + uint32_t type; + }; + struct kObjectiveComplete { + uint32_t objective_id; + }; + struct kObjectiveUpdated { + uint32_t objective_id; + }; + // Straight passthru of GW::Packets::StoC::ItemGeneral + struct kItemUpdated { + uint32_t item_id; + uint32_t model_file_id; + uint32_t type; + uint32_t unk1; + uint32_t extra_id; // Dye color + uint32_t materials; + uint32_t unk2; + uint32_t interaction; // Flags + uint32_t price; + uint32_t model_id; + uint32_t quantity; + wchar_t* enc_name; + uint32_t mod_struct_size; + uint32_t* mod_struct; + }; + struct kInventorySlotUpdated { + uint32_t unk; + uint32_t item_id; + uint32_t bag_index; + uint32_t slot_id; + }; + struct kSendWorldAction { + WorldActionId action_id; + GW::AgentID agent_id; + bool suppress_call_target; // 1 to block "I'm targetting X", but will also only trigger if the key thing is down + }; + struct kAllyOrGuildMessage { + GW::Chat::Channel channel; + wchar_t* message; + wchar_t* sender; + wchar_t* guild_tag; + }; + } + } +} diff --git a/Dependencies/GWCA/Include/GWCA/Context/MapContext.h b/Dependencies/GWCA/Include/GWCA/Context/MapContext.h index ea6a4222..c7a0fac8 100644 --- a/Dependencies/GWCA/Include/GWCA/Context/MapContext.h +++ b/Dependencies/GWCA/Include/GWCA/Context/MapContext.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include @@ -68,8 +69,7 @@ namespace GW { }; static_assert(sizeof(MapStaticData) == 0xA0, "struct MapStaticData has incorrect size"); - // Those are planes that are blocked and can be unblocked at runtime. e.g., the gates in foundry - // Those aren't in the dat file, but sent from the server + // Planes blocked but unblockable at runtime (e.g. the Foundry gates); sent by the server, not in the dat file. typedef BaseArray BlockedPlaneArray; static_assert(sizeof(BlockedPlaneArray) == 0xC, "struct BlockedPlaneArray has incorrect size"); @@ -123,9 +123,7 @@ namespace GW { }; static_assert(sizeof(PathContext) == 0x94, "struct PathContext has incorrect size"); - // The game can optionally load a DLL to do the path finding. - // The DLL is named "PathEngine.dll", but not clear if it's a 3rd party or just their name - // for development. + // The game can optionally load "PathEngine.dll" for path finding; unclear if third party or their own dev name. struct PathEngineContext { /* +h0000 */ void **vtable; /* +h0004 */ uint32_t h0004; @@ -136,6 +134,102 @@ namespace GW { }; static_assert(sizeof(PathEngineContext) == 0x18, "struct PathEngineContext has incorrect size"); + // Point lights baked into the map, parsed from its "LITE" chunk by Engine\Map\MapLight.cpp. + // Torches, braziers and campfires are these, not props with a glow texture. + struct MapLightDescriptor { + /* +h0000 */ Vec3f position; + /* +h000C */ uint8_t red; + /* +h000D */ uint8_t green; + /* +h000E */ uint8_t blue; + /* +h000F */ uint8_t h000F; + /* +h0010 */ float intensity; // colour bytes are premultiplied by intensity / 255 when the light is built + /* +h0014 */ float inner_range; + /* +h0018 */ float outer_range; + }; + static_assert(sizeof(MapLightDescriptor) == 0x1C, "struct MapLightDescriptor has incorrect size"); + + // Field layout taken from MapLightApplyDescriptor, which hands each field straight to a GrLight setter: + // GrLightSetColour(light, &desc->red, desc->intensity), GrLightSetPosition(light, &desc->position, 0), + // GrLightSetRange(light, desc->inner_range, desc->outer_range) + struct MapLightContext { + /* +h0000 */ Array descriptors; + /* +h0010 */ Array lights; // HGrLight handles, parallel to descriptors (same count) + }; + static_assert(sizeof(MapLightContext) == 0x20, "struct MapLightContext has incorrect size"); + + // Only the fields below are confirmed; the real object is at least 0x1A0 bytes, so no size assert. + // Only present when MapContext::flags bit 1 is set. + struct MapWaterContext { + /* +h0000 */ uint32_t h0000[0x2b]; + /* +h00AC */ uint32_t scene_program; // the single handle water contributes to the scene program list + /* +h00B0 */ uint32_t h00B0[0xc]; + /* +h00E0 */ uint32_t shader_programs[2]; // two of the four per-map shader programs, chosen by quality + /* +h00E8 */ uint32_t h00E8; + /* +h00EC */ float plane_z; // world height of the water plane + /* +h00F0 */ uint32_t h00F0[0x2a]; + /* +h0198 */ uint32_t shader_programs2[2]; // the other two quality variants + }; + + // === terrain textures / baked terrain shadows === + // + // GW bakes the map's static terrain shadows into the terrain textures, and streams them in + // per tile. The data lives in two layers, both reachable from the terrain texture context: + // 1. a per-texel bitmask, entropy coded per tile and decoded on demand into a scratch + // buffer (soft edges, detail) - TrnTexShadowDecompressTile; + // 2. a per-block "this whole block is in shadow" bitmask, held in the map's own data and + // tested first - a set bit fills the block flat with the shadow colour without ever + // consulting layer 1 - TrnTexComposeTileLighting. + // Clearing only layer 1 leaves the solid interiors of large shadows behind, which is what + // makes layer 2 worth documenting. + + // 32x32 blocks, one bit each, MSB first, 4 bytes per row; 0x80 bytes in total. + // Quality 0 walks it as two 16-row halves (the second at +0x40), every other quality walks + // all 32 rows in one pass - both reach exactly 0x80 bytes, so that is the whole mask. + typedef uint8_t TerrainBlockShadowMask[0x80]; + + // One per terrain tile, indexed by `shadow_grid_width * tile_y + tile_x`. + struct TerrainShadowRecord { + /* +h0000 */ void* compressed_stream; // layer 1, entropy coded, decoded per tile + /* +h0004 */ void* compressed_stream_end; + /* +h0008 */ TerrainBlockShadowMask* block_mask; // layer 2, the map's own data - not scratch + }; + static_assert(sizeof(TerrainShadowRecord) == 0xC, "struct TerrainShadowRecord has incorrect size"); + + struct TerrainTexTile { + /* +h0000 */ uint32_t h0000[3]; + /* +h000C */ uint32_t tile_x; + /* +h0010 */ uint32_t tile_y; + /* +h0014 */ uint32_t state; // set to 2 once the tile's shadow layer has been decoded + /* +h0018 */ uint32_t h0018; // zeroed alongside the state above + }; + + // A single streamed terrain texture. Only the two fields below are confirmed, so no size assert. + struct TerrainTexture { + /* +h0000 */ uint32_t h0000[0x27]; + /* +h009C */ uint32_t stream_flags; // bit 0x800: decompress + upload still pending + /* +h00A0 */ uint32_t h00A0[0x37]; + /* +h017C */ TerrainTexTile* tile; // tagged pointer: null, or bit 0 set, means no tile + }; + + // The map-wide terrain texture context (`TrnTex`). Partially mapped, so no size assert. + struct TerrainTexContext { + /* +h0000 */ uint32_t h0000[0x2a]; + // The bound tested by the game itself before indexing, so a tile outside the grid is + // simply "no baked shadow" rather than a read off the end. + /* +h00A8 */ BaseArray shadow_records; + // Row stride for the index above. The three fields at +0xA8/+0xB0/+0xB4 read equally well + // as an Array whose m_param happens to be the width; naming it is + // the more useful of two identical layouts. + /* +h00B4 */ uint32_t shadow_grid_width; + /* +h00B8 */ uint32_t h00B8[0x10b]; + // Scratch, shared by every tile this context streams: layer 1 is decoded here and + // uploaded, then the buffer is reused for the next tile. 0x110 rows of 0x22 bytes = + // 272x272 bits, one per terrain texel. A SET bit is shadow, a clear bit is lit. + /* +h04E4 */ uint8_t decoded_shadow_tile[0x110][0x22]; + }; + // Self-check on the padding above; the real object is at least this big, not exactly. + static_assert(sizeof(TerrainTexContext) == 0x2904, "struct TerrainTexContext has incorrect layout"); + struct MapContext { /* +h0000 */ uint32_t map_type; // less than 4 /* +h0004 */ Vec2f start_pos; @@ -149,8 +243,8 @@ namespace GW { /* +h0078 */ PathEngineContext* path_engine; /* +h007C */ PropsContext* props; /* +h0080 */ uint32_t h0080; - /* +h0084 */ void* terrain; - /* +h0088 */ uint32_t h0088; + /* +h0084 */ void* terrain; // relationship to TerrainTexContext is unconfirmed + /* +h0088 */ void* collision; // "Collision" map chunk (Engine\Map\Collision\CollApi.cpp) /* +h008C */ GW::Constants::MapID map_id; /* +h0090 */ uint32_t h0090; /* +h0094 */ uint32_t h0094; @@ -161,37 +255,31 @@ namespace GW { /* +h00A8 */ uint32_t h00A8; /* +h00AC */ uint32_t h00AC; /* +h00B0 */ uint32_t h00B0; - /* +h00B4 */ uint32_t h00B4; - /* +h00B8 */ uint32_t h00B8; - /* +h00BC */ uint32_t h00BC; - /* +h00C0 */ uint32_t h00C0; - /* +h00C4 */ uint32_t h00C4; - /* +h00C8 */ uint32_t h00C8; - /* +h00CC */ uint32_t h00CC; - /* +h00D0 */ uint32_t h00D0; - /* +h00D4 */ uint32_t h00D4; + /* +h00B4 */ Vec3f view_eye; // cached by GmWorldUpdateView + /* +h00C0 */ Vec3f view_target; + /* +h00CC */ Vec3f view_up; /* +h00D8 */ uint32_t h00D8; - /* +h00DC */ uint32_t h00DC; + /* +h00DC */ uint32_t view_flags; // bit 0: view has been updated this frame /* +h00E0 */ uint32_t h00E0; /* +h00E4 */ uint32_t h00E4; /* +h00E8 */ uint32_t h00E8; - /* +h00EC */ uint32_t h00EC; + /* +h00EC */ MapLightContext* lights; // "Light" map chunk /* +h00F0 */ uint32_t h00F0; /* +h00F4 */ uint32_t h00F4; /* +h00F8 */ uint32_t h00F8; /* +h00FC */ uint32_t h00FC; /* +h0100 */ uint32_t h0100; /* +h0104 */ uint32_t h0104; - /* +h0108 */ uint32_t h0108; + /* +h0108 */ uint32_t flags; // bit 1: map has water /* +h010C */ uint32_t h010C; /* +h0110 */ uint32_t h0110; /* +h0114 */ uint32_t h0114; /* +h0118 */ uint32_t h0118; /* +h011C */ uint32_t h011C; - /* +h0120 */ uint32_t h0120; + /* +h0120 */ void* shore; // "Shore" map chunk, only loaded when flags bit 1 is set /* +h0124 */ uint32_t h0124; /* +h0128 */ uint32_t h0128; - /* +h012C */ uint32_t h012C; + /* +h012C */ MapWaterContext* water; /* +h0130 */ void* zones; /* +h0134 */ uint32_t h0134; }; diff --git a/Dependencies/GWCA/Include/GWCA/Context/PreGameContext.h b/Dependencies/GWCA/Include/GWCA/Context/PreGameContext.h index 3e196fdd..ac91aaf4 100644 --- a/Dependencies/GWCA/Include/GWCA/Context/PreGameContext.h +++ b/Dependencies/GWCA/Include/GWCA/Context/PreGameContext.h @@ -38,9 +38,7 @@ namespace GW { /* +h0148 */ GW::Array chars; }; } -// ============================================================ // C Interop API -// ============================================================ extern "C" { GWCA_API void* GetAvailableChars(); } diff --git a/Dependencies/GWCA/Include/GWCA/Context/TradeContext.h b/Dependencies/GWCA/Include/GWCA/Context/TradeContext.h index c6d0794f..02b58734 100644 --- a/Dependencies/GWCA/Include/GWCA/Context/TradeContext.h +++ b/Dependencies/GWCA/Include/GWCA/Context/TradeContext.h @@ -29,8 +29,7 @@ namespace GW { /* +h0010 */ TradePlayer player; /* +h0024 */ TradePlayer partner; - // bool GetPartnerAccepted(); - // bool GetPartnerOfferSent(); + // bool GetPartnerAccepted(); bool GetPartnerOfferSent(); bool GetIsTradeOffered() const { return (flags & TRADE_OFFER_SEND) != 0; } bool GetIsTradeInitiated() const { return (flags & TRADE_INITIATED) != 0; } diff --git a/Dependencies/GWCA/Include/GWCA/GWCAVersion.h b/Dependencies/GWCA/Include/GWCA/GWCAVersion.h index 1f9a7a58..4767a4c1 100644 --- a/Dependencies/GWCA/Include/GWCA/GWCAVersion.h +++ b/Dependencies/GWCA/Include/GWCA/GWCAVersion.h @@ -1,10 +1,10 @@ #pragma once #define GWCA_VERSION_MAJOR 4 -#define GWCA_VERSION_MINOR 7 -#define GWCA_VERSION_PATCH 2 -#define GWCA_VERSION_BUILD 3 -#define GWCA_VERSION "4.7.2.3" +#define GWCA_VERSION_MINOR 8 +#define GWCA_VERSION_PATCH 5 +#define GWCA_VERSION_BUILD 0 +#define GWCA_VERSION "4.8.5.0" namespace GWCA { constexpr int VersionMajor = GWCA_VERSION_MAJOR; diff --git a/Dependencies/GWCA/Include/GWCA/GWCAVersion.h.in b/Dependencies/GWCA/Include/GWCA/GWCAVersion.h.in new file mode 100644 index 00000000..e7401242 --- /dev/null +++ b/Dependencies/GWCA/Include/GWCA/GWCAVersion.h.in @@ -0,0 +1,15 @@ +#pragma once + +#define GWCA_VERSION_MAJOR @GWCA_VERSION_MAJOR@ +#define GWCA_VERSION_MINOR @GWCA_VERSION_MINOR@ +#define GWCA_VERSION_PATCH @GWCA_VERSION_PATCH@ +#define GWCA_VERSION_BUILD @GWCA_VERSION_BUILD@ +#define GWCA_VERSION "@GWCA_VERSION@" + +namespace GWCA { + constexpr int VersionMajor = GWCA_VERSION_MAJOR; + constexpr int VersionMinor = GWCA_VERSION_MINOR; + constexpr int VersionPatch = GWCA_VERSION_PATCH; + constexpr int VersionBuild = GWCA_VERSION_BUILD; + constexpr const char* Version = GWCA_VERSION; +} \ No newline at end of file diff --git a/Dependencies/GWCA/Include/GWCA/GameContainers/ObjectPool.h b/Dependencies/GWCA/Include/GWCA/GameContainers/ObjectPool.h index 871a10c0..76782033 100644 --- a/Dependencies/GWCA/Include/GWCA/GameContainers/ObjectPool.h +++ b/Dependencies/GWCA/Include/GWCA/GameContainers/ObjectPool.h @@ -15,8 +15,4 @@ namespace GW { static_assert(sizeof(ObjectPool) == 0xC, "struct ObjectPool has incorrect size"); } -// The functions used to allocate looks like: -// void *__thiscall ObjectPool::Alloc(ObjectPool *pool, int32_t typesize, const char *typename); -// So, the typename & typesize are passed at every allocs, similar to `MemAlloc`. -// It's worth nothing that the minimum typesize is 4, though Guild Wars doesn't assert it, it just -// ends up crashing. This is due to the freeList pointer lists that are 4 bytes each. +// ObjectPool::Alloc(pool, typesize, typename) passes type info per alloc; minimum typesize is 4 (freeList pointers) or it crashes. diff --git a/Dependencies/GWCA/Include/GWCA/GameEntities/Agent.h b/Dependencies/GWCA/Include/GWCA/GameEntities/Agent.h index 06d65256..3906b565 100644 --- a/Dependencies/GWCA/Include/GWCA/GameEntities/Agent.h +++ b/Dependencies/GWCA/Include/GWCA/GameEntities/Agent.h @@ -6,6 +6,7 @@ #include #include +#include namespace GW { typedef uint32_t AgentID; @@ -90,19 +91,12 @@ namespace GW { /* +h0109 */ uint8_t offhand_item_type; // Offhand item type for stance/animation /* +h010A */ uint16_t offhand_item_id; // Offhand item id for stance/animation - inline uint32_t GetType() { - return vtable->GetType(this); - } - inline bool RedrawEquipmentSlot(uint32_t slot) { - if (!(slot < _countof(items) && items[slot].model_file_id)) - return false; - return vtable->EquipItem(this, 0, slot), true; - } - inline bool UndrawEquipmentSlot(uint32_t slot) { - if (!(slot < _countof(items) && items[slot].model_file_id)) - return false; - return vtable->RemoveItem(this, 0, slot), true; - } + // These three call through the game's vtable (see Source/Agent.cpp) -- kept + // out of line so the wasm table-adoption dance stays an implementation + // detail rather than something every caller's translation unit compiles. + GWCA_API uint32_t GetType(); + GWCA_API bool RedrawEquipmentSlot(uint32_t slot); + GWCA_API bool UndrawEquipmentSlot(uint32_t slot); }; static_assert(sizeof(NPCEquipment) == 0x10C); @@ -145,6 +139,30 @@ namespace GW { struct AgentGadget; struct AgentLiving; + // Bits in GW::Agent::name_properties, which AvAgent.cpp recomputes name tag visibility from. + enum NameTagFlags : uint32_t { + // In the mouse pick list; cleared wholesale whenever that list is rebuilt. + NameTagFlags_Picked = 0x8, + // Moused-over agent: underlines the tag, glows the model, draws the selection decal. + NameTagFlags_Highlighted = 0x10, + // Within name tag draw distance (1500 gwinches from the camera). + NameTagFlags_InRange = 0x20, + // The evaluated target - manual target, else auto target. + NameTagFlags_EvaluatedTarget = 0x80, + // The manual target, while a different auto target exists. + NameTagFlags_ManualTarget = 0x100, + // Name tags globally suppressed (cutscenes, /hideui); refcounted by the client. + NameTagFlags_Suppressed = 0x200, + // Agent::type passes the persistent filter from the Guild Wars name tag options. + NameTagFlags_PassesFilter = 0x400, + // Dropped item reserved for another player, so it never gets a distance-based tag. + NameTagFlags_NotOwnedByPlayer = 0x800, + // Agent::type passes the transient filter, bound to the "show item names" key. + NameTagFlags_PassesTransientFilter = 0x1000, + // Name tag disabled for this agent regardless of any filter. + NameTagFlags_Disabled = 0x20000 + }; + struct Agent { /* +h0000 */ uint32_t* vtable; /* +h0004 */ uint32_t h0004; @@ -165,7 +183,7 @@ namespace GW { /* +h004C */ float rotation_angle; // Rotation in radians from East (-pi to pi) /* +h0050 */ float rotation_cos; // cosine of rotation /* +h0054 */ float rotation_sin; // sine of rotation - /* +h0058 */ uint32_t name_properties; // Bitmap basically telling what the agent is + /* +h0058 */ NameTagFlags name_properties; // Bitmap basically telling what the agent is /* +h005C */ uint32_t ground; /* +h0060 */ uint32_t h0060; /* +h0064 */ Vec3f terrain_normal; diff --git a/Dependencies/GWCA/Include/GWCA/GameEntities/Camera.h b/Dependencies/GWCA/Include/GWCA/GameEntities/Camera.h index f6941909..cc9b2f61 100644 --- a/Dependencies/GWCA/Include/GWCA/GameEntities/Camera.h +++ b/Dependencies/GWCA/Include/GWCA/GameEntities/Camera.h @@ -65,8 +65,7 @@ namespace GW { float GetYaw() const { return yaw; } float GetPitch() const { return pitch; } - /// \brief This is not the FoV that GW uses to render - /// see GW::Render::GetFieldOfView() + // rief Not the FoV GW renders with -- see GW::Render::GetFieldOfView() float GetFieldOfView() const { return field_of_view; } bool IsCameraUnlocked() const { return camera_mode == 3; } diff --git a/Dependencies/GWCA/Include/GWCA/GameEntities/Frame.h b/Dependencies/GWCA/Include/GWCA/GameEntities/Frame.h index 003ea458..cb14c2b3 100644 --- a/Dependencies/GWCA/Include/GWCA/GameEntities/Frame.h +++ b/Dependencies/GWCA/Include/GWCA/GameEntities/Frame.h @@ -65,7 +65,8 @@ namespace GW { GWCA_API SortHandler_pt GetSortHandler(); GWCA_API bool ClearItems(); GWCA_API bool RemoveItem(uint32_t child_offset_id); - GWCA_API bool AddItem(uint32_t flags, uint32_t child_offset_id, GW::UI::UIInteractionCallback callback); + // Returns the frame_id of the added item's frame, or 0 on failure. + GWCA_API uint32_t AddItem(uint32_t flags, uint32_t child_offset_id, GW::UI::UIInteractionCallback callback); GWCA_API uint32_t GetItemFrameId(uint32_t child_offset_id); GWCA_API bool GetSelectedValue(uint32_t* selected_value); @@ -89,13 +90,7 @@ namespace GW { FrameWithValue& operator=(const FrameWithValue&) = default; FrameWithValue& operator=(FrameWithValue&&) = default; - // Pure virtual: every concrete usage of this type is through one - // of its overriding subclasses below (ProgressBar, CheckboxFrame, - // DropdownFrame, SliderFrame all override both) — there was - // previously no definition anywhere in this codebase for a bare - // FrameWithValue's own GetValue/SetValue, which GCC's Itanium - // ABI (unlike MSVC's) requires in order to know where to emit a - // vtable for the class ("key function" rule). + // Pure virtual: GCC's Itanium ABI needs a key function to emit the vtable, and every concrete use is via an overriding subclass. virtual uint32_t GetValue() = 0; virtual bool SetValue(uint32_t value) = 0; }; diff --git a/Dependencies/GWCA/Include/GWCA/GameEntities/Item.h b/Dependencies/GWCA/Include/GWCA/GameEntities/Item.h index 6504f24a..64e7d1b4 100644 --- a/Dependencies/GWCA/Include/GWCA/GameEntities/Item.h +++ b/Dependencies/GWCA/Include/GWCA/GameEntities/Item.h @@ -50,15 +50,7 @@ namespace GW { static_assert(sizeof(DyeInfo) == 3, "struct DyeInfo has incorrect size"); struct ItemData { - // No default member initializers: this type is used as a member - // of a nested anonymous struct/union in Agent.h - // (NPCEquipment) — MSVC permits default member initializers - // there (making the implicit default constructor non-trivial), - // but GCC rejects any member with a non-trivial constructor in - // an anonymous struct/union. ItemData is a raw overlay onto - // existing game memory throughout this codebase, never - // meaningfully default-constructed for its own sake, so this - // doesn't change any real behavior. + // No default member initializers: GCC rejects non-trivial members in the anonymous struct/union in Agent.h that uses this. uint32_t model_file_id; GW::Constants::ItemType type; GW::DyeInfo dye; diff --git a/Dependencies/GWCA/Include/GWCA/GameEntities/NPC.h b/Dependencies/GWCA/Include/GWCA/GameEntities/NPC.h index 44375255..c020cce7 100644 --- a/Dependencies/GWCA/Include/GWCA/GameEntities/NPC.h +++ b/Dependencies/GWCA/Include/GWCA/GameEntities/NPC.h @@ -24,8 +24,7 @@ namespace GW { /* +h0014 */ GW::Constants::Profession primary; /* +h0018 */ GW::Constants::Profession secondary; /* +h001C */ uint8_t default_level; - // +h001D uint8_t padding; - // +h001E uint16_t padding; + // +h001D uint8_t padding; +h001E uint16_t padding; /* +h0020 */ wchar_t *name_enc; /* +h0024 */ uint32_t *model_files; /* +h0028 */ uint32_t files_count; // length of ModelFile diff --git a/Dependencies/GWCA/Include/GWCA/GameEntities/Pathing.h b/Dependencies/GWCA/Include/GWCA/GameEntities/Pathing.h index eea4aee9..6158fa6d 100644 --- a/Dependencies/GWCA/Include/GWCA/GameEntities/Pathing.h +++ b/Dependencies/GWCA/Include/GWCA/GameEntities/Pathing.h @@ -3,136 +3,141 @@ #include namespace GW { - struct PathingTrapezoid { // total: 0x30/48 - /* +h0000 */ uint32_t id; - union { - /* +h0004 */ PathingTrapezoid* adjacent[4]; - struct { - /* +h0004 */ PathingTrapezoid* top_left; - /* +h0008 */ PathingTrapezoid* top_right; - /* +h000C */ PathingTrapezoid* bottom_left; - /* +h0010 */ PathingTrapezoid* bottom_right; - }; - }; - /* +h0014 */ uint16_t portal_left; - /* +h0016 */ uint16_t portal_right; - /* +h0018 */ float XTL; - /* +h001C */ float XTR; - /* +h0020 */ float YT; - /* +h0024 */ float XBL; - /* +h0028 */ float XBR; - /* +h002C */ float YB; - }; - static_assert(sizeof(PathingTrapezoid) == 48, "struct PathingTrapezoid has incorrect size"); + struct PathingTrapezoid { // total: 0x30/48 + /* +h0000 */ uint32_t id; + union { + /* +h0004 */ PathingTrapezoid* adjacent[4]; + struct { + /* +h0004 */ PathingTrapezoid* top_left; + /* +h0008 */ PathingTrapezoid* top_right; + /* +h000C */ PathingTrapezoid* bottom_left; + /* +h0010 */ PathingTrapezoid* bottom_right; + }; + }; + /* +h0014 */ uint16_t portal_left; + /* +h0016 */ uint16_t portal_right; + /* +h0018 */ float XTL; + /* +h001C */ float XTR; + /* +h0020 */ float YT; + /* +h0024 */ float XBL; + /* +h0028 */ float XBR; + /* +h002C */ float YB; + }; + static_assert(sizeof(PathingTrapezoid) == 48, "struct PathingTrapezoid has incorrect size"); - struct Node { - /* +h0000 */ uint32_t type; //XNode = 0, YNode = 1, SinkNode = 2 - /* +h0004 */ uint32_t id; - }; + struct Node { + /* +h0000 */ uint32_t type; //XNode = 0, YNode = 1, SinkNode = 2 + /* +h0004 */ uint32_t id; + }; - struct XNode : Node { // type = 0 - /* +h0008 */ Vec2f pos; - /* +h0010 */ Vec2f dir; - /* +h0018 */ Node *left; - /* +h001C */ Node *right; - }; - static_assert(sizeof(XNode) == 32, "struct XNode has incorrect size"); + struct XNode : Node { // type = 0 + /* +h0008 */ Vec2f pos; + /* +h0010 */ Vec2f dir; + /* +h0018 */ Node* left; + /* +h001C */ Node* right; + }; + static_assert(sizeof(XNode) == 32, "struct XNode has incorrect size"); - struct YNode : Node { // type = 1 - /* +h0008 */ Vec2f pos; - /* +h0010 */ Node *above; - /* +h0014 */ Node *below; - }; - static_assert(sizeof(YNode) == 24, "struct YNode has incorrect size"); + struct YNode : Node { // type = 1 + /* +h0008 */ Vec2f pos; + /* +h0010 */ Node* above; + /* +h0014 */ Node* below; + }; + static_assert(sizeof(YNode) == 24, "struct YNode has incorrect size"); - struct SinkNode : Node { // type = 2 - /* +h0008 */ PathingTrapezoid *trapezoid; - }; - static_assert(sizeof(SinkNode) == 12, "struct SinkNode has incorrect size"); + struct SinkNode : Node { // type = 2 + /* +h0008 */ PathingTrapezoid* trapezoid; + }; + static_assert(sizeof(SinkNode) == 12, "struct SinkNode has incorrect size"); - struct Portal { // total: 0x14/20 - /* +h0000 */ uint16_t portal_plane; - /* +h0002 */ uint16_t neighbor_plane; - /* +h0004 */ uint32_t flags; // 0x4 => "Not used for path finding" - /* +h0008 */ Portal *pair; - /* +h000C */ uint32_t count; - /* +h0010 */ PathingTrapezoid **trapezoids; - }; - static_assert(sizeof(Portal) == 20, "struct Portal has incorrect size"); + struct Portal { // total: 0x14/20 + /* +h0000 */ uint16_t portal_plane; + /* +h0002 */ uint16_t neighbor_plane; + /* +h0004 */ uint32_t flags; // 0x4 => "Not used for path finding" + /* +h0008 */ Portal* pair; + /* +h000C */ uint32_t count; + /* +h0010 */ PathingTrapezoid** trapezoids; + }; + static_assert(sizeof(Portal) == 20, "struct Portal has incorrect size"); - struct PathingMap { // total: 0x54/84 - /* +h0000 */ uint32_t zplane; // ground plane = UINT_MAX, rest 0 based index - /* +h0004 */ uint32_t h0004; - /* +h0008 */ void *allocatedBuffer; // All following data are stored in a buffer allocated with a single MemAlloc. This is the pointer. - /* +h000C */ uint32_t h0010_count; // count of number h0010 - /* +h0010 */ uint32_t *h0010; // elements of this array are 8 bytes - /* +h0014 */ uint32_t trapezoid_count; - /* +h0018 */ PathingTrapezoid* trapezoids; - /* +h001C */ uint32_t sink_node_count; - /* +h0020 */ SinkNode *sink_nodes; - /* +h0024 */ uint32_t x_node_count; - /* +h0028 */ XNode *x_nodes; - /* +h002C */ uint32_t y_node_count; - /* +h0030 */ YNode *y_nodes; - /* +h0034 */ uint32_t portal_trapezoids_count; - /* +h0038 */ PathingTrapezoid **portal_trapezoids; - /* +h003C */ uint32_t portal_count; - /* +h0040 */ Portal *portals; - /* +h0044 */ Node *root_node; - /* +h0048 */ BaseArray dat_vectors; // this is an array of vectors read from the dat file. When reading the xnodes or ynodes from the dat file, an index will be used to get the pos. - }; - static_assert(sizeof(PathingMap) == 84, "struct PathingMap has incorrect size"); + struct PathingMap { // total: 0x54/84 + /* +h0000 */ uint32_t zplane; // ground plane = UINT_MAX, rest 0 based index + /* +h0004 */ uint32_t h0004; + /* +h0008 */ void* allocatedBuffer; // All following data are stored in a buffer allocated with a single MemAlloc. This is the pointer. + /* +h000C */ uint32_t h0010_count; // count of number h0010 + /* +h0010 */ uint32_t* h0010; // elements of this array are 8 bytes + /* +h0014 */ uint32_t trapezoid_count; + /* +h0018 */ PathingTrapezoid* trapezoids; + /* +h001C */ uint32_t sink_node_count; + /* +h0020 */ SinkNode* sink_nodes; + /* +h0024 */ uint32_t x_node_count; + /* +h0028 */ XNode* x_nodes; + /* +h002C */ uint32_t y_node_count; + /* +h0030 */ YNode* y_nodes; + /* +h0034 */ uint32_t portal_trapezoids_count; + /* +h0038 */ PathingTrapezoid** portal_trapezoids; + /* +h003C */ uint32_t portal_count; + /* +h0040 */ Portal* portals; + /* +h0044 */ Node* root_node; + /* +h0048 */ BaseArray dat_vectors; // this is an array of vectors read from the dat file. When reading the xnodes or ynodes from the dat file, an index will be used to get the pos. + }; + static_assert(sizeof(PathingMap) == 84, "struct PathingMap has incorrect size"); - struct PropByType { - uint32_t object_id; - uint32_t prop_index; - }; + struct PropByType { + uint32_t object_id; + uint32_t prop_index; + }; - struct PropModelInfo { - /* +h0000 */ uint32_t h0000; - /* +h0004 */ uint32_t h0004; - /* +h0008 */ uint32_t h0008; - /* +h000C */ uint32_t h000C; - /* +h0010 */ uint32_t h0010; - /* +h0014 */ uint32_t h0014; - }; - static_assert(sizeof(PropModelInfo) == 0x18, "struct PropModelInfo has incorrect size"); + // Per-model collision bounds, shared by every prop using that model. Offsets confirmed against + // the client's prop ray-pick, which builds a cylinder as + // radius = MapProp::scale * bounding_radius + // z = MapProp::position.z - bounds_z_offsets[n] * MapProp::scale + struct PropModelInfo { + /* +h0000 */ uint32_t h0000; + /* +h0004 */ const wchar_t* model_file_name; // hash-encoded; FileHashToFileId() turns it into a file id + /* +h0008 */ float bounding_radius; // model space; scale by MapProp::scale for world units + /* +h000C */ float bounds_z_offsets[2]; + /* +h0014 */ uint32_t h0014; + }; + static_assert(sizeof(PropModelInfo) == 0x18, "struct PropModelInfo has incorrect size"); - struct RecObject { - /* +h0000 */ void* vtable; - /* +h0004 */ uint32_t ref_count; - /* +h0008 */ uint32_t accessKey; // This is used by the game to make sure the data from the DAT matches the data in game - /* +h000c */ uint32_t standalone; - /* +h0010 */ uint32_t file_id; - /* +h0014 */ uint32_t stream_id; - /* +h0018 */ uint32_t flags; - /* +h001c */ uint32_t opened; - /* +h0020 */ uint32_t ref_count2; - }; - static_assert(sizeof(RecObject) == 0x24, "struct RecObject has incorrect size"); + struct RecObject { + /* +h0000 */ void* vtable; + /* +h0004 */ uint32_t ref_count; + /* +h0008 */ uint32_t accessKey; // This is used by the game to make sure the data from the DAT matches the data in game + /* +h000c */ uint32_t standalone; + /* +h0010 */ uint32_t file_id; + /* +h0014 */ uint32_t stream_id; + /* +h0018 */ uint32_t flags; + /* +h001c */ uint32_t opened; + /* +h0020 */ uint32_t ref_count2; + }; + static_assert(sizeof(RecObject) == 0x24, "struct RecObject has incorrect size"); - struct MapProp { // total: 0x54/84 - /* +h0000 */ uint32_t h0000[5]; - /* +h0014 */ uint32_t uptime_seconds; // time since spawned - /* +h0018 */ uint32_t h0018; - /* +h001C */ uint32_t prop_index; - /* +h0020 */ Vec3f position; - /* +h002C */ uint32_t model_file_id; - /* +h0030 */ uint32_t h0030[2]; - /* +h0038 */ float rotation_angle; - /* +h003C */ float rotation_cos; - /* +h003C */ float rotation_sin; - /* +h0040 */ uint32_t h0034[5]; - /* +h0058 */ RecObject* interactive_model; - /* +h005C */ uint32_t h005C[4]; - /* +h006C */ uint32_t appearance_bitmap; // Modified when animation changes - /* +h0070 */ uint32_t animation_bits; - /* +h0064 */ uint32_t h0064[5]; - /* +h0088 */ PropByType* prop_object_info; - /* +h008C */ uint32_t h008C; - }; + struct MapProp { // total: 0x90/144 + /* +h0000 */ uint32_t h0000[5]; + /* +h0014 */ uint32_t uptime_seconds; // time since spawned + /* +h0018 */ uint32_t h0018; + /* +h001C */ uint32_t prop_index; + /* +h0020 */ Vec3f position; + /* +h002C */ uint32_t model_file_id; + /* +h0030 */ uint32_t h0030[2]; + /* +h0038 */ float rotation_angle; + /* +h003C */ float rotation_cos; + /* +h0040 */ float rotation_sin; + /* +h0044 */ uint32_t h0044[3]; + /* +h0050 */ float scale; + /* +h0054 */ PropModelInfo* model_info; + /* +h0058 */ RecObject* interactive_model; + /* +h005C */ uint32_t h005C[4]; + /* +h006C */ uint32_t appearance_bitmap; // Modified when animation changes + /* +h0070 */ uint32_t animation_bits; + /* +h0074 */ uint32_t h0074[5]; + /* +h0088 */ PropByType* prop_object_info; + /* +h008C */ uint32_t h008C; + }; - static_assert(sizeof(MapProp) == 0x90, "struct MapProp has incorrect size"); + static_assert(sizeof(MapProp) == 0x90, "struct MapProp has incorrect size"); - typedef Array PathingMapArray; + typedef Array PathingMapArray; } diff --git a/Dependencies/GWCA/Include/GWCA/Managers/AgentMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/AgentMgr.h index b6171a4d..2ce35b4b 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/AgentMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/AgentMgr.h @@ -25,14 +25,18 @@ namespace GW { struct Module; extern Module AgentModule; +#ifdef _MSC_VER #pragma warning(push) #pragma warning(disable: 4200) // nonstandard extension: zero-sized array in struct +#endif struct AgentEffect { uint32_t effect_type; uint32_t data_size; // usually 0x34, detemines length of data in bytes uint32_t data[]; }; +#ifdef _MSC_VER #pragma warning(pop) +#endif enum class WorldActionId : uint32_t { InteractEnemy, @@ -58,106 +62,107 @@ namespace GW { Include_Enemy = 0x000008, Include_SpiritPet = 0x000010, Accept_ActiveState = 0x000020, - Include_Minion = 0x000040, - Include_NPCMinipet = 0x000080, - Accept_Player = 0x000100, - Type_Gadget = 0x000200, - Type_Item = 0x000400, - Exclude_DeadAlly = 0x000800, - Exclude_DeadNeutral = 0x001000, - Exclude_DeadEnemy = 0x002000, - Exclude_DeadSpiritPet = 0x004000, - Exclude_DeadMinion = 0x008000, - Exclude_DeadNPCMinipet = 0x010000, - Exclude_UsedCorpse = 0x020000, - Exclude_AliveAlly = 0x040000, - Exclude_AliveNeutral = 0x080000, - Exclude_AliveEnemy = 0x100000, - Exclude_AliveSpiritPet = 0x200000, - Exclude_AliveMinion = 0x400000, - Exclude_AliveNPCMinipet = 0x800000, - Exclude_BeingObserved = 0x2000000, - ZeroPriority = 0x4000000, - NPCMinipet_ZeroPriority = 0x8000000, - }; - - inline AgentTargetFlags operator|(AgentTargetFlags a, AgentTargetFlags b) { - return static_cast(static_cast(a) | static_cast(b)); - } - inline AgentTargetFlags operator&(AgentTargetFlags a, AgentTargetFlags b) { - return static_cast(static_cast(a) & static_cast(b)); - } - inline AgentTargetFlags operator~(AgentTargetFlags a) { - return static_cast(~static_cast(a)); - } - - namespace TargetFilter { - const AgentTargetFlags Enemies = static_cast( - Include_Enemy | Exclude_DeadEnemy); - - const AgentTargetFlags Allies = static_cast( - Include_Ally | Accept_Player | Exclude_DeadAlly); - - const AgentTargetFlags Corpses = static_cast( - Include_Enemy | Exclude_AliveEnemy | Exclude_UsedCorpse); - - const AgentTargetFlags Items = static_cast( - Type_Item); - - const AgentTargetFlags Gadgets = static_cast( - Type_Gadget); - - const AgentTargetFlags AnyLiving = static_cast( - Include_Ally | Include_Neutral | Include_Enemy | - Include_SpiritPet | Include_Minion | Include_NPCMinipet | - Accept_Player | - Exclude_DeadAlly | Exclude_DeadNeutral | Exclude_DeadEnemy | - Exclude_DeadSpiritPet | Exclude_DeadMinion | Exclude_DeadNPCMinipet); - - const AgentTargetFlags Any = static_cast( - Include_Ally | Include_Neutral | Include_Enemy | - Include_SpiritPet | Include_Minion | Include_NPCMinipet | - Accept_Player | Accept_HasQuest | - Type_Gadget | Type_Item); - } - - - namespace Agents { - typedef HookCallback AgentEffectCallback; - - // === Dialogs === - // Same as pressing button (id) while talking to an NPC. - GWCA_API bool SendDialog(uint32_t dialog_id); - - // === Agent Array === - - // Get Agent ID of currently observed agent - GWCA_API uint32_t GetObservingId(); - // Get Agent ID of client's logged in player - GWCA_API uint32_t GetControlledCharacterId(); - // Get Agent ID of current target - GWCA_API uint32_t GetTargetId(); - // Get Agent ID of current evaluated target - either auto target or actual target - GWCA_API uint32_t GetEvaluatedTargetId(); - - // Returns Agentstruct Array of agents in compass range, full structs. - GWCA_API AgentArray* GetAgentArray(); - - // Get AgentArray Structures of player or target. - GWCA_API Agent *GetAgentByID(uint32_t id); - // Get agent that we're currently observing - inline Agent *GetObservingAgent() { return GetAgentByID(GetObservingId()); } - // Get Agent of current target - inline Agent *GetTarget() { return GetAgentByID(GetTargetId()); } - // Get Agent of current evaluated target - either auto target or actual target - inline Agent *GetEvaluatedTarget() { return GetAgentByID(GetEvaluatedTargetId()); } - - GWCA_API Agent *GetPlayerByID(uint32_t player_id); - - // Get Agent of current logged in character - GWCA_API AgentLiving* GetControlledCharacter(); - - GWCA_API bool GetAgentMatchesFlags(const Agent*, AgentTargetFlags flags = TargetFilter::Any); + Include_Minion = 0x000040, + Include_NPCMinipet = 0x000080, + Accept_Player = 0x000100, + Type_Gadget = 0x000200, + Type_Item = 0x000400, + Exclude_DeadAlly = 0x000800, + Exclude_DeadNeutral = 0x001000, + Exclude_DeadEnemy = 0x002000, + Exclude_DeadSpiritPet = 0x004000, + Exclude_DeadMinion = 0x008000, + Exclude_DeadNPCMinipet = 0x010000, + Exclude_UsedCorpse = 0x020000, + Exclude_AliveAlly = 0x040000, + Exclude_AliveNeutral = 0x080000, + Exclude_AliveEnemy = 0x100000, + Exclude_AliveSpiritPet = 0x200000, + Exclude_AliveMinion = 0x400000, + Exclude_AliveNPCMinipet = 0x800000, + Exclude_BeingObserved = 0x2000000, + ZeroPriority = 0x4000000, + NPCMinipet_ZeroPriority = 0x8000000, + }; + + inline AgentTargetFlags operator|(AgentTargetFlags a, AgentTargetFlags b) { + return static_cast(static_cast(a) | static_cast(b)); + } + inline AgentTargetFlags operator&(AgentTargetFlags a, AgentTargetFlags b) { + return static_cast(static_cast(a) & static_cast(b)); + } + inline AgentTargetFlags operator~(AgentTargetFlags a) { + return static_cast(~static_cast(a)); + } + + namespace TargetFilter { + const AgentTargetFlags Enemies = static_cast( + Include_Enemy | Exclude_DeadEnemy); + + const AgentTargetFlags Allies = static_cast( + Include_Ally | Accept_Player | Exclude_DeadAlly); + + const AgentTargetFlags Corpses = static_cast( + Include_Enemy | Exclude_AliveEnemy | Exclude_UsedCorpse); + + const AgentTargetFlags Items = static_cast( + Type_Item); + + const AgentTargetFlags Gadgets = static_cast( + Type_Gadget); + + const AgentTargetFlags AnyLiving = static_cast( + Include_Ally | Include_Neutral | Include_Enemy | + Include_SpiritPet | Include_Minion | Include_NPCMinipet | + Accept_Player | + Exclude_DeadAlly | Exclude_DeadNeutral | Exclude_DeadEnemy | + Exclude_DeadSpiritPet | Exclude_DeadMinion | Exclude_DeadNPCMinipet); + + const AgentTargetFlags Any = static_cast( + Include_Ally | Include_Neutral | Include_Enemy | + Include_SpiritPet | Include_Minion | Include_NPCMinipet | + Accept_Player | Accept_HasQuest | + Type_Gadget | Type_Item); + } + + + namespace Agents { + typedef HookCallback AgentEffectCallback; + + // Dialogs -- same as pressing button (id) while talking to an NPC. + GWCA_API bool SendDialog(uint32_t dialog_id); + + // === Agent Array === + + // Get Agent ID of currently observed agent + GWCA_API uint32_t GetObservingId(); + // Get Agent ID of client's logged in player + GWCA_API uint32_t GetControlledCharacterId(); + // Get Agent ID of current target + GWCA_API uint32_t GetTargetId(); + // Get Agent ID of current evaluated target - either auto target or actual target + GWCA_API uint32_t GetEvaluatedTargetId(); + + // Returns Agentstruct Array of agents in compass range, full structs. + GWCA_API AgentArray* GetAgentArray(); + + // Get AgentArray Structures of player or target. + GWCA_API Agent* GetAgentByID(uint32_t id); + // Get agent that we're currently observing + inline Agent* GetObservingAgent() { return GetAgentByID(GetObservingId()); } + // Get Agent of current target + inline Agent* GetTarget() { return GetAgentByID(GetTargetId()); } + // Get Agent of current evaluated target - either auto target or actual target + inline Agent* GetEvaluatedTarget() { return GetAgentByID(GetEvaluatedTargetId()); } + + GWCA_API Agent* GetPlayerByID(uint32_t player_id); + + // Get Agent of current logged in character + GWCA_API AgentLiving* GetControlledCharacter(); + + GWCA_API bool GetAgentMatchesFlags(const Agent*, AgentTargetFlags flags = TargetFilter::Any); + + GWCA_API bool RefreshAgentNameTag(const Agent*); // Whether we're observing someone else GWCA_API bool IsObserving(); @@ -167,8 +172,7 @@ namespace GW { GWCA_API uint32_t GetAmountOfPlayersInInstance(); - // Returns array of alternate agent array that can be read beyond compass range. - // Holds limited info and needs to be explored more. + // Alternate agent array readable beyond compass range; holds limited info and needs more exploration. GWCA_API MapAgentArray* GetMapAgentArray(); GWCA_API uint32_t CountAllegianceInRange(GW::Constants::Allegiance allegiance, float sqr_range); @@ -187,8 +191,7 @@ namespace GW { GWCA_API bool ChangeTarget(const Agent *agent); GWCA_API bool ChangeTarget(AgentID agent_id); - // Move to specified coordinates. - // Note: will do nothing if coordinate is outside the map! + // Move to specified coordinates. Does nothing if the coordinate is outside the map. GWCA_API bool Move(float x, float y, uint32_t zplane = 0); GWCA_API bool Move(GamePos pos); @@ -205,18 +208,9 @@ namespace GW { // Might be bugged, avoid to use. GWCA_API wchar_t* GetAgentEncName(const Agent* agent); GWCA_API wchar_t* GetAgentEncName(uint32_t agent_id); - - GWCA_API void RegisterAgentEffectCallback( - HookEntry* entry, - const AgentEffectCallback& callback, - int altitude = -0x8000); - GWCA_API void RemoveFrameUIMessageCallback( - HookEntry* entry); }; } -// ============================================================ // C Interop API -// ============================================================ extern "C" { GWCA_API bool SendDialog(uint32_t dialog_id); diff --git a/Dependencies/GWCA/Include/GWCA/Managers/CameraMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/CameraMgr.h index bd05dfd1..52cc51a0 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/CameraMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/CameraMgr.h @@ -25,8 +25,7 @@ namespace GW { GWCA_API float GetFieldOfView(); GWCA_API float GetYaw(); - // ==== Camera patches ==== - // Unlock camera & return the new state of it + // Camera patches -- unlock the camera and return its new state. GWCA_API bool UnlockCam(bool flag); GWCA_API bool GetCameraUnlock(); @@ -34,9 +33,7 @@ namespace GW { GWCA_API bool SetFog(bool flag); }; } -// ============================================================ // C Interop API -// ============================================================ extern "C" { GWCA_API void* GetCamera(); GWCA_API bool SetMaxDist(float dist); diff --git a/Dependencies/GWCA/Include/GWCA/Managers/ChatMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/ChatMgr.h index b51d1425..c8d3e383 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/ChatMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/ChatMgr.h @@ -12,15 +12,19 @@ namespace GW { namespace Chat { typedef uint32_t Color; +#ifdef _MSC_VER #pragma warning(push) #pragma warning(disable: 4200) +#endif struct ChatMessage { uint32_t channel; uint32_t unk1; FILETIME timestamp; wchar_t message[0]; }; +#ifdef _MSC_VER #pragma warning(pop) +#endif const size_t CHAT_LOG_LENGTH = 0x200; struct ChatBuffer { @@ -105,9 +109,7 @@ namespace GW { }; } -// ============================================================ // C Interop API -// ============================================================ extern "C" { GWCA_API void* GetChatLog(); GWCA_API bool AddToChatLog(wchar_t* message, uint32_t channel); diff --git a/Dependencies/GWCA/Include/GWCA/Managers/EffectMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/EffectMgr.h index f4b89608..3d3071c7 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/EffectMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/EffectMgr.h @@ -20,9 +20,7 @@ namespace GW { extern Module EffectModule; namespace Effects { - // Returns current level of intoxication, 0-5 scale. - // If > 0 then skills that benefit from drunk will work. - // Important: requires SetupPostProcessingEffectHook() above. + // Current intoxication level, 0-5; above 0 makes drunk-benefit skills work. Requires SetupPostProcessingEffectHook(). GWCA_API uint32_t GetAlcoholLevel(); // Have fun with this ;)))))))))) @@ -59,9 +57,7 @@ namespace GW { GWCA_API Buff *GetPlayerBuffBySkillId(Constants::SkillID skill_id); }; } -// ============================================================ // C Interop API -// ============================================================ extern "C" { GWCA_API uint32_t GetAlcoholLevel(); GWCA_API void GetDrunkAf(float intensity, uint32_t tint); diff --git a/Dependencies/GWCA/Include/GWCA/Managers/EventMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/EventMgr.h index 04da6627..7e08bafd 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/EventMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/EventMgr.h @@ -9,15 +9,65 @@ namespace GW { extern Module EventMgrModule; namespace EventMgr { + // Index into the game's m_handler array (EvtDispatch.cpp asserts id < EVENTS, which is 0x2f). + // Names below are read off Gw.exe: EvtOs.cpp translates each window message into one of these, + // EvtQueue.cpp drains them into the dispatcher, and every id the game itself registers a handler + // for was matched to that handler. Ids absent here are dispatched by the game but not yet identified. enum class EventID { - kRecvPing = 0x8, - kSendFriendState = 0x26, - kRecvFriendState = 0x2c, + kAppActivated = 0x0, // WM_ACTIVATEAPP; packet is one dword, non-zero when activated + kFrameTick = 0x1, // once per frame from the pump, packet is the elapsed milliseconds + kRenderFinished = 0x2, // once per frame after the render, packet is one dword + kCharTyped = 0x3, // WM_CHAR: {character, repeat, modifier keys} + kCursorVisibility = 0x5, // packet is one dword, non-zero to show the cursor + kShutdown = 0x6, // posting this latches the event queue closed, so nothing dispatches after it + kScreenSizeChanged = 0x7, // {new width, new height, old width, old height}, raised inside the queue drain + kDriverError = 0x8, // the game's own handler logs "Driver internal error encountered." and quits + kRecvPing = kDriverError, // legacy GWCA name for 0x8; the game does not use this id for pings + kDpiChanged = 0xa, // WM_DPICHANGED: {x dpi, y dpi} + kGamepadAttached = 0xb, // the four below come from the same controller poll in EvtOs.cpp + kGamepadState = 0xc, // one dword + kGamepadAxis = 0xd, // four dwords + kGamepadButtonDown = 0xe, // {button, state} + kGamepadButtonUp = 0xf, // {button, state} + kCharTypedInjected = 0x13, // same shape as kCharTyped, from the game's own WM_APP+3 injection + kKeyDown = 0x1a, // {key, repeat, modifier keys}; the engine records the key as held here + kKeyUp = 0x1b, // same shape; the engine clears the held bit here + kFocusLost = 0x1c, // WM_KILLFOCUS, no packet + kMouseMoveRelative = 0x1d, // {button, 0, x, y, button mask, modifier keys} while the mouse is captured + kMouseButtonDown = 0x1e, // same shape as kMouseMoveRelative + kMouseLeave = 0x1f, // WM_MOUSELEAVE, no packet + kMouseMove = 0x20, // same shape as kMouseMoveRelative, only sent when the position changed + kMouseButtonUp = 0x21, // same shape; also synthesised for every held button when capture is lost + kMouseWheel = 0x22, // same shape, with the wheel delta in place of the button + kWindowMoved = 0x23, // WM_MOVE: {x, y} + // A shared channel: eight of the game's own subsystems register here, so filter on FriendEventType. + kFriend = 0x24, + kService = 0x25, // same packet shape as kFriend; FrApi forwards it as UI message 0x50 + kServiceAlt = 0x26, // same again, forwarded as UI message 0x51 + kFocusGained = 0x27, // WM_SETFOCUS, no packet + kWindowResized = 0x28, // WM_SIZE: {width, height} + kTouchDown = 0x2c, // the three touch ids carry {index, 0, x, y, touch mask} + kTouchMove = 0x2d, + kTouchUp = 0x2e, // also synthesised for every held touch when the sequence is cancelled + + // AddHandler rejects 0x2a outright, and the dispatcher drops anything >= 0x2f, so 0x2f and + // 0x30 are engine-internal: 0x30 is what makes the queue raise kScreenSizeChanged. + kReserved = 0x2a, kNone = 0xffff }; + // First dword of a kFriend packet, which is what the game's own handler switches over. + // These are the message ids FriendApi.cpp sends to the login frame, so they share that numbering. + enum class FriendEventType { + kStatusChanged = 0x26, + kLocationChanged = 0x28, + kFriendAddedOrRemoved = 0x2c + }; + + // (status, event_id, packet_bytes, packet_bytes_len). Altitude <= 0 runs before the game handles it, > 0 after. typedef HookCallback EventCallback; + GWCA_API void RegisterEventCallback( HookEntry *entry, EventID event_id, @@ -28,6 +78,7 @@ namespace GW { HookEntry *entry, EventID event_id = EventID::kNone); - GWCA_API bool SendEventMessage(EventID, void*); + // Took a length all along; the two-parameter declaration this replaces never had a definition to link against. + GWCA_API bool SendEventMessage(EventID event_id, void* packet_bytes, uint32_t packet_bytes_len); }; } diff --git a/Dependencies/GWCA/Include/GWCA/Managers/FriendListMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/FriendListMgr.h index 75ec16d2..8c76d30c 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/FriendListMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/FriendListMgr.h @@ -27,14 +27,15 @@ namespace GW { HookEntry* entry); GWCA_API bool AddFriend(const wchar_t* name, const wchar_t* alias = nullptr); GWCA_API bool AddIgnore(const wchar_t* name, const wchar_t* alias = nullptr); + // Fire-and-forget, like AddFriend: true means the request was queued (it + // may need the Friends window to finish opening across a few game ticks + // first), not that the row is gone by the time this returns. GWCA_API bool RemoveFriend(Friend* _friend); GWCA_API bool ChangeFriendType(Friend* _friend, FriendType type); }; } -// ============================================================ // C Interop API -// ============================================================ extern "C" { GWCA_API void* GetFriendList(); GWCA_API void* GetFriendByIndex(uint32_t index); diff --git a/Dependencies/GWCA/Include/GWCA/Managers/GameThreadMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/GameThreadMgr.h index 4311ac1a..08e541d9 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/GameThreadMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/GameThreadMgr.h @@ -16,8 +16,7 @@ namespace GW { GWCA_API void ClearCalls(); - // force_enqueue = false; will check if we're already in the game thread, and run immediately if we are. - // force_enqueue = true; enqueue the function for the next loop regardless + // force_enqueue = false runs immediately if already on the game thread; true always enqueues for the next loop. GWCA_API void Enqueue(std::function f, bool force_enqueue = false); typedef HookCallback<> GameThreadCallback; @@ -31,9 +30,7 @@ namespace GW { GWCA_API bool IsInGameThread(); }; } -// ============================================================ // C Interop API -// ============================================================ extern "C" { typedef void(__cdecl* GW_GameThreadCallback)(); typedef void(__cdecl* GW_GameThreadHookCallback)(GW::HookStatus* status); diff --git a/Dependencies/GWCA/Include/GWCA/Managers/GuildMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/GuildMgr.h index b916363e..e75b8b2a 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/GuildMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/GuildMgr.h @@ -21,9 +21,7 @@ namespace GW { }; } -// ============================================================ // C Interop API -// ============================================================ extern "C" { GWCA_API void* GetPlayerGuild(); GWCA_API void* GetCurrentGH(); diff --git a/Dependencies/GWCA/Include/GWCA/Managers/ItemMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/ItemMgr.h index 0700550c..04d1b975 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/ItemMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/ItemMgr.h @@ -97,9 +97,7 @@ namespace GW { }; } -// ============================================================ // C Interop API -// ============================================================ extern "C" { // Lookups GWCA_API void* GetSalvageSessionInfo(); diff --git a/Dependencies/GWCA/Include/GWCA/Managers/MapMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/MapMgr.h index d7b4cc11..7d48bc78 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/MapMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/MapMgr.h @@ -125,6 +125,8 @@ namespace GW { // Get the district number you are in. GWCA_API int GetDistrict(); + GWCA_API size_t GetDistrictCount(); + // Get time, in ms, since the instance you are residing in has been created. GWCA_API uint32_t GetInstanceTime(); @@ -140,8 +142,7 @@ namespace GW { GWCA_API Constants::Language LanguageFromDistrict(const GW::Constants::District _district); - // Returns array of icons (res shrines, quarries, traders, etc) on mission map. - // Look at MissionMapIcon struct for more info. + // Array of icons (res shrines, quarries, traders...) on the mission map; see MissionMapIcon. GWCA_API MissionMapIconArray* GetMissionMapIconArray(); // Returns pointer of collision trapezoid array. @@ -164,9 +165,7 @@ namespace GW { GWCA_API bool CancelEnterChallenge(); }; } -// ============================================================ // C Interop API -// ============================================================ extern "C" { GWCA_API void* GetMissionMapContext(); GWCA_API void* GetWorldMapContext(); diff --git a/Dependencies/GWCA/Include/GWCA/Managers/MemoryMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/MemoryMgr.h index ffc98d79..df31fc2f 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/MemoryMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/MemoryMgr.h @@ -16,9 +16,7 @@ namespace GW { GWCA_API HWND GetGWWindowHandle(); - // You probably don't want to use these functions. These are for allocating - // memory on the Guild Wars game heap, rather than your own heap. Memory allocated with - // these functions cannot be used with RAII and must be manually freed. USE AT YOUR OWN RISK. + // Allocates on the Guild Wars game heap, not yours: no RAII, must be freed manually. USE AT YOUR OWN RISK. GWCA_API void* MemAlloc(size_t size); GWCA_API void* MemRealloc(void* buf, size_t newSize); GWCA_API void MemFree(void* buf); diff --git a/Dependencies/GWCA/Include/GWCA/Managers/Module.h b/Dependencies/GWCA/Include/GWCA/Managers/Module.h index bbde8281..08e56870 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/Module.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/Module.h @@ -8,8 +8,7 @@ namespace GW { void (*init_module)(); void (*exit_module)(); - // Call those from game thread to be safe - // Do not free trampoline + // Call these from the game thread to be safe, and do not free the trampoline. void (*enable_hooks)(); void (*disable_hooks)(); }; diff --git a/Dependencies/GWCA/Include/GWCA/Managers/PartyMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/PartyMgr.h index de13f32d..0bf05ef6 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/PartyMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/PartyMgr.h @@ -23,8 +23,7 @@ namespace GW { namespace PartyMgr { - // set or unset the fact that ticking will work as a toggle instead - // of showing a drop-down menu + // Set or unset whether ticking works as a toggle instead of showing a drop-down menu. GWCA_API void SetTickToggle(bool enable); diff --git a/Dependencies/GWCA/Include/GWCA/Managers/PlayerMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/PlayerMgr.h index f18d70e8..031192ed 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/PlayerMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/PlayerMgr.h @@ -55,9 +55,7 @@ namespace GW { GWCA_API TitleClientData* GetTitleData(Constants::TitleID title_id); }; } -// ============================================================ // C Interop API -// ============================================================ extern "C" { GWCA_API bool SetActiveTitle(uint32_t title_id); GWCA_API bool RemoveActiveTitle(); diff --git a/Dependencies/GWCA/Include/GWCA/Managers/QuestMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/QuestMgr.h index a439dd6c..97958a57 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/QuestMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/QuestMgr.h @@ -42,9 +42,7 @@ namespace GW { }; } -// ============================================================ // C Interop API -// ============================================================ extern "C" { GWCA_API uint32_t GetActiveQuestId(); GWCA_API bool SetActiveQuestId(uint32_t quest_id); diff --git a/Dependencies/GWCA/Include/GWCA/Managers/RenderMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/RenderMgr.h index f8b4029f..1b5188c3 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/RenderMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/RenderMgr.h @@ -2,6 +2,9 @@ #include +#include +#include + // forward declaration, we don't need to include the full directx header here struct IDirect3DDevice9; @@ -12,37 +15,69 @@ namespace GW { namespace Render { - typedef void(__cdecl* RenderCallback) (IDirect3DDevice9*); + // Runtime, not build-time: Gw.exe ships both backends and picks one via Param::GetFlag(10). + enum class Backend : uint32_t { + Unknown = 0, + D3D9, + GLES3, + }; - typedef struct Mat4x3f { - float _11; - float _12; - float _13; - float _14; - float _21; - float _22; - float _23; - float _24; - float _31; - float _32; - float _33; - float _34; - - - enum Flags { - Shear = 1 << 3 - }; - - uint32_t flags; - } Mat4x3f; - - enum Transform : int { - TRANSFORM_PROJECTION_MATRIX = 0, - TRANSFORM_MODEL_MATRIX = 1, - // TODO: - TRANSFORM_COUNT = 5 + GWCA_API Backend GetBackend(); + + // VirtualDeviceRenderer::renderer_mode -- all windowed variants, ordered as the settings dropdown lists them. + enum class RendererMode : uint32_t { + Windowed = 0, + WindowedBorderless = 1, + WindowedFullscreen = 2, }; + // Unknown values pass through rather than being coerced. + GWCA_API RendererMode GetRendererMode(); + + // GetDevice() is the Dx9 device, GetGlesDevice() the GLES3 one; pick with GetBackend(). The rest works on all three. + + // GLES3 device, captured from a hook since ddi_device is an id, not a pointer. Offsets confirmed against a running client. + using EGLSurface = void*; + using EGLContext = void*; + using EGLDisplay = void*; + + // The std140 block the fragment shader reads; the layout is exact, taken from the shader source embedded in the client. + struct GlFragmentRenderState { + /* +h0000 */ float texture_factor[4]; + /* +h0010 */ float fog_color[4]; + /* +h0020 */ float sampler_biases[2][4]; + /* +h0040 */ float bump_env_mat[8][4]; + /* +h00C0 */ float discard_settings[4]; + }; + static_assert(sizeof(GlFragmentRenderState) == 0xD0); + + // ArenaNet's own struct wrapping EGL handles, not a COM object -- you cannot call methods on it, only read and write cached state. + struct GlesDevice { + /* +h0000 */ uint8_t h0000[0x7D4]; + /* +h07D4 */ uint32_t dev_mode; // GR_MODE_* + /* +h07D8 */ uint8_t h07D8[0x28]; + /* +h0800 */ void* dev_window; // native window + /* +h0804 */ uint8_t h0804[0x8]; + /* +h080C */ EGLSurface dev_surface; + /* +h0810 */ uint32_t width; // live surface size + /* +h0814 */ uint32_t height; + /* +h0818 */ EGLContext dev_context; + /* +h081C */ uint8_t h081C[0x7D4]; + /* +h0FF0 */ GlFragmentRenderState fragment_state; + /* +h10C0 */ uint32_t uniform_buffer; // the UBO name + }; + static_assert(offsetof(GlesDevice, dev_mode) == 0x07D4); + static_assert(offsetof(GlesDevice, dev_window) == 0x0800); + static_assert(offsetof(GlesDevice, dev_surface) == 0x080C); + static_assert(offsetof(GlesDevice, dev_context) == 0x0818); + static_assert(offsetof(GlesDevice, fragment_state) == 0x0FF0); + static_assert(offsetof(GlesDevice, uniform_buffer) == 0x10C0); + + // Captured from a hook -- not reachable from the generic device. Null unless GetBackend() is GLES3. + GWCA_API GlesDevice* GetGlesDevice(); + + typedef void(__cdecl* RenderCallback) (IDirect3DDevice9*); + enum Metric : uint32_t { Metric0, Metric1, @@ -73,27 +108,17 @@ namespace GW { Count }; - // Careful, this doesn't return correct values if you have the U mission map, or other things open - // prefer to calculate the transformation matrix yourself using Render::GetFieldOfView() - [[deprecated]] GWCA_API Mat4x3f* GetTransform(Transform transform); - GWCA_API void EnableHooks(); // this returns the FoV used for rendering GWCA_API float GetFieldOfView(); - // Set up a callback for drawing on screen. - // Will be called after GW render. - // - // Important: if you use this, you should call GW::Terminate() - // or at least GW::Render::RestoreHooks() from within the callback + // Called after GW render each frame on D3D9 (End Scene); call GW::Terminate() or RestoreHooks() from within it. GWCA_API void SetRenderCallback(RenderCallback callback); GWCA_API RenderCallback GetRenderCallback(); - // Flush GW's deferred GR command queue so previously-submitted draws (e.g. the 3D - // world) are materialised into the back/depth buffer. No-op unless the queue is in - // a flushable state. Lets a render hook draw between GW's world and UI passes. + // Flush GW's deferred GR queue so submitted draws materialise, letting a render hook draw between the world and UI passes. GWCA_API void FlushCommandQueue(); // Can be used to get information like vsync status or monitor refresh rate of the renderer @@ -105,23 +130,38 @@ namespace GW { // Set a hard upper limit for frame rate. Actual limit may be lower (but not higher) depending on vsync/in-game preference GWCA_API bool SetFrameLimit(uint32_t value); - // Set up a callback for directx device reset + // D3D9 device reset. GLES has no lost-device concept; SetGlesResetCallback covers the corresponding event. GWCA_API void SetResetCallback(RenderCallback callback); + GWCA_API RenderCallback GetResetCallback(); + + // The same two events typed on the GLES device -- set whichever pair matches GetBackend(). + + // Fires each frame on GLES3 at the queue flush, so anything drawn goes out with that frame's commands. + typedef void(__cdecl* GlesRenderCallback)(GlesDevice* gles_device); - // Check if gw is in fullscreen - // Note: requires one or both callbacks to be set and called before - // Note: does not update while minimized - // Note: returns -1 if it doesn't know yet + GWCA_API void SetGlesRenderCallback(GlesRenderCallback callback); + GWCA_API GlesRenderCallback GetGlesRenderCallback(); + + // Fires when the GLES device is created or updated -- a state-change event, not per-frame, and where the pointer is captured. + GWCA_API void SetGlesResetCallback(GlesRenderCallback callback); + GWCA_API GlesRenderCallback GetGlesResetCallback(); + + // The same frame boundary as the render callbacks, without a device, for callers that only need the tick. + typedef void(__cdecl* FrameCallback)(); + + GWCA_API void SetFrameCallback(FrameCallback callback); + GWCA_API FrameCallback GetFrameCallback(); + + // Needs a callback set and called first, does not update while minimized, and returns -1 until known. GWCA_API int GetIsFullscreen(); GWCA_API bool SetFog(bool enabled); GWCA_API HWND GetWindowHandle(); + // Null unless GetBackend() == Backend::D3D9. GWCA_API IDirect3DDevice9* GetDevice(); - GWCA_API bool GetIsInRenderLoop(); - GWCA_API uint32_t GetViewportWidth(); GWCA_API uint32_t GetViewportHeight(); } diff --git a/Dependencies/GWCA/Include/GWCA/Managers/SkillbarMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/SkillbarMgr.h index 58afca96..0880e4be 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/SkillbarMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/SkillbarMgr.h @@ -36,9 +36,7 @@ namespace GW { }; static_assert(sizeof(SkillTemplate) == 140); - // Handlers run in altitude order around the hooked game function: altitude <= 0 before it - // (may set status->blocked to skip it), altitude > 0 after it. Handlers that produce a - // template write it into out_template and set *result to the game's success value. + // Handlers run in altitude order: <= 0 before the hooked function (may set status->blocked), > 0 after it. typedef HookCallback DecodeTemplateHeaderCallback; GWCA_API void RegisterDecodeTemplateHeaderCallback(HookEntry* entry, const DecodeTemplateHeaderCallback& callback, int altitude = -0x8000); @@ -56,22 +54,20 @@ namespace GW { GWCA_API void RemoveTemplateCallback(HookEntry* entry); - // Get the skill slot in the player bar of the player. - // Returns -1 if the skill is not there + // Skill slot in the player's bar, or -1 if the skill is not there. GWCA_API int GetSkillSlot(Constants::SkillID skill_id); // Use Skill in slot (Slot) on (Agent), optionally call that you are using said skill. GWCA_API bool UseSkill(uint32_t slot, uint32_t target = 0); - // Send raw packet to use skill with ID (SkillID). - // Same as above except the skillbar client struct will not be registered as casting. + // Raw packet to use skill ID; unlike above, the skillbar client struct is not registered as casting. GWCA_API bool UseSkillByID(uint32_t skill_id, uint32_t target = 0); // Get skill structure of said id, houses pretty much everything you would want to know about the skill. GWCA_API Skill* GetSkillConstantData(Constants::SkillID skill_id); // Number of entries in the client's skill constant data array; can exceed Constants::SkillID::Count when GW adds skills. - GWCA_API uint32_t GetSkillConstantDataCount(); + GWCA_API uint32_t GetSkillCount(); // Name/Description/Profession etc for an attribute by id GWCA_API AttributeInfo* GetAttributeConstantData(Constants::Attribute attribute_id); @@ -101,9 +97,7 @@ namespace GW { GWCA_API bool GetSkillTemplate(SkillTemplate& skill_template); } } -// ============================================================ // C Interop API -// ============================================================ extern "C" { GWCA_API int GetSkillSlot(uint32_t skill_id); GWCA_API bool UseSkill(uint32_t slot, uint32_t target); diff --git a/Dependencies/GWCA/Include/GWCA/Managers/StoCMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/StoCMgr.h index 51b9f04b..a70391bd 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/StoCMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/StoCMgr.h @@ -5,10 +5,7 @@ namespace GW { - /* - StoC Manager - See https://github.com/GameRevision/GWLP-R/wiki/GStoC for some already explored packets. - */ + // StoC Manager. See https://github.com/GameRevision/GWLP-R/wiki/GStoC for some already explored packets. namespace Packet { namespace StoC { @@ -24,9 +21,7 @@ namespace GW { namespace StoC { typedef HookCallback PacketCallback; - // Register a function to be called when a packet is received. - // An altitude of 0 or less will be triggered before the packet is processed. - // An altitude greater than 0 will be triggered after the packet has been processed. + // Altitude <= 0 fires before the packet is processed, > 0 after it. GWCA_API bool RegisterPacketCallback( HookEntry *entry, uint32_t header, diff --git a/Dependencies/GWCA/Include/GWCA/Managers/TradeMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/TradeMgr.h index 05b3c973..3f52fe89 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/TradeMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/TradeMgr.h @@ -21,9 +21,7 @@ namespace GW { GWCA_API bool OfferItem(uint32_t item_id, uint32_t quantity = 0); }; } -// ============================================================ // C Interop API -// ============================================================ extern "C" { GWCA_API bool OpenTradeWindow(uint32_t agent_id); GWCA_API bool AcceptTrade(); diff --git a/Dependencies/GWCA/Include/GWCA/Managers/UIMgr.h b/Dependencies/GWCA/Include/GWCA/Managers/UIMgr.h index f34f0bf9..58628c56 100644 --- a/Dependencies/GWCA/Include/GWCA/Managers/UIMgr.h +++ b/Dependencies/GWCA/Include/GWCA/Managers/UIMgr.h @@ -148,7 +148,7 @@ namespace GW { uint32_t field15_0x3c; uint32_t field16_0x40; uint32_t field17_0x44; - uint32_t field18_0x48; + uint32_t m_ctlSpec; uint32_t field19_0x4c; uint32_t field20_0x50; uint32_t field21_0x54; @@ -236,10 +236,10 @@ namespace GW { struct AgentNameTagInfo { /* +h0000 */ uint32_t agent_id; - /* +h0004 */ uint32_t h0002; - /* +h0008 */ uint32_t h0003; + /* +h0004 */ uint32_t h0004; + /* +h0008 */ uint32_t h0008; /* +h000C */ wchar_t* name_enc; - /* +h0010 */ uint8_t h0010; + /* +h0010 */ uint8_t highlight; /* +h0011 */ uint8_t h0012; /* +h0012 */ uint8_t h0013; /* +h0013 */ uint8_t background_alpha; // ARGB, NB: Actual color is ignored, only alpha is used @@ -250,6 +250,8 @@ namespace GW { /* +h001E */ uint8_t h001E; /* +h001F */ uint8_t h001F; /* +h0020 */ wchar_t* extra_info_enc; // Title etc + /* +h0024 */ uint32_t extra_info_color; // ARGB + /* +h0028 */ uint32_t extra_info_attributes; // bold/size etc }; // Note: some windows are affected by UI scale (e.g. party members), others are not (e.g. compass) @@ -783,10 +785,35 @@ namespace GW { GWCA_API bool DestroyUIComponent(Frame* frame); - // Frame layout primitives (GW's Frame::SetBounds/SetPosition), for measuring and - // stacking child frames from a custom container's kMeasureContent/kSetLayout handler. - GWCA_API void SetFrameBounds(Frame* frame, uint32_t mode, float* rect, float* size_out); - GWCA_API void SetFramePosition(Frame* frame, uint32_t mode, float* rect); + // Bitfield accepted by Frame::SetBounds/SetPositionInternal + enum FrameLayoutMode : uint32_t { + FrameLayoutMode_None = 0, + FrameLayoutMode_AnchorBottom = 0x1, // vertical: anchor to the rect's bottom edge + FrameLayoutMode_Center = 0x2, // required alongside centered placement on either axis (asserts otherwise) + FrameLayoutMode_AnchorLeft = 0x4, // horizontal: anchor to the rect's left edge + FrameLayoutMode_AnchorRight = 0x8, // horizontal: anchor to the rect's right edge + FrameLayoutMode_AnchorTop = 0x10, // vertical: anchor to the rect's top edge + FrameLayoutMode_StretchWidth = 0x20, // horizontal: fill the rect's full width (also behaves as a left anchor) + FrameLayoutMode_StretchHeight = 0x40, // vertical: fill the rect's full height (also behaves as a bottom anchor) + FrameLayoutMode_AnchorHorizontalMargin = 0x80, // gate: trim the resolved rect inward on the AnchorLeft/AnchorRight edge(s) + FrameLayoutMode_AnchorVerticalMargin = 0x100, // gate: trim the resolved rect inward on the AnchorTop/AnchorBottom edge(s) + }; + inline FrameLayoutMode operator|(FrameLayoutMode a, FrameLayoutMode b) { + return static_cast(static_cast(a) | static_cast(b)); + } + inline FrameLayoutMode operator&(FrameLayoutMode a, FrameLayoutMode b) { + return static_cast(static_cast(a) & static_cast(b)); + } + inline FrameLayoutMode operator~(FrameLayoutMode a) { + return static_cast(~static_cast(a)); + } + + // Frame layout primitives (GW's Frame::SetBounds/SetPosition) for a container's kMeasureContent/kSetLayout handler. + GWCA_API void SetFrameBounds(Frame* frame, FrameLayoutMode mode, float* rect, float* size_out); + GWCA_API void SetFramePosition(Frame* frame, FrameLayoutMode mode, float* rect); + + // Appends an additional handler onto frame->frame_callbacks + GWCA_API bool AddFrameCallback(Frame* frame, UIInteractionCallback callback, void* uictl_context = nullptr); GWCA_API bool SelectDropdownOption(Frame* frame, uint32_t value); @@ -867,6 +894,7 @@ namespace GW { GWCA_API bool SetFrameVisible(UI::Frame* frame, bool flag); GWCA_API bool SetFrameDisabled(UI::Frame* frame, bool flag); + // Stubbed: always returns false. The underlying game function is not scanned for. GWCA_API bool AddFrameUIInteractionCallback(GW::UI::Frame*, UI::UIInteractionCallback callback, void* wparam); GWCA_API bool TriggerFrameRedraw(UI::Frame* frame); diff --git a/Dependencies/GWCA/Include/GWCA/Packets/StoC.h b/Dependencies/GWCA/Include/GWCA/Packets/StoC.h index 5ae5fdc2..9286bb4e 100644 --- a/Dependencies/GWCA/Include/GWCA/Packets/StoC.h +++ b/Dependencies/GWCA/Include/GWCA/Packets/StoC.h @@ -3,15 +3,7 @@ #include #include -/* -Server to client packets, sorted by header - -most packets are not filled in, however the list and types of -fields is given as comments - -feel free to fill packets, and you can also add a suffix to -the packet name, e.g. P391 -> P391_InstanceLoadMap -*/ +// Server to client packets, sorted by header. Unfilled ones list their fields as comments -- fill them in, optionally suffixing the name (P391 -> P391_InstanceLoadMap). namespace GW { typedef uint32_t AgentID; @@ -28,11 +20,7 @@ namespace GW { struct PacketBase { uint32_t header; }; - // Used for: - // GenericValue - // GenericValueTarget - // GenericModifier (i.e. GenericFloatTarget) - // GenericFloat + // Used for GenericValue, GenericValueTarget, GenericModifier (GenericFloatTarget) and GenericFloat. namespace GenericValueID { const uint32_t melee_attack_finished = 1; // GenericValue. Last melee attack finished successfully. const uint32_t attack_stopped = 3; // GenericValue. Last melee/ranged attack stopped unsuccessfully. May be followed by interrupted (35). @@ -82,18 +70,9 @@ namespace GW { } namespace JumboMessageValue { - // The following values represent the first and second parties in an explorable areas - // (inc. observer mode) with 2 parties. - // if there are 3 parties in the explorable area (like some HA maps) then: - // - party 1 = 6579558 - // - party 2 = 1635021873 - // - party 3 = 1635021874 - - // TODO: - // These numbers appear big and random, their origin or relation to other values - // is not understood. - // In addition, there may be a danger these variables could change with GW updates... - // Consider these values as experimental and use with caution + // First and second parties in an explorable area; with 3 parties (some HA maps) they are 6579558, 1635021873, 1635021874. + + // TODO: these numbers are big, random and not understood, and may change with GW updates -- use with caution. const uint32_t PARTY_ONE = 1635021873; const uint32_t PARTY_TWO = 1635021874; } @@ -456,12 +435,7 @@ namespace GW { }; template<> constexpr uint32_t Packet::STATIC_HEADER = GAME_SMSG_AGENT_ATTR_UPDATE_FLOAT; - // damage or healing done packet, but also has other purposes. - // to be investigated further. - // all types have their value in the float field 'value'. - // in all types the value is in percentage, unless otherwise specified. - // the value can be negative (e.g. damage, sacrifice) - // or positive (e.g. heal, lifesteal). + // Damage or healing done, plus other uses; 'value' is a percentage unless stated, negative or positive by type. struct GenericModifier : Packet { uint32_t type; // type as specified above in P156_Type uint32_t target_id; // agent id of who is affected by the change @@ -470,9 +444,7 @@ namespace GW { }; template<> constexpr uint32_t Packet::STATIC_HEADER = GAME_SMSG_AGENT_ATTR_UPDATE_FLOAT_TARGET; - // Projectile launched from an agent - // Can be from a martial weapon (spear, bow), or projectile-launching skill - // also acts as an attack_finished packet for ranged weapons, if `is_attack == 1` + // Projectile launched from an agent, martial or skill; also an attack_finished for ranged weapons when is_attack == 1. struct AgentProjectileLaunched : Packet { uint32_t agent_id; Vec2f destination; @@ -657,8 +629,7 @@ namespace GW { }; template<> constexpr uint32_t Packet::STATIC_HEADER = GAME_SMSG_TOWN_ALLIANCE_OBJECT; - // Info about any guilds applicable to current outpost. - // NOTE: When entering a guild hall, that guild will always be the first added (local_id = 1). + // Guilds applicable to the current outpost; entering a guild hall always adds that guild first (local_id = 1). struct GuildGeneral : Packet { uint32_t local_id; uint32_t ghkey[4]; // blob[16] @@ -770,17 +741,12 @@ namespace GW { }; template<> constexpr uint32_t Packet::STATIC_HEADER = GAME_SMSG_ITEM_SALVAGE_SESSION_SUCCESS; - // JumboMessage represents a message strewn across the center of the screen in big red or green characters. - // Things like moral boosts, flag captures, victory, defeat... + // A message strewn across the centre of the screen in big red or green characters -- moral boosts, captures, victory. struct JumboMessage : GW::Packet::StoC::Packet { uint8_t type; // JumboMessageType uint32_t value; // JumboMessageValue }; - // Diagnostic GCC/MinGW build: unlike the other specializations - // here, this one isn't constexpr (so isn't implicitly inline), - // causing an ODR multiple-definition link error across TUs that - // MSVC's linker tolerates but GCC's doesn't. Match the pattern - // used everywhere else in this file. + // Not constexpr unlike the others here, so GCC raises an ODR multiple-definition error MSVC tolerates -- match the pattern. template<> constexpr uint32_t GW::Packet::StoC::Packet::STATIC_HEADER = GAME_SMSG_JUMBO_MESSAGE; struct InstanceLoadFile : Packet { @@ -934,12 +900,7 @@ namespace GW { }; template<> constexpr uint32_t Packet::STATIC_HEADER = GAME_SMSG_PARTY_PLAYER_READY; - // When a new party is created: - // 1. PartyPlayerStreamStart packet is sent - // 2. PartyPlayerAdd packet per member - // PartyHeroAdd packet per hero - // PartyHenchmanAdd packer per henchman - // 3. PartyPlayerStreamEnd packet is sent + // New party: PartyPlayerStreamStart, then Add packets per player/hero/henchman, then PartyPlayerStreamEnd. struct PartyPlayerStreamStart : Packet { uint32_t party_id; // word }; diff --git a/Dependencies/GWCA/Include/GWCA/Utilities/Debug.h b/Dependencies/GWCA/Include/GWCA/Utilities/Debug.h index b587bd16..01513c52 100644 --- a/Dependencies/GWCA/Include/GWCA/Utilities/Debug.h +++ b/Dependencies/GWCA/Include/GWCA/Utilities/Debug.h @@ -1,9 +1,6 @@ #pragma once #ifdef _DEBUG - // Diagnostic GCC/MinGW build: plain __VA_ARGS__ leaves a trailing comma - // when a call site passes no extra args (e.g. GWCA_INFO("message")), - // which MSVC's preprocessor tolerates but GCC's doesn't. ##__VA_ARGS__ - // is a GNU extension that swallows the comma in that case. + // ##__VA_ARGS__ is a GNU extension swallowing the trailing comma when no extra args are passed; MSVC tolerates plain __VA_ARGS__. #define GWCA_TRACE(fmt, ...) GW::LogMessage(GW::LEVEL_TRACE, __FILE__, (unsigned)__LINE__, __FUNCTION__, fmt, ##__VA_ARGS__) #define GWCA_DEBUG(fmt, ...) GW::LogMessage(GW::LEVEL_DEBUG, __FILE__, (unsigned)__LINE__, __FUNCTION__, fmt, ##__VA_ARGS__) #define GWCA_INFO(fmt, ...) GW::LogMessage(GW::LEVEL_INFO, __FILE__, (unsigned)__LINE__, __FUNCTION__, fmt, ##__VA_ARGS__) diff --git a/Dependencies/GWCA/Include/GWCA/Utilities/Export.h b/Dependencies/GWCA/Include/GWCA/Utilities/Export.h index 7bc4324f..11456f88 100644 --- a/Dependencies/GWCA/Include/GWCA/Utilities/Export.h +++ b/Dependencies/GWCA/Include/GWCA/Utilities/Export.h @@ -1,6 +1,17 @@ #pragma once -#if defined(__clang__) || defined(__GNUC__) +#include + +// GWCA is 32-bit only: every struct offset here comes from a 32-bit client, so a 64-bit build would read the wrong fields. +static_assert(sizeof(void*) == 4, + "GWCA is 32-bit only (x86 or wasm32). Configure with -A Win32, " + "or emcmake for wasm."); + +#if !defined(_WIN32) +// Non-PE targets: dllexport is meaningless and only warns; wasm exports come from EXPORTED_FUNCTIONS (tools/gen_wasm_exports.py). +# define DllExport +# define DllImport +#elif defined(__clang__) || defined(__GNUC__) # define DllExport __attribute__((dllexport)) # define DllImport __attribute__((dllimport)) #elif defined(_MSC_VER) diff --git a/Dependencies/GWCA/Include/GWCA/Utilities/Hooker.h b/Dependencies/GWCA/Include/GWCA/Utilities/Hooker.h index 6e620540..25e56a86 100644 --- a/Dependencies/GWCA/Include/GWCA/Utilities/Hooker.h +++ b/Dependencies/GWCA/Include/GWCA/Utilities/Hooker.h @@ -2,19 +2,124 @@ #include +#include + namespace GW { namespace Hook { + + // A code address on x86, a function index on wasm; not void*, since function-pointer-to-void* is ill-formed and clang rejects it. + struct HookTarget { + uintptr_t value = 0; + constexpr HookTarget() = default; + constexpr HookTarget(decltype(nullptr)) {} + template HookTarget(T* p) + : value((uintptr_t)p) {} + constexpr explicit operator bool() const { return value != 0; } + }; + +#if GWCA_WASM + // The loader sizes the dispatch table with TableBytes and passes it in -- the no-arg form below has no wasm definition. + GWCA_API size_t TableBytes(uint32_t first_func, uint32_t func_count); + GWCA_API bool Initialize(void* memory, uint32_t first_func, uint32_t func_count); + + // Move one funcref between GWCA's table and the game's, for a callback written into a game data structure (see StoCMgr). + GWCA_API uint32_t PublishFuncref(HookTarget local); + GWCA_API uint32_t AdoptFuncref(uint32_t game_slot); + + // A scanned function made callable. A scan yields a tagged code offset, + // which is not a table index -- calling one directly traps with "table + // index is out of bounds". A hooked function gets a callable form for + // free as its trampoline; anything called directly and never hooked has + // to be converted here first. 0 if it does not resolve. + GWCA_API uintptr_t CallableFromScan(uintptr_t scan_result); +#else GWCA_API void Initialize(); + + // x86 scan results are already code addresses, so call sites can be unconditional. + inline uintptr_t CallableFromScan(uintptr_t scan_result) { return scan_result; } +#endif GWCA_API void Deinitialize(); - // static void EnqueueHook(HookBase* base); - // static void RemoveHook(HookBase* base); + // static void EnqueueHook(HookBase*); static void RemoveHook(HookBase*); + + GWCA_API void EnableHooks(HookTarget target = nullptr); + GWCA_API void DisableHooks(HookTarget target = nullptr); + +#if GWCA_WASM + // A trampoline is only valid for call_indirect FROM WHICHEVER MODULE'S + // OWN "table_adopt" import populated it -- every wasm module gets its + // own table (see gw_in_browser's inject.js TableManager, one instance + // per module), and CreateHook is code compiled into gwca.wasm. A mod + // calling it cross-module got its trampoline written into GWCA's own + // table, not the mod's; the mod's own call_indirect through it then + // traps "table index is out of bounds" -- silently, since CreateHook + // itself reports success (the adopt genuinely succeeded, just into + // the wrong table). Found hooking a wasm test mod's own model-loading + // experiment; every existing hook avoided this only because GWCA + // hooks itself, so the code that creates the trampoline and the code + // that later calls it are always the same module by construction. + // + // This parameter closes that hole: it is mandatory, not defaulted, so + // a mod cannot compile a call to CreateHook without deciding what to + // pass. Supply the SAME kind of import GWCA's own uses internally -- + // an `extern "C" __attribute__((import_module("env"), + // import_name("table_adopt"))) uint32_t table_adopt(uint32_t);` declared + // in the mod's own translation unit, so the loader resolves it against + // the mod's own TableManager. GWCA's own 44 internal call sites use + // GW::Hook::GwcaTableAdopt via the GWCA_CREATE_HOOK macro below rather + // than repeat this by hand. + typedef uint32_t (*TableAdoptFn)(uint32_t game_slot); + + // gwca's OWN table_adopt import, valid ONLY for a trampoline that will + // be called from code compiled into gwca.wasm. Passing this from a mod + // reproduces exactly the bug this parameter exists to prevent -- a mod + // must supply its own import instead (see above). + GWCA_API uint32_t GwcaTableAdopt(uint32_t game_slot); + + GWCA_API int CreateHook(void** target, HookTarget detour, void** trampoline, + TableAdoptFn caller_table_adopt); + + // Prefer this form. The void** overload erases both signatures, so a + // detour whose type differs from its target's compiles on either + // platform: x86 ignores the difference, and wasm's call_indirect traps + // at the first call -- in a map load, far from the declaration. Here the + // two must deduce the same T, so a mismatch is a compile error instead. + template + int CreateHook(T* target, T detour, T* trampoline, TableAdoptFn caller_table_adopt) + { + return CreateHook((void**)target, HookTarget(detour), (void**)trampoline, caller_table_adopt); + } + + // GWCA's own call sites: `GWCA_CREATE_HOOK(&Func, Detour, &Ret)`, no + // different from the pre-parameter shape -- this is what supplies + // GwcaTableAdopt on their behalf so 44 internal call sites did not + // each need editing by hand. Not for mod code: a mod including this + // header gets the real, mandatory-parameter CreateHook above, and + // reaching for this macro to sidestep that is exactly the mistake the + // parameter exists to prevent -- pass your own import, not this one. + #define GWCA_CREATE_HOOK(target, detour, trampoline) \ + GW::Hook::CreateHook(target, detour, trampoline, GW::Hook::GwcaTableAdopt) +#else + GWCA_API int CreateHook(void** target, HookTarget detour, void** trampoline); - GWCA_API void EnableHooks(void* target = NULL); - GWCA_API void DisableHooks(void* target = NULL); + // Prefer this form. The void** overload erases both signatures, so a + // detour whose type differs from its target's compiles on either + // platform: x86 ignores the difference, and wasm's call_indirect traps + // at the first call -- in a map load, far from the declaration. Here the + // two must deduce the same T, so a mismatch is a compile error instead. + template + int CreateHook(T* target, T detour, T* trampoline) + { + return CreateHook((void**)target, HookTarget(detour), (void**)trampoline); + } - GWCA_API int CreateHook(void** target, void* detour, void** trampoline); - GWCA_API void RemoveHook(void* target); + // x86 has no wasm-style cross-module trampoline trap, so this is just + // CreateHook -- same macro name on both platforms so GWCA's own 44 + // internal call sites do not need an #if. + #define GWCA_CREATE_HOOK(target, detour, trampoline) \ + GW::Hook::CreateHook(target, detour, trampoline) +#endif + GWCA_API void RemoveHook(HookTarget target); GWCA_API void EnterHook(); GWCA_API void LeaveHook(); diff --git a/Dependencies/GWCA/Include/GWCA/Utilities/Scanner.h b/Dependencies/GWCA/Include/GWCA/Utilities/Scanner.h index dc1b8888..37a0a966 100644 --- a/Dependencies/GWCA/Include/GWCA/Utilities/Scanner.h +++ b/Dependencies/GWCA/Include/GWCA/Utilities/Scanner.h @@ -2,6 +2,10 @@ #include "Export.h" +#include +#include +#include + namespace GW { enum ScannerSection : uint8_t { Section_TEXT = 0, @@ -13,9 +17,7 @@ namespace GW { uintptr_t start = 0; uintptr_t end = 0; }; - // class PatternScanner - // 32 bit pattern scanner for x86 programs. - // Credits to Zat & Midi12 @ unknowncheats.me for the functionality of this class. + // 32-bit pattern scanner for x86 programs. Credits to Zat & Midi12 @ unknowncheats.me. namespace Scanner { // Initializer to determine scan range. GWCA_API void Initialize(const char* moduleName = NULL); @@ -40,6 +42,10 @@ namespace GW { // Actual pattern finder. GWCA_API uintptr_t Find(const char* pattern, const char* mask = 0, int offset = 0, ScannerSection section = ScannerSection::Section_TEXT); + // The nth match of a pattern, 0-based: FindNth(p, m, 0, off) == Find(p, m, off). + // Use when a pattern is deliberately ambiguous and it is a later hit you want. + GWCA_API uintptr_t FindNth(const char* pattern, const char* mask, size_t nth, int offset = 0, ScannerSection section = ScannerSection::Section_TEXT); + GWCA_API void GetSectionAddressRange(ScannerSection section, uintptr_t* start = nullptr, uintptr_t* end = nullptr); // Check if current address is a valid pointer (usually to a data variable in DATA) @@ -49,5 +55,80 @@ namespace GW { GWCA_API uintptr_t FunctionFromNearCall(uintptr_t call_instruction_address, bool check_valid_ptr = true); GWCA_API uintptr_t ToFunctionStart(uintptr_t call_instruction_address, uint32_t scan_range = 0xff); + +#if GWCA_WASM + // Every scan returns an address, as on x86 -- here a tagged CODE OFFSET + // (0x80000000 | offset) rather than a linear one. FunctionAtCodeOffset is the one + // way back to a bare function index; ToFunctionStart and the arity checks take + // either form. See Source/Platform/Wasm/Scanner.cpp. + + // Initialise from the module bytes -- a running module cannot read its own code section. + GWCA_API bool Initialize(const void* wasm_bytes, size_t length); + GWCA_API bool IsInitialized(); + + // Scans with no wasm equivalent record what they were asked for rather than failing silently. + GWCA_API const std::vector& GetUnportedScans(); + + // Replaces *(uintptr_t*)address: LLVM puts the global in the load's memarg offset, not in a constant. + GWCA_API uintptr_t GlobalFromFunction(uintptr_t func_index, size_t nth = 0); + GWCA_API std::vector GlobalsInFunction(uintptr_t func_index); + + // The global read straight out of a load/store you already located. 0 if that offset is not a load/store. + GWCA_API uintptr_t GlobalAtCodeOffset(uintptr_t code_offset); + + // The i32.const immediate at an offset you already located, decoded from LEB128 -- + // what a deref does on x86, which cannot work here: the code section is not in + // linear memory, and the immediate is a varint rather than a raw word. + GWCA_API uintptr_t ConstAtCodeOffset(uintptr_t code_offset); + + // A static passed as an i32.const rather than loaded from; restricted to .bss to exclude .data string constants. + GWCA_API uintptr_t BssConstFromFunction(uintptr_t func_index, size_t nth = 0); + + // The one function referencing `str` with this exact type; 0 if none or ambiguous. + // For an overload pair a shared string cannot separate and an ordinal must not: nth + // orders by .text address on x86 but by function index here, and they disagree. + GWCA_API uintptr_t FindUseOfStringWithSignature(const char* str, uint32_t params, + uint32_t results); + + // Replaces the Find+FunctionFromNearCall idiom: find where a constant is passed, take the callee. + GWCA_API uintptr_t FindCallAfterConst(int32_t value, int window = 6); + GWCA_API uintptr_t FindCallAfterConstWithArity(int32_t value, uint32_t nparams, + int window = 6); + + // Does the resolved index take `expected` wasm params? True when it matches or cannot be determined; drive it via the macro. + GWCA_API bool CheckArity(uintptr_t func_index, uint32_t expected, const char* what); + + // Same, plus the RESULT count -- the only guard catching the return-type mismatch that makes call_indirect trap. + GWCA_API bool CheckSignature(uintptr_t func_index, uint32_t expected_params, + uint32_t expected_results, const char* what); + + // Resolve a code offset or bare index to a function index (0 if it does not resolve); GW::Hook uses it to find what it hooks. + GWCA_API uintptr_t FunctionAtCodeOffset(uintptr_t address); + + // The function's start as a CODE OFFSET, which is what ToFunctionStart + // used to give. Only for scanning on from it -- FindInRange bounds and + // address arithmetic. ToFunctionStart now returns something callable, + // and an offset is not callable any more than a callable is scannable. + GWCA_API uintptr_t FunctionStartAddress(uintptr_t address, uint32_t scan_range = 0); + + // Records that `callable` is `func_index`, so a scan result that has been + // made callable still resolves for CheckArity, GlobalFromFunction and + // CreateHook. GW::Hook fills this in as it adopts. + GWCA_API void NoteCallable(uintptr_t callable, uintptr_t func_index); +#endif } } + +// Discard a scan result whose resolved function takes the wrong wasm parameter count. No-op on x86. +#if GWCA_WASM +// Discards with `= 0` not `= nullptr`, so it takes a raw uintptr_t scan result as well as a typed function pointer. +#define GWCA_SCAN_CHECK_ARITY(func, expected) \ + do { if (!GW::Scanner::CheckArity((uintptr_t)(func), (uint32_t)(expected), #func)) (func) = 0; } while (0) +// Prefer over GWCA_SCAN_CHECK_ARITY when the result count is known: 0 for void, 1 otherwise. +#define GWCA_SCAN_CHECK_SIG(func, params, results) \ + do { if (!GW::Scanner::CheckSignature((uintptr_t)(func), (uint32_t)(params), \ + (uint32_t)(results), #func)) (func) = 0; } while (0) +#else +#define GWCA_SCAN_CHECK_ARITY(func, expected) ((void)0) +#define GWCA_SCAN_CHECK_SIG(func, params, results) ((void)0) +#endif diff --git a/Dependencies/GWCA/Include/GWCA/Utilities/Version.h b/Dependencies/GWCA/Include/GWCA/Utilities/Version.h new file mode 100644 index 00000000..1033026b --- /dev/null +++ b/Dependencies/GWCA/Include/GWCA/Utilities/Version.h @@ -0,0 +1,21 @@ +#pragma once + +#include + +#include + +// Guards against headers and binary being from different releases -- struct offsets shift and nothing else catches it. +#define GWCA_ABI_VERSION 0x04080500u + +extern "C" { + // The version the binary was built at, against GWCA_ABI_VERSION which is what the caller compiled against. + GWCA_API uint32_t gwca_abi_version(void); +} + +namespace GW { + // Call before anything else: a mismatch means every struct offset is suspect. + inline bool AbiVersionMatches() + { + return gwca_abi_version() == GWCA_ABI_VERSION; + } +} diff --git a/Dependencies/GWCA/Include/GWCA/stdafx.h b/Dependencies/GWCA/Include/GWCA/stdafx.h index c988dfa3..67bd6916 100644 --- a/Dependencies/GWCA/Include/GWCA/stdafx.h +++ b/Dependencies/GWCA/Include/GWCA/stdafx.h @@ -1,5 +1,7 @@ #pragma once +// MSVC-only: every other compiler reports the whole block as unknown-pragma noise. +#ifdef _MSC_VER #pragma warning(disable: 4619) // there is no warning number 'number' #pragma warning(push) @@ -20,6 +22,7 @@ #pragma warning(disable: 5027) // 'type': move assignment operator was implicitly defined as deleted #pragma warning(disable: 5039) // 'function': pointer or reference to potentially throwing function passed to extern C function under -EHc. Undefined behavior may occur if this function throws an exception. #pragma warning(disable: 5045) // Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified +#endif #ifndef _CRT_SECURE_NO_WARNINGS # define _CRT_SECURE_NO_WARNINGS 1 @@ -49,10 +52,18 @@ # define WIN32_LEAN_AND_MEAN #endif +// GWCA_WASM comes from the build, not a header, so an undefined macro takes the Win32 branch -- what a consumer wants. +#if GWCA_WASM +// No Win32 here: the shim keeps the few Windows typedefs in GWCA's public headers parsing, and does not ship. +#include +#else #include #include +#endif +#ifdef _MSC_VER #pragma warning(pop) +#endif #ifndef _MSC_VER // GCC/MinGW diagnostic-build compatibility shim (not needed on MSVC). @@ -60,6 +71,7 @@ #endif +#ifdef _MSC_VER #pragma warning(disable: 4061) // enumerator 'identifier' in switch of enum 'enumeration' is not explicitly handled by a case label #pragma warning(disable: 4201) // nonstandard extension used : nameless struct/union #pragma warning(disable: 4514) // 'function' : unreferenced inline function has been removed @@ -77,3 +89,4 @@ #pragma warning(disable: 5027) // 'type': move assignment operator was implicitly defined as deleted #pragma warning(disable: 5045) // Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified #pragma warning(disable: 28159) // Consider using 'GetTickCount64' instead of 'GetTickCount'. +#endif diff --git a/Dependencies/GWCA/gwca.dll b/Dependencies/GWCA/gwca.dll index f8b5a5710fc1a189d19e4776a346b0452ca7853c..022576c0d5b891db370ee7c95782ab1af6a7f4d1 100644 GIT binary patch literal 379392 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 z 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 Xo-97AlzN&{7E{E3{Qp1y=N0%*krbB? literal 338017 zcmd?S3wTpi);E6AoVJIOHbGJ>TA)hQYO5AQwVi;r(3C0^6G{^zv{eUdCU`+eC|-be z(kh2-W^~4xac0!9GQQ(noMCPP-llD!7vxsFfp}pQogGu1auEtv^8c-Ul2R@@e((Q% zp6_{|kB6S@v-jG!wbx#I?X}n1r}CypB)ud_GX7#QN!oy4`d1>J-~2G?Bq?LUiy6}2 zMr^xagKpNg3+8&iw=`$*lDltTa?71L-@WCoyYBYq+eXPza|P0_7I|Q zk|d?zN0w5>FC|EelQrZbsFzB#Oax0A#IN?VxI&i9Kb55B_ho4zB^M-1-83kt|0_wB zZoX2I*5%1k_UUQE-uo|;PaQ+F^VeF_he4eTmdU>{Ezpy4!wzw`IS!cgsWMf(;2c4cG(9BFAm-@PLjNTC4euU0zl815J{jxZx=zl zu0eSB(n}}3guVZ!@QYel??m{ITKHTFKO@4vEMAPtyJSlqB2`H(k<}8VzN^Hb)2%g` zlTG}-1l%YMuJBB_EP|V(m3N;e}fG0}9U*VgB!%Q9^_wW{8M0s<`zK01gqr#RPyVQs>}htX9-0 z3a4w~^C_&;!WU8aizf&T-YY2_(Za}7>fU^+MB?NH` zLHyurAQs;OhyX#{@ih<+*8xH$h#S5J;>}t>JV_9_Ujs3oApT4cDH;UG;|YX79-9$+ z8gaH|f;`^)CE;c3$$!DVtg334Tb*mkR%cmE{K#XH#0t9sYu(GHZpAOV!;-&xfh9*> zV6oVa`Wx7ta&WU!&69TOB(~erve(!g#_X#GTtRgepZ{l_6x?J8UMsD-mX%pdY<9j{ zW-*7#L@2Vy4ZPC$fF(!rr*_#Ttn(5> z3#kq>+ZM~*jdn$^LeWFT-huXuqWu+#Vsp+~?3R|j{?sZycLxx`$Dp@$wKemDo3c7& zX+w8ZZ*usO91gx{rX=x#$8^$GK_C2sAEO0!MYRtwyFs-NhU^1A$>ALde$C&TB6`ew z028Mc{-?9Uk0$u%jlRYfp2V(SATJw0tR>VwnTz zInY}xDhl=)xIIzRVbQXIHFnc#YTsdMUk=qbHD2GPqP`8YZvescOwdcgzT7GoJ78^7 z1N%$d)|hJVSFcr9%IZo*T`}lw{0Jmu@8`)^(>SX&Tnx2@<V8h z^REo8E<${leIEu&3f(J*>|50pyB+F^cX=BYXIAruZN=6=a&gT*|BdWM`AECYC(Se3 zyLtbWD14_{-N)9DBo~b6{K~lKUcK-J)R8YB_Uq;2Q z*d6^1tKlI=wOjY1Vzp-9u)50tBr3Mmyy3t8l!_Zrv1;eR4OA`FH(R#Nruua8`t01{ zM1A&neJ>iR8~dor=UL@p)>&6Of1#RA{Y?yo%gv63Di8BtoQTDk{ctp$6%@a^2`%%d z1>0nseIW3;^#}nZ18;S#6JzLdZ|on9X_=20HuVhz*)`FTv1JDS{-cPw+Jkv;pl;(% zB-BQh0VvpKqUp+Sq-4Lvf)=J-fThnRW)Rn*!@=dUWNdy74Wr0x2Y&{Up;?$X5-Ty# zT;y-(APW-X6OaFBl$I@!9-jho1hhi)(@bC}V+TR3lt-eBc_zOT!Aa}^OK#vhEiwPq z!Bt9Xpn%OVfD|reUYTvL==kz+dZ{YdSK)GpD*wQ9zKX>X zQ>lQJ$hLmfzAy4Rx)QsZ|MM!4+JL7eW^8^5G3p{t!u5O{{l_~vaE}fWG(x+hJ7?YfwttR5=USP z5ctD#AP{UVxF5_+ak(3dBxB3x=oJ{q4kX$o0nNzf#<7vDgHE zWsocWD}p@T*s>mxEK?qnY--tMZ2m31Rho=1lq!zcJ#uVPY!|v4`4L5@_k(j0=WnJr zyD7FhVO!@?H={^c*ycm73P>M=aB=<@l*1B!y`IeV%NTlJk{Pe2p|RVSTaE1V_1PN$;HPZf|}`1Q419y z!|i_cT>!eg`w9GQQJx9lc|KieHPz~)NmOx`yT zT1yZ9_QOaZ3h=g?kwE?9VTvQt@up=WPPFt-6h}kny@%ik=lquxN9&%qm*PZ?4nAS$e6J>ctXA9dhvLfcLag723O1yi@Vo`$T$oy}A!w zVq-#;TfG%yB@lulNj@EGPi!#ecsCKZ{=iPW%!F9XK1{!@ya`hiv$E;LAPNY)Qp*>7 zi8Y||@X!hosRIO0KOT#Tc4?JvV5c_fIq`n7QIFHRPtq!VsvLdvgopLvB}xvnSr(b! ze=HVr@W*mVxMS%=fh|4$bArW^KlzAGA5d7SVk?!GC0Tn|dzgQ6pCq9L8LY7}MTBHl zVh&r|!h9n(P)N};iC$Z2wuD=0vS>RgO#&Jw`@|8$-?0kr-V=tzC!>J0*y4QN1LSzZ zSG7@INGgYnCcA=(?{Xh9j{G6P^u8 z6#`pN0oJ;!r7cwPfYIK|I>N0qZD>G{%WSJqmKquOqTfKlR3@*XTyaJ$ff1*af)Ts0 zj4Lfi{O9vO0AI*>4pUIQ!L}HA7IjXp)wd&CZ5XSg%xlnY61Yr98lONAlI)ts40J|I zT|o$^2CpeeBD{+%mz^bxaVX0TC$s1&OQJPn`QO1dsU~U%mVE?AFnL|AXv?rZOe;Yj zL`8)t6l*6H=n38Q!PT2wXdo2$ZN2iXY~veJC^ zC^ZF=kg~>Zn5_V-GnRoqsMXOa zYnuL!UQf{nL_R=BQ8Sf5N}(w!eucsSkbERdDRFuH`2sOnX!VJ_w-ddjk$nyU8oT(^ zi;UU^elfK{5MWklHId@iP3LompawB_z7FaDlvXG|n>|8MpvrTIP;IMal)N-$QG0>D zgGR;0OG$j~2Swh={|qih1n$3;DXc_sho&^ycK98badR!Esx=F+yVD`{nglgoQS>&&7t~uD=2ov4@4?hs_Xa{s4U0O9^zHs+Rx){5es{|eWAk`4gZ+Sp`A9o9 zs6Rk}z1oaO$g3CdwL&^IHV+`$&ARy`5FAh+`e=z@g_QWF0N`imvqwaYyZqy9t3{2O zi+YOmTl^WpdnZc(FP$6_0+2wdas3YtBQME8Pvcj^tTBikrX;XyY*rCuB{>litXMm! z3$!(#KSy;9@T=*kq6qD~4PCs2{p@jqD$mDAd2A0ojhCg)MQsLFW>V19QsyAeBD0QY z5k?$?mTeZfZXKL^a0V-;*3?Pv^Vb$d_gNgBEpDd91!I<#ue#2{jktQ}eYD7jZ!Fm?Ciyk-9 zV<|oS^q_S$5~9a1=pkVRj=YFfHIfaQiR`4fV!VR%FyD+XVEQ@1{bh@TPb8x9gd;am zF<0P$X-8`kCcl$l04m;SQIRdY0uWe*!jU#Ab1u~*9^a+VV^rCVc+7F~{)==pgH6y+ zm_SO4F!d>4SE+^Y!jsa7d-+YYFm~y>As(ouvUDV + /// Configures the Windows computer name from the Linux host name. + /// + /// Cancellation token. + /// True if successful, false otherwise. + Task ConfigureComputerName(CancellationToken cancellationToken); + /// /// Launches a Windows executable through Wine with the managed prefix. /// Uses event-based stdout/stderr reading to avoid pipe deadlocks. diff --git a/Daybreak.Linux/Services/Wine/WinePrefixManager.cs b/Daybreak.Linux/Services/Wine/WinePrefixManager.cs index 7e31a9df..ea525252 100644 --- a/Daybreak.Linux/Services/Wine/WinePrefixManager.cs +++ b/Daybreak.Linux/Services/Wine/WinePrefixManager.cs @@ -19,6 +19,11 @@ public sealed class WinePrefixManager( { private const string WinePrefixFolder = "WinePrefix"; private const string WineExecutable = "wine"; + private const string WineNetworkRegistryKey = @"HKCU\Software\Wine\Network"; + private const string ComputerNameRegistryKey = + @"HKLM\System\CurrentControlSet\Control\ComputerName\ComputerName"; + private const string ActiveComputerNameRegistryKey = + @"HKLM\System\CurrentControlSet\Control\ComputerName\ActiveComputerName"; private static readonly ProgressUpdate ProgressStarting = new(0, "Starting Wine prefix setup"); private static readonly ProgressUpdate ProgressCheckingWine = new( @@ -243,6 +248,59 @@ public string GetWinePrefixPath() return this.winePrefixPath; } + public async Task ConfigureComputerName(CancellationToken cancellationToken) + { + if (!this.IsInitialized()) + { + this.logger.LogWarning( + "Cannot configure computer name before the Wine prefix is initialized" + ); + return false; + } + + var computerName = Environment.MachineName; + var useDnsComputerNameConfigured = await this.AddRegistryValue( + WineNetworkRegistryKey, + "UseDnsComputerName", + "N", + "REG_SZ", + cancellationToken + ); + var computerNameConfigured = await this.AddRegistryValue( + ComputerNameRegistryKey, + "ComputerName", + computerName, + "REG_SZ", + cancellationToken + ); + var activeComputerNameConfigured = await this.AddRegistryValue( + ActiveComputerNameRegistryKey, + "ComputerName", + computerName, + "REG_SZ", + cancellationToken + ); + + if ( + !useDnsComputerNameConfigured + || !computerNameConfigured + || !activeComputerNameConfigured + ) + { + this.logger.LogError( + "Failed to configure Wine computer name {ComputerName} from the Linux host name", + computerName + ); + return false; + } + + this.logger.LogInformation( + "Configured Wine computer name {ComputerName} from the Linux host name", + computerName + ); + return true; + } + public IProgressAsyncOperation Install(CancellationToken cancellationToken) { return ProgressAsyncOperation.Create( @@ -280,6 +338,13 @@ CancellationToken cancellationToken "Wine prefix already initialized at {PrefixPath}", this.winePrefixPath ); + + if (!await this.ConfigureComputerName(cancellationToken)) + { + progress.Report(ProgressFailed); + return false; + } + progress.Report(ProgressAlreadyInitialized); return true; } @@ -333,6 +398,13 @@ CancellationToken cancellationToken this.logger.LogWarning("Failed to set d3d9 DLL override, but continuing..."); } + progress.Report(new ProgressUpdate(0.9, "Configuring computer name")); + if (!await this.ConfigureComputerName(cancellationToken)) + { + progress.Report(ProgressFailed); + return false; + } + this.logger.LogInformation("Wine prefix initialized successfully"); progress.Report(ProgressFinished); return true; From 343438808fa87d932c143e46725d4a3cdb7b2806 Mon Sep 17 00:00:00 2001 From: Macocian Alexandru Victor Date: Sun, 30 Aug 2026 23:12:11 +0200 Subject: [PATCH 4/4] Update deps (#1612) * Update dependencies * Fix GWCA issues --- Daybreak.API/Interop/GWCA.cs | 730 +++++++++++++----- .../Interop/GuildWars/GuildWarsArray.cs | 31 +- .../Interop/GuildWars/WrappedPointer.cs | 12 + .../Services/CharacterSelectService.cs | 19 +- Daybreak.Core/Services/DXVK/DXVKService.cs | 1 + .../Views/EventCalendarView.razor.cs | 4 +- Daybreak.Generators/CppHeaderParser.cs | 45 +- Daybreak.Generators/GenerateGWCABindings.cs | 135 ++-- Daybreak.Generators/MsvcDemangler.cs | 1 + .../Services/Keyboard/KeyboardHookService.cs | 1 + .../Services/Screens/ScreenManager.cs | 2 +- .../Startup/Actions/SetupWinePrefixAction.cs | 27 - .../Window/WindowManipulationService.cs | 1 + Daybreak.Linux/Services/Wine/WineDebugLog.cs | 96 +++ .../Services/Wine/WinePrefixManager.cs | 33 +- Directory.Packages.props | 56 +- LICENSE.md | 25 +- README.md | 28 + Scripts/SetupWinePrefix.sh | 46 +- Tools/SkillUpdater/WikiSkillParser.cs | 4 + 20 files changed, 947 insertions(+), 350 deletions(-) create mode 100644 Daybreak.Linux/Services/Wine/WineDebugLog.cs diff --git a/Daybreak.API/Interop/GWCA.cs b/Daybreak.API/Interop/GWCA.cs index 0d095232..cdb4f281 100644 --- a/Daybreak.API/Interop/GWCA.cs +++ b/Daybreak.API/Interop/GWCA.cs @@ -13,7 +13,7 @@ namespace Daybreak.API.Interop { /// -/// P/Invoke bindings for 545 C++ exports from gwca.dll (0 skipped). +/// P/Invoke bindings for 560 C++ exports from gwca.dll (0 skipped). /// Nested classes mirror the C++ namespace hierarchy (e.g. GW::Agents → GWCA.GW.Agents). /// Types annotated with [GWCAEquivalent] are used in signatures where available. /// @@ -23,11 +23,11 @@ public static unsafe partial class GWCA // ═══════════════════════════════════════════════════ // Parsed structs diagnostic: // [NAMESPACE] GWCA.GW popped at line 46 - // [NAMESPACE] GWCA.GW.Agents popped at line 215 - // [NAMESPACE] GWCA.GW.CameraMgr popped at line 35 - // [NAMESPACE] GWCA.GW.Chat popped at line 21 - // [NAMESPACE] GWCA.GW.Chat.TextColor popped at line 50 - // [NAMESPACE] GWCA.GW.Constants popped at line 25 + // [NAMESPACE] GWCA.GW.Agents popped at line 211 + // [NAMESPACE] GWCA.GW.CameraMgr popped at line 34 + // [NAMESPACE] GWCA.GW.Chat popped at line 13 + // [NAMESPACE] GWCA.GW.Chat.TextColor popped at line 54 + // [NAMESPACE] GWCA.GW.Constants popped at line 17 // [NAMESPACE] GWCA.GW.Constants.DialogID popped at line 282 // [NAMESPACE] GWCA.GW.Constants.ItemID popped at line 201 // [NAMESPACE] GWCA.GW.Constants.ModelID.Minipet.SummoningStone.FoW.UW.FoW.Urgoz.Deep.DoA.EotnDungeons.BonusMissionPack.EotnDungeons popped at line 445 @@ -35,31 +35,31 @@ public static unsafe partial class GWCA // [NAMESPACE] GWCA.GW.Constants.Preference popped at line 62 // [NAMESPACE] GWCA.GW.Constants.Range popped at line 239 // [NAMESPACE] GWCA.GW.Constants.SqrRange popped at line 249 - // [NAMESPACE] GWCA.GW.Effects popped at line 60 - // [NAMESPACE] GWCA.GW.EventMgr popped at line 32 - // [NAMESPACE] GWCA.GW.FriendListMgr popped at line 32 - // [NAMESPACE] GWCA.GW.GameThread popped at line 32 + // [NAMESPACE] GWCA.GW.Effects popped at line 58 + // [NAMESPACE] GWCA.GW.EventMgr popped at line 83 + // [NAMESPACE] GWCA.GW.FriendListMgr popped at line 35 + // [NAMESPACE] GWCA.GW.GameThread popped at line 31 // [NAMESPACE] GWCA.GW.GuildMgr popped at line 21 - // [NAMESPACE] GWCA.GW.Hook popped at line 22 + // [NAMESPACE] GWCA.GW.Hook popped at line 127 // [NAMESPACE] GWCA.GW.Items popped at line 97 - // [NAMESPACE] GWCA.GW.Map popped at line 165 - // [NAMESPACE] GWCA.GW.MemoryMgr popped at line 30 + // [NAMESPACE] GWCA.GW.Map popped at line 166 + // [NAMESPACE] GWCA.GW.MemoryMgr popped at line 28 // [NAMESPACE] GWCA.GW.Merchant popped at line 30 - // [NAMESPACE] GWCA.GW.Packet popped at line 112 - // [NAMESPACE] GWCA.GW.Packet.StoC popped at line 107 - // [NAMESPACE] GWCA.GW.Packet.StoC.GenericValueID popped at line 70 - // [NAMESPACE] GWCA.GW.Packet.StoC.JumboMessageType popped at line 82 - // [NAMESPACE] GWCA.GW.Packet.StoC.JumboMessageValue popped at line 99 - // [NAMESPACE] GWCA.GW.PartyMgr popped at line 108 + // [NAMESPACE] GWCA.GW.Packet popped at line 91 + // [NAMESPACE] GWCA.GW.Packet.StoC popped at line 86 + // [NAMESPACE] GWCA.GW.Packet.StoC.GenericValueID popped at line 58 + // [NAMESPACE] GWCA.GW.Packet.StoC.JumboMessageType popped at line 70 + // [NAMESPACE] GWCA.GW.Packet.StoC.JumboMessageValue popped at line 78 + // [NAMESPACE] GWCA.GW.PartyMgr popped at line 107 // [NAMESPACE] GWCA.GW.PlayerMgr popped at line 56 // [NAMESPACE] GWCA.GW.QuestMgr popped at line 43 - // [NAMESPACE] GWCA.GW.Render popped at line 127 - // [NAMESPACE] GWCA.GW.Scanner popped at line 52 + // [NAMESPACE] GWCA.GW.Render popped at line 167 + // [NAMESPACE] GWCA.GW.Scanner popped at line 119 // [NAMESPACE] GWCA.GW.SkillbarMgr popped at line 43 - // [NAMESPACE] GWCA.GW.StoC popped at line 50 - // [NAMESPACE] GWCA.GW.TargetFilter popped at line 122 + // [NAMESPACE] GWCA.GW.StoC popped at line 45 + // [NAMESPACE] GWCA.GW.TargetFilter popped at line 126 // [NAMESPACE] GWCA.GW.Trade popped at line 22 - // [NAMESPACE] GWCA.GW.UI popped at line 806 + // [NAMESPACE] GWCA.GW.UI popped at line 833 // [NAMESPACE] GWCA.GW.UI.UIPacket popped at line 30 // [NAMESPACE] GWCA.GWCA popped at line 15 // GWCA.GW.AccountContext: 9 fields [OK] @@ -116,6 +116,7 @@ public static unsafe partial class GWCA // GWCA.GW.HeroFlag: 8 fields [OK] // GWCA.GW.HeroInfo: 35 fields [OK] // GWCA.GW.HeroPartyMember: 6 fields [OK] + // GWCA.GW.Hook.HookTarget: 1 fields [OK] // GWCA.GW.Inventory: 39 fields [OK] // GWCA.GW.InventoryTableEntry: 3 fields [OK] // GWCA.GW.Item: 26 fields [OK] @@ -126,10 +127,13 @@ public static unsafe partial class GWCA // GWCA.GW.ItemModifier: 1 fields [OK] // GWCA.GW.LoginCharacter: 2 fields [OK] // GWCA.GW.MapAgent: 13 fields [OK] - // GWCA.GW.MapContext: 57 fields [OK] - // GWCA.GW.MapProp: 18 fields [OK] + // GWCA.GW.MapContext: 51 fields [OK] + // GWCA.GW.MapLightContext: 2 fields [OK] + // GWCA.GW.MapLightDescriptor: 8 fields [OK] + // GWCA.GW.MapProp: 20 fields [OK] // GWCA.GW.MapStaticData: 37 fields [SKIP: unresolved typedef in field map: PathingMapArray] // GWCA.GW.MapTypeInstanceInfo: 3 fields [OK] + // GWCA.GW.MapWaterContext: 8 fields [OK] // GWCA.GW.Mat4x3f: 13 fields [OK] // GWCA.GW.MaterialCost: 4 fields [OK] // GWCA.GW.Merchant.QuoteInfo: 2 fields [OK] @@ -175,13 +179,14 @@ public static unsafe partial class GWCA // GWCA.GW.ProfessionState: 5 fields [OK] // GWCA.GW.ProgressBarContext: 5 fields [OK] // GWCA.GW.PropByType: 2 fields [OK] - // GWCA.GW.PropModelInfo: 6 fields [OK] + // GWCA.GW.PropModelInfo: 5 fields [OK] // GWCA.GW.PropsContext: 6 fields [SKIP: complex template in field propsByType: Array>] // GWCA.GW.PvPItemInfo: 1 fields [OK] // GWCA.GW.PvPItemUpgradeInfo: 10 fields [OK] // GWCA.GW.Quest: 11 fields [OK] // GWCA.GW.RecObject: 9 fields [OK] - // GWCA.GW.Render.Mat4x3f: 13 fields [OK] + // GWCA.GW.Render.GlesDevice: 12 fields [OK] + // GWCA.GW.Render.GlFragmentRenderState: 5 fields [OK] // GWCA.GW.SalvageSessionInfo: 9 fields [OK] // GWCA.GW.ScannerSectionOffset: 2 fields [OK] // GWCA.GW.ScrollableFrame: 0 fields [SKIP: no fields] @@ -196,6 +201,10 @@ public static unsafe partial class GWCA // GWCA.GW.SubStructUnk: 9 fields [OK] // GWCA.GW.TabsFrame: 0 fields [SKIP: no fields] // GWCA.GW.TagInfo: 4 fields [OK] + // GWCA.GW.TerrainShadowRecord: 3 fields [OK] + // GWCA.GW.TerrainTexContext: 5 fields [SKIP: complex template in field shadow_records: BaseArray] + // GWCA.GW.TerrainTexTile: 5 fields [OK] + // GWCA.GW.TerrainTexture: 4 fields [OK] // GWCA.GW.TextCache: 1 fields [OK] // GWCA.GW.TextParser: 14 fields [OK] // GWCA.GW.THash: 5 fields [SKIP: template param T in field m_fullList] @@ -209,7 +218,7 @@ public static unsafe partial class GWCA // GWCA.GW.TradeContext: 4 fields [OK] // GWCA.GW.TradeItem: 2 fields [OK] // GWCA.GW.TradePlayer: 2 fields [OK] - // GWCA.GW.UI.AgentNameTagInfo: 15 fields [OK] + // GWCA.GW.UI.AgentNameTagInfo: 17 fields [OK] // GWCA.GW.UI.ChatTemplate: 4 fields [OK] // GWCA.GW.UI.CompassPoint: 2 fields [OK] // GWCA.GW.UI.CreateUIComponentPacket: 6 fields [OK] @@ -271,7 +280,6 @@ public static unsafe partial class GWCA // GWCA.GW.UI.UIPacket.kSendMerchantTransactItem: 5 fields [OK] // GWCA.GW.UI.UIPacket.kSendMoveItem: 4 fields [OK] // GWCA.GW.UI.UIPacket.kSendPingWeaponSet: 3 fields [OK] - // GWCA.GW.UI.UIPacket.kSendUseItem: 2 fields [OK] // GWCA.GW.UI.UIPacket.kSendWorldAction: 3 fields [OK] // GWCA.GW.UI.UIPacket.kServerActiveQuestChanged: 5 fields [OK] // GWCA.GW.UI.UIPacket.kSetAgentProfession: 3 fields [OK] @@ -621,10 +629,11 @@ public static partial class Agents [return: MarshalAs(UnmanagedType.U1)] public static partial bool Move(global::Daybreak.API.Interop.GuildWars.GamePos gamePos); - // GW::Agents::RegisterAgentEffectCallback | function2: TODO: map struct function - // [LibraryImport(DllName, EntryPoint = "?RegisterAgentEffectCallback@Agents@GW@@YAXPAUHookEntry@2@ABV?$function@$$A6AXPAUHookStatus@GW@@PBUAgentLiving@2@PBUAgentEffect@2@@Z@std@@H@Z")] - // [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - // public static partial void RegisterAgentEffectCallback(global::Daybreak.API.Interop.HookEntry* hookEntry1, function* function2, global::Daybreak.API.Interop.GuildWars.AgentLiving* agentLiving3, global::Daybreak.API.Interop.GuildWars.AgentEffect* agentEffect4); + // GW::Agents::RefreshAgentNameTag + [LibraryImport(DllName, EntryPoint = "?RefreshAgentNameTag@Agents@GW@@YA_NPBUAgent@2@@Z")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [return: MarshalAs(UnmanagedType.U1)] + public static partial bool RefreshAgentNameTag(global::Daybreak.API.Interop.GuildWars.Agent* agent); // GW::Agents::SendDialog [LibraryImport(DllName, EntryPoint = "?SendDialog@Agents@GW@@YA_NI@Z")] @@ -1058,6 +1067,12 @@ public static partial class EventMgr [LibraryImport(DllName, EntryPoint = "?RemoveEventCallback@EventMgr@GW@@YAXPAUHookEntry@2@W4EventID@12@@Z")] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] public static partial void RemoveEventCallback(global::Daybreak.API.Interop.HookEntry* hookEntry1, global::Daybreak.API.Interop.GWCA.GW.EventMgr.EventID eventID2); + + // GW::EventMgr::SendEventMessage + [LibraryImport(DllName, EntryPoint = "?SendEventMessage@EventMgr@GW@@YA_NW4EventID@12@PAXI@Z")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [return: MarshalAs(UnmanagedType.U1)] + public static partial bool SendEventMessage(global::Daybreak.API.Interop.GWCA.GW.EventMgr.EventID eventID1, void* ptr2, uint value3); } public static partial class FriendListMgr @@ -1245,9 +1260,9 @@ public static partial class Hook { // GW::Hook::CreateHook - [LibraryImport(DllName, EntryPoint = "?CreateHook@Hook@GW@@YAHPAPAXPAX0@Z")] + [LibraryImport(DllName, EntryPoint = "?CreateHook@Hook@GW@@YAHPAPAXUHookTarget@12@0@Z")] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - public static partial int CreateHook(void* ptr1, void* ptr2, nint ptr3); + public static partial int CreateHook(void* ptr1, global::Daybreak.API.Interop.GuildWars.HookTarget hookTarget2, nint ptr3); // GW::Hook::Deinitialize [LibraryImport(DllName, EntryPoint = "?Deinitialize@Hook@GW@@YAXXZ")] @@ -1255,14 +1270,14 @@ public static partial class Hook public static partial void Deinitialize(); // GW::Hook::DisableHooks - [LibraryImport(DllName, EntryPoint = "?DisableHooks@Hook@GW@@YAXPAX@Z")] + [LibraryImport(DllName, EntryPoint = "?DisableHooks@Hook@GW@@YAXUHookTarget@12@@Z")] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - public static partial void DisableHooks(void* ptr); + public static partial void DisableHooks(global::Daybreak.API.Interop.GuildWars.HookTarget hookTarget); // GW::Hook::EnableHooks - [LibraryImport(DllName, EntryPoint = "?EnableHooks@Hook@GW@@YAXPAX@Z")] + [LibraryImport(DllName, EntryPoint = "?EnableHooks@Hook@GW@@YAXUHookTarget@12@@Z")] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - public static partial void EnableHooks(void* ptr); + public static partial void EnableHooks(global::Daybreak.API.Interop.GuildWars.HookTarget hookTarget); // GW::Hook::EnterHook [LibraryImport(DllName, EntryPoint = "?EnterHook@Hook@GW@@YAXXZ")] @@ -1285,9 +1300,9 @@ public static partial class Hook public static partial void LeaveHook(); // GW::Hook::RemoveHook - [LibraryImport(DllName, EntryPoint = "?RemoveHook@Hook@GW@@YAXPAX@Z")] + [LibraryImport(DllName, EntryPoint = "?RemoveHook@Hook@GW@@YAXUHookTarget@12@@Z")] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - public static partial void RemoveHook(void* ptr); + public static partial void RemoveHook(global::Daybreak.API.Interop.GuildWars.HookTarget hookTarget); } public static partial class Item @@ -1640,6 +1655,11 @@ public static partial class Map [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] public static partial int GetDistrict(); + // GW::Map::GetDistrictCount + [LibraryImport(DllName, EntryPoint = "?GetDistrictCount@Map@GW@@YAIXZ")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + public static partial uint GetDistrictCount(); + // GW::Map::GetFoesKilled [LibraryImport(DllName, EntryPoint = "?GetFoesKilled@Map@GW@@YAIXZ")] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] @@ -1872,6 +1892,25 @@ public static partial class MultiLineTextLabelFrame public static partial double SetLabel(nint self, ushort* ptr2); } + public static partial class NPCEquipment + { + + // GW::NPCEquipment::GetType + [LibraryImport(DllName, EntryPoint = "?GetType@NPCEquipment@GW@@QAEIXZ")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvThiscall)])] + public static partial void GetType(nint self); + + // GW::NPCEquipment::RedrawEquipmentSlot + [LibraryImport(DllName, EntryPoint = "?RedrawEquipmentSlot@NPCEquipment@GW@@QAE_NI@Z")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvThiscall)])] + public static partial double RedrawEquipmentSlot(nint self, uint value2); + + // GW::NPCEquipment::UndrawEquipmentSlot + [LibraryImport(DllName, EntryPoint = "?UndrawEquipmentSlot@NPCEquipment@GW@@QAE_NI@Z")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvThiscall)])] + public static partial double UndrawEquipmentSlot(nint self, uint value2); + } + public static partial class PartyMgr { @@ -2312,6 +2351,11 @@ public static partial class Render [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] public static partial void FlushCommandQueue(); + // GW::Render::GetBackend + [LibraryImport(DllName, EntryPoint = "?GetBackend@Render@GW@@YA?AW4Backend@12@XZ")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + public static partial global::Daybreak.API.Interop.GWCA.GW.Render.Backend GetBackend(); + // GW::Render::GetDevice | returns TODO: map struct IDirect3DDevice9 // [LibraryImport(DllName, EntryPoint = "?GetDevice@Render@GW@@YAPAUIDirect3DDevice9@@XZ")] // [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] @@ -2322,11 +2366,31 @@ public static partial class Render [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] public static partial float GetFieldOfView(); + // GW::Render::GetFrameCallback + [LibraryImport(DllName, EntryPoint = "?GetFrameCallback@Render@GW@@YAP6AXXZXZ")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + public static partial nint GetFrameCallback(); + // GW::Render::GetFrameLimit [LibraryImport(DllName, EntryPoint = "?GetFrameLimit@Render@GW@@YAIXZ")] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] public static partial uint GetFrameLimit(); + // GW::Render::GetGlesDevice + [LibraryImport(DllName, EntryPoint = "?GetGlesDevice@Render@GW@@YAPAUGlesDevice@12@XZ")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + public static partial global::Daybreak.API.Interop.GuildWars.GlesDevice* GetGlesDevice(); + + // GW::Render::GetGlesRenderCallback + [LibraryImport(DllName, EntryPoint = "?GetGlesRenderCallback@Render@GW@@YAP6AXPAUGlesDevice@12@@ZXZ")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + public static partial nint GetGlesRenderCallback(); + + // GW::Render::GetGlesResetCallback + [LibraryImport(DllName, EntryPoint = "?GetGlesResetCallback@Render@GW@@YAP6AXPAUGlesDevice@12@@ZXZ")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + public static partial nint GetGlesResetCallback(); + // GW::Render::GetGraphicsRendererValue [LibraryImport(DllName, EntryPoint = "?GetGraphicsRendererValue@Render@GW@@YAIW4Metric@12@I@Z")] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] @@ -2337,21 +2401,20 @@ public static partial class Render [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] public static partial int GetIsFullscreen(); - // GW::Render::GetIsInRenderLoop - [LibraryImport(DllName, EntryPoint = "?GetIsInRenderLoop@Render@GW@@YA_NXZ")] - [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - [return: MarshalAs(UnmanagedType.U1)] - public static partial bool GetIsInRenderLoop(); - // GW::Render::GetRenderCallback [LibraryImport(DllName, EntryPoint = "?GetRenderCallback@Render@GW@@YAP6AXPAUIDirect3DDevice9@@@ZXZ")] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] public static partial nint GetRenderCallback(); - // GW::Render::GetTransform - [LibraryImport(DllName, EntryPoint = "?GetTransform@Render@GW@@YAPAUMat4x3f@12@W4Transform@12@@Z")] + // GW::Render::GetRendererMode + [LibraryImport(DllName, EntryPoint = "?GetRendererMode@Render@GW@@YA?AW4RendererMode@12@XZ")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + public static partial global::Daybreak.API.Interop.GWCA.GW.Render.RendererMode GetRendererMode(); + + // GW::Render::GetResetCallback + [LibraryImport(DllName, EntryPoint = "?GetResetCallback@Render@GW@@YAP6AXPAUIDirect3DDevice9@@@ZXZ")] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - public static partial global::Daybreak.API.Interop.GuildWars.Mat4x3f* GetTransform(global::Daybreak.API.Interop.GWCA.GW.Render.Transform transform); + public static partial nint GetResetCallback(); // GW::Render::GetViewportHeight [LibraryImport(DllName, EntryPoint = "?GetViewportHeight@Render@GW@@YAIXZ")] @@ -2374,12 +2437,27 @@ public static partial class Render [return: MarshalAs(UnmanagedType.U1)] public static partial bool SetFog([MarshalAs(UnmanagedType.U1)] bool flag); + // GW::Render::SetFrameCallback + [LibraryImport(DllName, EntryPoint = "?SetFrameCallback@Render@GW@@YAXP6AXXZ@Z")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + public static partial void SetFrameCallback(nint callback); + // GW::Render::SetFrameLimit [LibraryImport(DllName, EntryPoint = "?SetFrameLimit@Render@GW@@YA_NI@Z")] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] [return: MarshalAs(UnmanagedType.U1)] public static partial bool SetFrameLimit(uint value); + // GW::Render::SetGlesRenderCallback + [LibraryImport(DllName, EntryPoint = "?SetGlesRenderCallback@Render@GW@@YAXP6AXPAUGlesDevice@12@@Z@Z")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + public static partial void SetGlesRenderCallback(nint callback); + + // GW::Render::SetGlesResetCallback + [LibraryImport(DllName, EntryPoint = "?SetGlesResetCallback@Render@GW@@YAXP6AXPAUGlesDevice@12@@Z@Z")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + public static partial void SetGlesResetCallback(nint callback); + // GW::Render::SetGraphicsRendererValue [LibraryImport(DllName, EntryPoint = "?SetGraphicsRendererValue@Render@GW@@YA_NW4Metric@12@II@Z")] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] @@ -2415,6 +2493,11 @@ public static partial class Scanner [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] public static partial uint FindInRange(byte* ptr1, nint ptr2, int value3, uint value4, uint value5); + // GW::Scanner::FindNth + [LibraryImport(DllName, EntryPoint = "?FindNth@Scanner@GW@@YAIPBD0IHW4ScannerSection@2@@Z")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + public static partial uint FindNth(byte* ptr1, nint ptr2, uint value3, int value4, global::Daybreak.API.Interop.GWCA.GW.ScannerSection scannerSection5); + // GW::Scanner::FindNthUseOfString [LibraryImport(DllName, EntryPoint = "?FindNthUseOfString@Scanner@GW@@YAIPBDIHW4ScannerSection@2@@Z")] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] @@ -2476,9 +2559,9 @@ public static partial class ScrollableFrame { // GW::ScrollableFrame::AddItem - [LibraryImport(DllName, EntryPoint = "?AddItem@ScrollableFrame@GW@@QAE_NIIP6AXPAUInteractionMessage@UI@2@PAX1@Z@Z")] + [LibraryImport(DllName, EntryPoint = "?AddItem@ScrollableFrame@GW@@QAEIIIP6AXPAUInteractionMessage@UI@2@PAX1@Z@Z")] [UnmanagedCallConv(CallConvs = [typeof(CallConvThiscall)])] - public static partial double AddItem(nint self, uint value2, uint value3, nint callback4); + public static partial uint AddItem(nint self, uint value2, nint callback3); // GW::ScrollableFrame::ClearItems [LibraryImport(DllName, EntryPoint = "?ClearItems@ScrollableFrame@GW@@QAE_NXZ")] @@ -2603,10 +2686,10 @@ public static partial class SkillbarMgr [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] public static partial global::Daybreak.API.Interop.GuildWars.Skill* GetSkillConstantData(global::Daybreak.API.Interop.GWCA.GW.Constants.SkillID skillID); - // GW::SkillbarMgr::GetSkillConstantDataCount - [LibraryImport(DllName, EntryPoint = "?GetSkillConstantDataCount@SkillbarMgr@GW@@YAIXZ")] + // GW::SkillbarMgr::GetSkillCount + [LibraryImport(DllName, EntryPoint = "?GetSkillCount@SkillbarMgr@GW@@YAIXZ")] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - public static partial uint GetSkillConstantDataCount(); + public static partial uint GetSkillCount(); // GW::SkillbarMgr::GetSkillSlot [LibraryImport(DllName, EntryPoint = "?GetSkillSlot@SkillbarMgr@GW@@YAHW4SkillID@Constants@2@@Z")] @@ -2914,6 +2997,12 @@ public static partial class Trade public static partial class UI { + // GW::UI::AddFrameCallback + [LibraryImport(DllName, EntryPoint = "?AddFrameCallback@UI@GW@@YA_NPAUFrame@12@P6AXPAUInteractionMessage@12@PAX2@Z2@Z")] + [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] + [return: MarshalAs(UnmanagedType.U1)] + public static partial bool AddFrameCallback(global::Daybreak.API.Interop.Frame* frame1, nint callback2, nint ptr3); + // GW::UI::AddFrameUIInteractionCallback [LibraryImport(DllName, EntryPoint = "?AddFrameUIInteractionCallback@UI@GW@@YA_NPAUFrame@12@P6AXPAUInteractionMessage@12@PAX2@Z2@Z")] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] @@ -3213,9 +3302,9 @@ public static partial class UI public static partial bool SetCommandLinePref(ushort* ptr1, ushort* ptr2); // GW::UI::SetFrameBounds - [LibraryImport(DllName, EntryPoint = "?SetFrameBounds@UI@GW@@YAXPAUFrame@12@IPAM1@Z")] + [LibraryImport(DllName, EntryPoint = "?SetFrameBounds@UI@GW@@YAXPAUFrame@12@W4FrameLayoutMode@12@PAM2@Z")] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - public static partial void SetFrameBounds(global::Daybreak.API.Interop.Frame* frame1, uint value2, float* ptr3, nint ptr4); + public static partial void SetFrameBounds(global::Daybreak.API.Interop.Frame* frame1, global::Daybreak.API.Interop.GWCA.GW.UI.FrameLayoutMode frameLayoutMode2, float* ptr3, nint ptr4); // GW::UI::SetFrameDisabled [LibraryImport(DllName, EntryPoint = "?SetFrameDisabled@UI@GW@@YA_NPAUFrame@12@_N@Z")] @@ -3230,9 +3319,9 @@ public static partial class UI public static partial bool SetFrameMargins(global::Daybreak.API.Interop.Frame* frame1, uint value2, float* ptr3, nint ptr4, uint value5); // GW::UI::SetFramePosition - [LibraryImport(DllName, EntryPoint = "?SetFramePosition@UI@GW@@YAXPAUFrame@12@IPAM@Z")] + [LibraryImport(DllName, EntryPoint = "?SetFramePosition@UI@GW@@YAXPAUFrame@12@W4FrameLayoutMode@12@PAM@Z")] [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])] - public static partial void SetFramePosition(global::Daybreak.API.Interop.Frame* frame1, uint value2, float* ptr3); + public static partial void SetFramePosition(global::Daybreak.API.Interop.Frame* frame1, global::Daybreak.API.Interop.GWCA.GW.UI.FrameLayoutMode frameLayoutMode2, float* ptr3); // GW::UI::SetFrameTitle [LibraryImport(DllName, EntryPoint = "?SetFrameTitle@UI@GW@@YA_NPAUFrame@12@PB_W@Z")] @@ -3474,6 +3563,20 @@ public enum HeroBehavior : uint AvoidCombat, } + public enum NameTagFlags : uint + { + NameTagFlags_Picked = 0x8, + NameTagFlags_Highlighted = 0x10, + NameTagFlags_InRange = 0x20, + NameTagFlags_EvaluatedTarget = 0x80, + NameTagFlags_ManualTarget = 0x100, + NameTagFlags_Suppressed = 0x200, + NameTagFlags_PassesFilter = 0x400, + NameTagFlags_NotOwnedByPlayer = 0x800, + NameTagFlags_PassesTransientFilter = 0x1000, + NameTagFlags_Disabled = 0x20000, + } + public enum ObserverMatchType : uint { SpecialEvent, @@ -8182,7 +8285,6 @@ public enum SkillID : uint Heroic_Refrain, Reforged_Mode = 0xD6A, Dhuums_Covenant_Broken, - Count = 0xD6c, } public enum SkillType : int @@ -8811,26 +8913,26 @@ public static partial class Minipet_ public static partial class SummoningStone { - internal const int ImperialBarrage = 9045; - internal const int ImperialCripplingSlash = 9043; - internal const int ImperialQuiveringBlade = 9046; - internal const int ImperialTripleChop = 9044; - internal const int TenguAngchuElementalist = 9051; - internal const int TenguAuraOftheLich = 9061; - internal const int TenguBroadHeadArrow = 9048; - internal const int TenguDefiantWasXinrae = 9062; - internal const int TenguFeveredDreams = 9052; - internal const int TenguGlassArrows = 9056; - internal const int TenguHundredBlades = 9047; - internal const int TenguLifeSheath = 9050; - internal const int TenguPalmStrike = 9049; - internal const int TenguPanic = 9060; - internal const int TenguPeaceandHarmony = 9058; - internal const int TenguPreservation = 9054; - internal const int TenguPrimalRage = 9055; - internal const int TenguSandstorm = 9059; - internal const int TenguSpitefulSpirit = 9053; - internal const int TenguWayOftheAssassin = 9057; + internal const int ImperialBarrage = 9270; + internal const int ImperialCripplingSlash = 9268; + internal const int ImperialQuiveringBlade = 9271; + internal const int ImperialTripleChop = 9269; + internal const int TenguAngchuElementalist = 9276; + internal const int TenguAuraOftheLich = 9286; + internal const int TenguBroadHeadArrow = 9273; + internal const int TenguDefiantWasXinrae = 9287; + internal const int TenguFeveredDreams = 9277; + internal const int TenguGlassArrows = 9281; + internal const int TenguHundredBlades = 9272; + internal const int TenguLifeSheath = 9275; + internal const int TenguPalmStrike = 9274; + internal const int TenguPanic = 9285; + internal const int TenguPeaceandHarmony = 9283; + internal const int TenguPreservation = 9279; + internal const int TenguPrimalRage = 9280; + internal const int TenguSandstorm = 9284; + internal const int TenguSpitefulSpirit = 9278; + internal const int TenguWayOftheAssassin = 9282; } } } @@ -8885,11 +8987,50 @@ public static partial class EventMgr public enum EventID : int { - kRecvPing = 0x8, - kSendFriendState = 0x26, - kRecvFriendState = 0x2c, + kAppActivated = 0x0, // WM_ACTIVATEAPP; packet is one dword, non-zero when activated + kFrameTick = 0x1, // once per frame from the pump, packet is the elapsed milliseconds + kRenderFinished = 0x2, // once per frame after the render, packet is one dword + kCharTyped = 0x3, // WM_CHAR: {character, repeat, modifier keys} + kCursorVisibility = 0x5, // packet is one dword, non-zero to show the cursor + kShutdown = 0x6, // posting this latches the event queue closed, so nothing dispatches after it + kScreenSizeChanged = 0x7, // {new width, new height, old width, old height}, raised inside the queue drain + kDriverError = 0x8, // the game's own handler logs "Driver internal error encountered." and quits + kRecvPing = kDriverError, // legacy GWCA name for 0x8; the game does not use this id for pings + kDpiChanged = 0xa, // WM_DPICHANGED: {x dpi, y dpi} + kGamepadAttached = 0xb, // the four below come from the same controller poll in EvtOs.cpp + kGamepadState = 0xc, // one dword + kGamepadAxis = 0xd, // four dwords + kGamepadButtonDown = 0xe, // {button, state} + kGamepadButtonUp = 0xf, // {button, state} + kCharTypedInjected = 0x13, // same shape as kCharTyped, from the game's own WM_APP+3 injection + kKeyDown = 0x1a, // {key, repeat, modifier keys}; the engine records the key as held here + kKeyUp = 0x1b, // same shape; the engine clears the held bit here + kFocusLost = 0x1c, // WM_KILLFOCUS, no packet + kMouseMoveRelative = 0x1d, // {button, 0, x, y, button mask, modifier keys} while the mouse is captured + kMouseButtonDown = 0x1e, // same shape as kMouseMoveRelative + kMouseLeave = 0x1f, // WM_MOUSELEAVE, no packet + kMouseMove = 0x20, // same shape as kMouseMoveRelative, only sent when the position changed + kMouseButtonUp = 0x21, // same shape; also synthesised for every held button when capture is lost + kMouseWheel = 0x22, // same shape, with the wheel delta in place of the button + kWindowMoved = 0x23, // WM_MOVE: {x, y} + kFriend = 0x24, + kService = 0x25, // same packet shape as kFriend; FrApi forwards it as UI message 0x50 + kServiceAlt = 0x26, // same again, forwarded as UI message 0x51 + kFocusGained = 0x27, // WM_SETFOCUS, no packet + kWindowResized = 0x28, // WM_SIZE: {width, height} + kTouchDown = 0x2c, // the three touch ids carry {index, 0, x, y, touch mask} + kTouchMove = 0x2d, + kTouchUp = 0x2e, // also synthesised for every held touch when the sequence is cancelled + kReserved = 0x2a, kNone = 0xffff, } + + public enum FriendEventType : int + { + kStatusChanged = 0x26, + kLocationChanged = 0x28, + kFriendAddedOrRemoved = 0x2c, + } } public static partial class Merchant @@ -8920,6 +9061,13 @@ public enum TransactionType : uint public static partial class Render { + public enum Backend : uint + { + Unknown = 0, + D3D9, + GLES3, + } + public enum Metric : uint { Metric0, @@ -8951,11 +9099,11 @@ public enum Metric : uint Count, } - public enum Transform : int + public enum RendererMode : uint { - TRANSFORM_PROJECTION_MATRIX = 0, - TRANSFORM_MODEL_MATRIX = 1, - TRANSFORM_COUNT = 5, + Windowed = 0, + WindowedBorderless = 1, + WindowedFullscreen = 2, } } @@ -9258,6 +9406,20 @@ public enum FlagPreference : uint Count, } + public enum FrameLayoutMode : uint + { + FrameLayoutMode_None = 0, + FrameLayoutMode_AnchorBottom = 0x1, // vertical: anchor to the rect's bottom edge + FrameLayoutMode_Center = 0x2, // required alongside centered placement on either axis (asserts otherwise) + FrameLayoutMode_AnchorLeft = 0x4, // horizontal: anchor to the rect's left edge + FrameLayoutMode_AnchorRight = 0x8, // horizontal: anchor to the rect's right edge + FrameLayoutMode_AnchorTop = 0x10, // vertical: anchor to the rect's top edge + FrameLayoutMode_StretchWidth = 0x20, // horizontal: fill the rect's full width (also behaves as a left anchor) + FrameLayoutMode_StretchHeight = 0x40, // vertical: fill the rect's full height (also behaves as a bottom anchor) + FrameLayoutMode_AnchorHorizontalMargin = 0x80, // gate: trim the resolved rect inward on the AnchorLeft/AnchorRight edge(s) + FrameLayoutMode_AnchorVerticalMargin = 0x100, // gate: trim the resolved rect inward on the AnchorTop/AnchorBottom edge(s) + } + public enum NumberCommandLineParameter : uint { Unk1, @@ -9857,47 +10019,48 @@ public enum UIMessage : uint kInventoryRelated2, // 0x100001aa, added to GW 2026-02-26 kInventoryRelated3, // 0x100001ab, added to GW 2026-02-26 kInventoryRelated4, // 0x100001ac, added to GW 2026-04-28 - kEquipItem, // 0x100001ad, wparam = { item_id, agent_id } - kMoveItem, // 0x100001ae, wparam = { item_id, to_bag, to_slot, bool prompt } - kItemRelated_1, // 0x100001af - kItemTooltip, // 0x100001b0 - kItemRelated_3, // 0x100001b1, added to GW 2026-02-26 - kItemRelated_4, // 0x100001b2, added to GW 2026-02-26 - kItemRelated_5, // 0x100001b3, added to GW 2026-04-28 - kInitiateTrade, // 0x100001b4 - kMessage_0x100001a7, // 0x100001b5 - kMessage_0x100001a8, // 0x100001b6 - kMessage_0x100001a9, // 0x100001b7 - kMessage_0x100001aa, // 0x100001b8 - kPartySearchWindowDestroyed, // 0x100001b9 - kMessage_0x100001ac, // 0x100001ba - kPartySearchWindowCreated, // 0x100001bb - kMessage_0x100001ae, // 0x100001bc - kMessage_0x100001af, // 0x100001bd - kMessage_0x100001b0, // 0x100001be - kMessage_0x100001b1, // 0x100001bf - kMessage_0x100001b2, // 0x100001c0 - kMessage_0x100001b3, // 0x100001c1 - kMessage_0x100001b4, // 0x100001c2 - kMessage_0x100001b5, // 0x100001c3 - kInventoryAgentChanged, // 0x100001c4, Triggered when inventory needs updating due to agent change; no args - kInventoryRelated_1, // 0x100001c5 - kInventoryRelated_2, // 0x100001c6 - kMissionStatusRelated, // 0x100001c7 - kUnused_1c2, // 0x100001c8 - kCollapseExpandSkillListSection, // 0x100001c9 - kPromptLoadTemplate, // 0x100001ca - kOpenTemplateManager, // 0x100001cb - kPromptSaveTemplate, // 0x100001cc - kOpenTemplate, // 0x100001cd, wparam = GW::UI::ChatTemplate* - kTemplateRelated_3, // 0x100001ce - kTemplateRelated_4, // 0x100001cf + kInventoryRelated4_1, // 0x100001ad, added to GW 2026-08-07 + kEquipItem, // 0x100001ae, wparam = { item_id, agent_id } + kMoveItem, // 0x100001af, wparam = { item_id, to_bag, to_slot, bool prompt } + kItemRelated_1, // 0x100001b0 + kItemTooltip, // 0x100001b1 + kItemRelated_3, // 0x100001b2, added to GW 2026-02-26 + kItemRelated_4, // 0x100001b3, added to GW 2026-02-26 + kItemRelated_5, // 0x100001b4, added to GW 2026-04-28 + kInitiateTrade, // 0x100001b5 + kMessage_0x100001a7, // 0x100001b6 + kMessage_0x100001a8, // 0x100001b7 + kMessage_0x100001a9, // 0x100001b8 + kMessage_0x100001aa, // 0x100001b9 + kPartySearchWindowDestroyed, // 0x100001ba + kMessage_0x100001ac, // 0x100001bb + kPartySearchWindowCreated, // 0x100001bc + kMessage_0x100001ae, // 0x100001bd + kMessage_0x100001af, // 0x100001be + kMessage_0x100001b0, // 0x100001bf + kMessage_0x100001b1, // 0x100001c0 + kMessage_0x100001b2, // 0x100001c1 + kMessage_0x100001b3, // 0x100001c2 + kMessage_0x100001b4, // 0x100001c3 + kMessage_0x100001b5, // 0x100001c4 + kInventoryAgentChanged, // 0x100001c5, Triggered when inventory needs updating due to agent change; no args + kInventoryRelated_1, // 0x100001c6 + kInventoryRelated_2, // 0x100001c7 + kMissionStatusRelated, // 0x100001c8 + kUnused_1c2, // 0x100001c9 + kCollapseExpandSkillListSection, // 0x100001ca + kPromptLoadTemplate, // 0x100001cb + kOpenTemplateManager, // 0x100001cc + kPromptSaveTemplate, // 0x100001cd + kOpenTemplate, // 0x100001ce, wparam = GW::UI::ChatTemplate* + kTemplateRelated_3, // 0x100001cf + kTemplateRelated_4, // 0x100001d0 kSendLoadSkillTemplate = 0x30000000 | 0x3, // 0x30000003, wparam = SkillbarMgr::SkillTemplate* kSendPingWeaponSet = 0x30000000 | 0x4, // 0x30000004, wparam = UIPacket::kSendPingWeaponSet* kSendMoveItem = 0x30000000 | 0x5, // 0x30000005, wparam = UIPacket::kSendMoveItem* kSendMerchantRequestQuote = 0x30000000 | 0x6, // 0x30000006, wparam = UIPacket::kSendMerchantRequestQuote* kSendMerchantTransactItem = 0x30000000 | 0x7, // 0x30000007, wparam = UIPacket::kSendMerchantTransactItem* - kSendUseItem = 0x30000000 | 0x8, // 0x30000008, wparam = UIPacket::kSendUseItem* + kSendUseItem = 0x30000000 | 0x8, // 0x30000008, wparam = uint32_t item_id kSendSetActiveQuest = 0x30000000 | 0x9, // 0x30000009, wparam = uint32_t quest_id kSendAbandonQuest = 0x30000000 | 0xA, // 0x3000000a, wparam = uint32_t quest_id kSendChangeTarget = 0x30000000 | 0xB, // 0x3000000b, wparam = UIPacket::kSendChangeTarget* // e.g. tell the gw client to focus on a different target @@ -10227,6 +10390,20 @@ public enum HeroBehavior : uint AvoidCombat, } + public enum NameTagFlags : uint + { + NameTagFlags_Picked = 0x8, + NameTagFlags_Highlighted = 0x10, + NameTagFlags_InRange = 0x20, + NameTagFlags_EvaluatedTarget = 0x80, + NameTagFlags_ManualTarget = 0x100, + NameTagFlags_Suppressed = 0x200, + NameTagFlags_PassesFilter = 0x400, + NameTagFlags_NotOwnedByPlayer = 0x800, + NameTagFlags_PassesTransientFilter = 0x1000, + NameTagFlags_Disabled = 0x20000, + } + public enum ObserverMatchType : uint { SpecialEvent, @@ -14885,7 +15062,6 @@ public enum SkillID : uint Heroic_Refrain, Reforged_Mode = 0xD6A, Dhuums_Covenant_Broken, - Count = 0xD6c, } public enum SkillType : int @@ -15345,6 +15521,20 @@ public enum FlagPreference : uint Count, } + public enum FrameLayoutMode : uint + { + FrameLayoutMode_None = 0, + FrameLayoutMode_AnchorBottom = 0x1, + FrameLayoutMode_Center = 0x2, + FrameLayoutMode_AnchorLeft = 0x4, + FrameLayoutMode_AnchorRight = 0x8, + FrameLayoutMode_AnchorTop = 0x10, + FrameLayoutMode_StretchWidth = 0x20, + FrameLayoutMode_StretchHeight = 0x40, + FrameLayoutMode_AnchorHorizontalMargin = 0x80, + FrameLayoutMode_AnchorVerticalMargin = 0x100, + } + public enum NumberCommandLineParameter : uint { Unk1, @@ -15944,6 +16134,7 @@ public enum UIMessage : uint kInventoryRelated2, kInventoryRelated3, kInventoryRelated4, + kInventoryRelated4_1, kEquipItem, kMoveItem, kItemRelated_1, @@ -16078,12 +16269,58 @@ public enum ActionState : uint public enum EventID : int { - kRecvPing = 0x8, - kSendFriendState = 0x26, - kRecvFriendState = 0x2c, + kAppActivated = 0x0, + kFrameTick = 0x1, + kRenderFinished = 0x2, + kCharTyped = 0x3, + kCursorVisibility = 0x5, + kShutdown = 0x6, + kScreenSizeChanged = 0x7, + kDriverError = 0x8, + kRecvPing = kDriverError, + kDpiChanged = 0xa, + kGamepadAttached = 0xb, + kGamepadState = 0xc, + kGamepadAxis = 0xd, + kGamepadButtonDown = 0xe, + kGamepadButtonUp = 0xf, + kCharTypedInjected = 0x13, + kKeyDown = 0x1a, + kKeyUp = 0x1b, + kFocusLost = 0x1c, + kMouseMoveRelative = 0x1d, + kMouseButtonDown = 0x1e, + kMouseLeave = 0x1f, + kMouseMove = 0x20, + kMouseButtonUp = 0x21, + kMouseWheel = 0x22, + kWindowMoved = 0x23, + kFriend = 0x24, + kService = 0x25, + kServiceAlt = 0x26, + kFocusGained = 0x27, + kWindowResized = 0x28, + kTouchDown = 0x2c, + kTouchMove = 0x2d, + kTouchUp = 0x2e, + kReserved = 0x2a, kNone = 0xffff, } + public enum FriendEventType : int + { + kStatusChanged = 0x26, + kLocationChanged = 0x28, + kFriendAddedOrRemoved = 0x2c, + } + + public enum Backend : uint + { + Unknown = 0, + D3D9, + GLES3, + } + public enum Metric : uint { Metric0, @@ -16115,11 +16352,11 @@ public enum Metric : uint Count, } - public enum Transform : int + public enum RendererMode : uint { - TRANSFORM_PROJECTION_MATRIX = 0, - TRANSFORM_MODEL_MATRIX = 1, - TRANSFORM_COUNT = 5, + Windowed = 0, + WindowedBorderless = 1, + WindowedFullscreen = 2, } [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Explicit, Pack = 1, Size = 0x138)] @@ -16215,7 +16452,7 @@ public unsafe struct Agent [global::System.Runtime.InteropServices.FieldOffset(0x0054)] public float RotationSin; // sine of rotation [global::System.Runtime.InteropServices.FieldOffset(0x0058)] - public uint NameProperties; // Bitmap basically telling what the agent is + public global::Daybreak.API.Interop.GWCA.GW.NameTagFlags NameProperties; // Bitmap basically telling what the agent is [global::System.Runtime.InteropServices.FieldOffset(0x005C)] public uint Ground; [global::System.Runtime.InteropServices.FieldOffset(0x0060)] @@ -17665,9 +17902,9 @@ public unsafe struct MapContext [global::System.Runtime.InteropServices.FieldOffset(0x0080)] public uint H0080; [global::System.Runtime.InteropServices.FieldOffset(0x0084)] - public nint Terrain; + public nint Terrain; // relationship to TerrainTexContext is unconfirmed [global::System.Runtime.InteropServices.FieldOffset(0x0088)] - public uint H0088; + public nint Collision; // "Collision" map chunk (Engine\Map\Collision\CollApi.cpp) [global::System.Runtime.InteropServices.FieldOffset(0x008C)] public global::Daybreak.API.Interop.GWCA.GW.Constants.MapID MapId; [global::System.Runtime.InteropServices.FieldOffset(0x0090)] @@ -17689,27 +17926,15 @@ public unsafe struct MapContext [global::System.Runtime.InteropServices.FieldOffset(0x00B0)] public uint H00B0; [global::System.Runtime.InteropServices.FieldOffset(0x00B4)] - public uint H00B4; - [global::System.Runtime.InteropServices.FieldOffset(0x00B8)] - public uint H00B8; - [global::System.Runtime.InteropServices.FieldOffset(0x00BC)] - public uint H00BC; + public global::Daybreak.API.Interop.GuildWars.Vec3fStruct ViewEye; // cached by GmWorldUpdateView [global::System.Runtime.InteropServices.FieldOffset(0x00C0)] - public uint H00C0; - [global::System.Runtime.InteropServices.FieldOffset(0x00C4)] - public uint H00C4; - [global::System.Runtime.InteropServices.FieldOffset(0x00C8)] - public uint H00C8; + public global::Daybreak.API.Interop.GuildWars.Vec3fStruct ViewTarget; [global::System.Runtime.InteropServices.FieldOffset(0x00CC)] - public uint H00CC; - [global::System.Runtime.InteropServices.FieldOffset(0x00D0)] - public uint H00D0; - [global::System.Runtime.InteropServices.FieldOffset(0x00D4)] - public uint H00D4; + public global::Daybreak.API.Interop.GuildWars.Vec3fStruct ViewUp; [global::System.Runtime.InteropServices.FieldOffset(0x00D8)] public uint H00D8; [global::System.Runtime.InteropServices.FieldOffset(0x00DC)] - public uint H00DC; + public uint ViewFlags; // bit 0: view has been updated this frame [global::System.Runtime.InteropServices.FieldOffset(0x00E0)] public uint H00E0; [global::System.Runtime.InteropServices.FieldOffset(0x00E4)] @@ -17717,7 +17942,7 @@ public unsafe struct MapContext [global::System.Runtime.InteropServices.FieldOffset(0x00E8)] public uint H00E8; [global::System.Runtime.InteropServices.FieldOffset(0x00EC)] - public uint H00EC; + public global::Daybreak.API.Interop.GuildWars.MapLightContext* Lights; // "Light" map chunk [global::System.Runtime.InteropServices.FieldOffset(0x00F0)] public uint H00F0; [global::System.Runtime.InteropServices.FieldOffset(0x00F4)] @@ -17731,7 +17956,7 @@ public unsafe struct MapContext [global::System.Runtime.InteropServices.FieldOffset(0x0104)] public uint H0104; [global::System.Runtime.InteropServices.FieldOffset(0x0108)] - public uint H0108; + public uint Flags; // bit 1: map has water [global::System.Runtime.InteropServices.FieldOffset(0x010C)] public uint H010C; [global::System.Runtime.InteropServices.FieldOffset(0x0110)] @@ -17743,19 +17968,49 @@ public unsafe struct MapContext [global::System.Runtime.InteropServices.FieldOffset(0x011C)] public uint H011C; [global::System.Runtime.InteropServices.FieldOffset(0x0120)] - public uint H0120; + public nint Shore; // "Shore" map chunk, only loaded when flags bit 1 is set [global::System.Runtime.InteropServices.FieldOffset(0x0124)] public uint H0124; [global::System.Runtime.InteropServices.FieldOffset(0x0128)] public uint H0128; [global::System.Runtime.InteropServices.FieldOffset(0x012C)] - public uint H012C; + public global::Daybreak.API.Interop.GuildWars.MapWaterContext* Water; [global::System.Runtime.InteropServices.FieldOffset(0x0130)] public nint Zones; [global::System.Runtime.InteropServices.FieldOffset(0x0134)] public uint H0134; } + [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Explicit, Pack = 1, Size = 0x20)] + public unsafe struct MapLightContext + { + [global::System.Runtime.InteropServices.FieldOffset(0x0000)] + public global::Daybreak.API.Interop.GuildWars.GuildWarsArray Descriptors; + [global::System.Runtime.InteropServices.FieldOffset(0x0010)] + public global::Daybreak.API.Interop.GuildWars.GuildWarsArray Lights; // HGrLight handles, parallel to descriptors (same count) + } + + [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Explicit, Pack = 1, Size = 0x1C)] + public unsafe struct MapLightDescriptor + { + [global::System.Runtime.InteropServices.FieldOffset(0x0000)] + public global::Daybreak.API.Interop.GuildWars.Vec3fStruct Position; + [global::System.Runtime.InteropServices.FieldOffset(0x000C)] + public byte Red; + [global::System.Runtime.InteropServices.FieldOffset(0x000D)] + public byte Green; + [global::System.Runtime.InteropServices.FieldOffset(0x000E)] + public byte Blue; + [global::System.Runtime.InteropServices.FieldOffset(0x000F)] + public byte H000F; + [global::System.Runtime.InteropServices.FieldOffset(0x0010)] + public float Intensity; // colour bytes are premultiplied by intensity / 255 when the light is built + [global::System.Runtime.InteropServices.FieldOffset(0x0014)] + public float InnerRange; + [global::System.Runtime.InteropServices.FieldOffset(0x0018)] + public float OuterRange; + } + [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Explicit, Pack = 1, Size = 0x90)] public unsafe struct MapProp { @@ -17777,10 +18032,14 @@ public unsafe struct MapProp public float RotationAngle; [global::System.Runtime.InteropServices.FieldOffset(0x003C)] public float RotationCos; - [global::System.Runtime.InteropServices.FieldOffset(0x003C)] - public float RotationSin; [global::System.Runtime.InteropServices.FieldOffset(0x0040)] - public fixed uint H0034[5]; + public float RotationSin; + [global::System.Runtime.InteropServices.FieldOffset(0x0044)] + public fixed uint H0044[3]; + [global::System.Runtime.InteropServices.FieldOffset(0x0050)] + public float Scale; + [global::System.Runtime.InteropServices.FieldOffset(0x0054)] + public global::Daybreak.API.Interop.GuildWars.PropModelInfo* ModelInfo; [global::System.Runtime.InteropServices.FieldOffset(0x0058)] public global::Daybreak.API.Interop.GuildWars.RecObject* InteractiveModel; [global::System.Runtime.InteropServices.FieldOffset(0x005C)] @@ -17789,8 +18048,8 @@ public unsafe struct MapProp public uint AppearanceBitmap; // Modified when animation changes [global::System.Runtime.InteropServices.FieldOffset(0x0070)] public uint AnimationBits; - [global::System.Runtime.InteropServices.FieldOffset(0x0064)] - public fixed uint H0064[5]; + [global::System.Runtime.InteropServices.FieldOffset(0x0074)] + public fixed uint H0074[5]; [global::System.Runtime.InteropServices.FieldOffset(0x0088)] public global::Daybreak.API.Interop.GuildWars.PropByType* PropObjectInfo; [global::System.Runtime.InteropServices.FieldOffset(0x008C)] @@ -17805,6 +18064,27 @@ public unsafe struct MapTypeInstanceInfo public global::Daybreak.API.Interop.GWCA.GW.RegionType MapRegionType; } + [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Explicit, Pack = 1)] + public unsafe struct MapWaterContext + { + [global::System.Runtime.InteropServices.FieldOffset(0x0000)] + public fixed uint H0000[43]; + [global::System.Runtime.InteropServices.FieldOffset(0x00AC)] + public uint SceneProgram; // the single handle water contributes to the scene program list + [global::System.Runtime.InteropServices.FieldOffset(0x00B0)] + public fixed uint H00B0[12]; + [global::System.Runtime.InteropServices.FieldOffset(0x00E0)] + public fixed uint ShaderPrograms[2]; // two of the four per-map shader programs, chosen by quality + [global::System.Runtime.InteropServices.FieldOffset(0x00E8)] + public uint H00E8; + [global::System.Runtime.InteropServices.FieldOffset(0x00EC)] + public float PlaneZ; // world height of the water plane + [global::System.Runtime.InteropServices.FieldOffset(0x00F0)] + public fixed uint H00F0[42]; + [global::System.Runtime.InteropServices.FieldOffset(0x0198)] + public fixed uint ShaderPrograms2[2]; // the other two quality variants + } + [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)] public unsafe struct Mat4x3f { @@ -18401,13 +18681,11 @@ public unsafe struct PropModelInfo [global::System.Runtime.InteropServices.FieldOffset(0x0000)] public uint H0000; [global::System.Runtime.InteropServices.FieldOffset(0x0004)] - public uint H0004; + public nint ModelFileName; // hash-encoded; FileHashToFileId() turns it into a file id [global::System.Runtime.InteropServices.FieldOffset(0x0008)] - public uint H0008; + public float BoundingRadius; // model space; scale by MapProp::scale for world units [global::System.Runtime.InteropServices.FieldOffset(0x000C)] - public uint H000C; - [global::System.Runtime.InteropServices.FieldOffset(0x0010)] - public uint H0010; + public fixed float BoundsZOffsets[2]; [global::System.Runtime.InteropServices.FieldOffset(0x0014)] public uint H0014; } @@ -18696,6 +18974,45 @@ public unsafe struct TagInfo public ushort Level; } + [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Explicit, Pack = 1, Size = 0xC)] + public unsafe struct TerrainShadowRecord + { + [global::System.Runtime.InteropServices.FieldOffset(0x0000)] + public nint CompressedStream; // layer 1, entropy coded, decoded per tile + [global::System.Runtime.InteropServices.FieldOffset(0x0004)] + public nint CompressedStreamEnd; + [global::System.Runtime.InteropServices.FieldOffset(0x0008)] + public nint BlockMask; // layer 2, the map's own data - not scratch + } + + [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Explicit, Pack = 1)] + public unsafe struct TerrainTexTile + { + [global::System.Runtime.InteropServices.FieldOffset(0x0000)] + public fixed uint H0000[3]; + [global::System.Runtime.InteropServices.FieldOffset(0x000C)] + public uint TileX; + [global::System.Runtime.InteropServices.FieldOffset(0x0010)] + public uint TileY; + [global::System.Runtime.InteropServices.FieldOffset(0x0014)] + public uint State; // set to 2 once the tile's shadow layer has been decoded + [global::System.Runtime.InteropServices.FieldOffset(0x0018)] + public uint H0018; // zeroed alongside the state above + } + + [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Explicit, Pack = 1)] + public unsafe struct TerrainTexture + { + [global::System.Runtime.InteropServices.FieldOffset(0x0000)] + public fixed uint H0000[39]; + [global::System.Runtime.InteropServices.FieldOffset(0x009C)] + public uint StreamFlags; // bit 0x800: decompress + upload still pending + [global::System.Runtime.InteropServices.FieldOffset(0x00A0)] + public fixed uint H00A0[55]; + [global::System.Runtime.InteropServices.FieldOffset(0x017C)] + public global::Daybreak.API.Interop.GuildWars.TerrainTexTile* Tile; // tagged pointer: null, or bit 0 set, means no tile + } + [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Explicit, Pack = 1)] public unsafe struct TextCache { @@ -19182,13 +19499,13 @@ public unsafe struct AgentNameTagInfo [global::System.Runtime.InteropServices.FieldOffset(0x0000)] public uint AgentId; [global::System.Runtime.InteropServices.FieldOffset(0x0004)] - public uint H0002; + public uint H0004; [global::System.Runtime.InteropServices.FieldOffset(0x0008)] - public uint H0003; + public uint H0008; [global::System.Runtime.InteropServices.FieldOffset(0x000C)] public nint NameEnc; [global::System.Runtime.InteropServices.FieldOffset(0x0010)] - public byte H0010; + public byte Highlight; [global::System.Runtime.InteropServices.FieldOffset(0x0011)] public byte H0012; [global::System.Runtime.InteropServices.FieldOffset(0x0012)] @@ -19209,6 +19526,10 @@ public unsafe struct AgentNameTagInfo public byte H001F; [global::System.Runtime.InteropServices.FieldOffset(0x0020)] public nint ExtraInfoEnc; // Title etc + [global::System.Runtime.InteropServices.FieldOffset(0x0024)] + public uint ExtraInfoColor; // ARGB + [global::System.Runtime.InteropServices.FieldOffset(0x0028)] + public uint ExtraInfoAttributes; // bold/size etc } [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)] @@ -19533,10 +19854,10 @@ public unsafe struct kLogout [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)] public unsafe struct kMeasureContent { - public float MaxWidth; // Maximum width constraint - public float MaxHeight; // Maximum height constraint - public float* SizeOutput; // Pointer to output buffer for calculated size - public uint Flags; // Layout flags (similar to the 0x100 flag we saw) + public float MaxWidth; // Available width, after the frame's own margin/padding is already subtracted + public float MaxHeight; // Available height, after the frame's own margin/padding is already subtracted + public float* SizeOutput; // Points at a 2-float [width, height] buffer the handler must fill + public uint Flags; // Not confirmed meaningful - see comment above } [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)] @@ -19750,13 +20071,6 @@ public unsafe struct kSendPingWeaponSet public uint OffhandItemId; } - [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)] - public unsafe struct kSendUseItem - { - public uint ItemId; - public ushort Quantity; // Unused, but would be cool - } - [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)] public unsafe struct kSendWorldAction { @@ -19786,12 +20100,12 @@ public unsafe struct kSetAgentProfession [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)] public unsafe struct kSetLayout { - public float Field0x0; - public float Field0x4; - public float Field0x8; - public float Field0xc; public float AvailableWidth; public float AvailableHeight; + public float LocalLeft; + public float LocalBottom; + public float LocalRight; + public float LocalTop; } [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)] @@ -19902,12 +20216,62 @@ public unsafe struct kWriteToChatLogWithSender public nint SenderEnc; } + [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Explicit, Pack = 1, Size = 0xD0)] + public unsafe struct GlFragmentRenderState + { + [global::System.Runtime.InteropServices.FieldOffset(0x0000)] + public fixed float TextureFactor[4]; + [global::System.Runtime.InteropServices.FieldOffset(0x0010)] + public fixed float FogColor[4]; + [global::System.Runtime.InteropServices.FieldOffset(0x0020)] + public fixed float SamplerBiases[2]; + [global::System.Runtime.InteropServices.FieldOffset(0x0040)] + public fixed float BumpEnvMat[8]; + [global::System.Runtime.InteropServices.FieldOffset(0x00C0)] + public fixed float DiscardSettings[4]; + } + + [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Explicit, Pack = 1)] + public unsafe struct GlesDevice + { + [global::System.Runtime.InteropServices.FieldOffset(0x0000)] + public fixed byte H0000[2004]; + [global::System.Runtime.InteropServices.FieldOffset(0x07D4)] + public uint DevMode; // GR_MODE_* + [global::System.Runtime.InteropServices.FieldOffset(0x07D8)] + public fixed byte H07D8[40]; + [global::System.Runtime.InteropServices.FieldOffset(0x0800)] + public nint DevWindow; // native window + [global::System.Runtime.InteropServices.FieldOffset(0x0804)] + public fixed byte H0804[8]; + [global::System.Runtime.InteropServices.FieldOffset(0x080C)] + public nint DevSurface; + [global::System.Runtime.InteropServices.FieldOffset(0x0810)] + public uint Width; // live surface size + [global::System.Runtime.InteropServices.FieldOffset(0x0814)] + public uint Height; + [global::System.Runtime.InteropServices.FieldOffset(0x0818)] + public nint DevContext; + [global::System.Runtime.InteropServices.FieldOffset(0x081C)] + public fixed byte H081C[2004]; + [global::System.Runtime.InteropServices.FieldOffset(0x0FF0)] + public global::Daybreak.API.Interop.GuildWars.GlFragmentRenderState FragmentState; + [global::System.Runtime.InteropServices.FieldOffset(0x10C0)] + public uint UniformBuffer; // the UBO name + } + [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)] public unsafe struct PacketBase { public uint Header; } + [global::System.Runtime.InteropServices.StructLayout(global::System.Runtime.InteropServices.LayoutKind.Sequential, Pack = 1)] + public unsafe struct HookTarget + { + public nuint Value; + } + public unsafe struct KeyCallback { public global::Daybreak.API.Interop.GuildWars.GuildWarsArray Value; } public unsafe struct AgentArray { public global::Daybreak.API.Interop.GuildWars.GuildWarsArray Value; } public unsafe struct AgentEffectsArray { public global::Daybreak.API.Interop.GuildWars.GuildWarsArray Value; } diff --git a/Daybreak.API/Interop/GuildWars/GuildWarsArray.cs b/Daybreak.API/Interop/GuildWars/GuildWarsArray.cs index 3676b202..a5d4bf20 100644 --- a/Daybreak.API/Interop/GuildWars/GuildWarsArray.cs +++ b/Daybreak.API/Interop/GuildWars/GuildWarsArray.cs @@ -13,17 +13,44 @@ namespace Daybreak.API.Interop.GuildWars; public readonly uint Size; public readonly uint Param; + /// + /// Upper bound on a believable element count. Guild Wars' largest arrays hold at most a + /// few thousand entries, so anything beyond this is uninitialised or misresolved memory + /// rather than a real array. + /// + private const uint MaxPlausibleCapacity = 0x10000; + + /// + /// Mirrors GW::BaseArray::valid() - the buffer must be null or aligned and the size + /// must fit within the capacity - plus a bound on the capacity itself. Guild Wars leaves + /// these fields transiently inconsistent while it (re)allocates an array, and a + /// misresolved GWCA scan can point this struct at arbitrary bytes that still satisfy + /// size <= capacity. + /// + public bool IsValid => + (this.Buffer is null || ((nuint)this.Buffer & 0x3) == 0) && + this.Size <= this.Capacity && + this.Capacity <= MaxPlausibleCapacity; + + /// + /// Number of elements that can safely be read. Zero whenever the array is not backed by + /// a buffer, matching GW::BaseArray::get(), which returns null instead of + /// dereferencing. Reading past this is an access violation, and because NativeAOT cannot + /// throw AccessViolationException it fail-fasts and takes Guild Wars down with it. + /// + public uint Count => this.Buffer is not null && this.IsValid ? this.Size : 0; + public T this[int index] { get { ArgumentOutOfRangeException.ThrowIfNegative(index); - ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual((uint)index, this.Size); + ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual((uint)index, this.Count); return this.Buffer[index]; } } - public Enumerator GetEnumerator() => new(this.Buffer, this.Size); + public Enumerator GetEnumerator() => new(this.Buffer, this.Count); IEnumerator IEnumerable.GetEnumerator() => this.GetEnumerator(); diff --git a/Daybreak.API/Interop/GuildWars/WrappedPointer.cs b/Daybreak.API/Interop/GuildWars/WrappedPointer.cs index 646d8f90..16691574 100644 --- a/Daybreak.API/Interop/GuildWars/WrappedPointer.cs +++ b/Daybreak.API/Interop/GuildWars/WrappedPointer.cs @@ -7,6 +7,18 @@ public readonly unsafe struct WrappedPointer(T* pointer) public bool IsNull => this.Pointer is null; + /// + /// True when the pointer is non-null and plausibly dereferenceable. + /// + /// + /// Guild Wars structures are 4-byte aligned on x86, so a misaligned address is never a + /// real structure. When a GWCA pattern scan fails to resolve, it can hand back an + /// address inside Gw.exe's code section (for example 0x0048CA72); reading through that + /// yields nonsense field values and eventually an access violation. NativeAOT cannot + /// throw AccessViolationException, so it fail-fasts and terminates Guild Wars. + /// + public bool IsValid => this.Pointer is not null && ((nuint)this.Pointer & 0x3) == 0; + public static implicit operator WrappedPointer(T* pointer) => new(pointer); public static implicit operator T*(WrappedPointer wrappedPointer) => wrappedPointer.Pointer; diff --git a/Daybreak.API/Services/CharacterSelectService.cs b/Daybreak.API/Services/CharacterSelectService.cs index ddd127a5..ec104251 100644 --- a/Daybreak.API/Services/CharacterSelectService.cs +++ b/Daybreak.API/Services/CharacterSelectService.cs @@ -35,21 +35,28 @@ public sealed class CharacterSelectService( { var gameContext = this.gameContextService.GetGameContext(); if (gameContext.IsNull || - gameContext.Pointer->World is null) + gameContext.Pointer->World is null || + gameContext.Pointer->Character is null) { scopedLogger.LogError("Game context is not initialized"); return default; } var availableCharsContext = this.gameContextService.GetAvailableChars(); - if (availableCharsContext.IsNull) + if (!availableCharsContext.IsValid || + !availableCharsContext.Pointer->IsValid) { - scopedLogger.LogError("Available characters context is not initialized"); + scopedLogger.LogError( + "Available characters context is not initialized (array@0x{Array:X8} buffer=0x{Buffer:X8} capacity={Capacity} size={Size})", + (nuint)availableCharsContext.Pointer, + availableCharsContext.IsValid ? (nuint)availableCharsContext.Pointer->Buffer : 0, + availableCharsContext.IsValid ? availableCharsContext.Pointer->Capacity : 0, + availableCharsContext.IsValid ? availableCharsContext.Pointer->Size : 0); return default; } var currentUuid = (*(Uuid*)gameContext.Pointer->Character->PlayerUuid).ToString(); - var availableChars = new List((int)availableCharsContext.Pointer->Size); + var availableChars = new List((int)availableCharsContext.Pointer->Count); foreach (var charContext in *availableCharsContext.Pointer) { var name = new string(charContext.Name); @@ -196,7 +203,9 @@ private async Task SelectCharacterToPlay(string characterName, bool play, // Find target character index uint targetIdx = 0xFFFF; - var charCount = ctx.Pointer->Chars.Size; + // Count (not Size) so a not-yet-allocated roster yields zero iterations + // instead of indexing through a null buffer. + var charCount = ctx.Pointer->Chars.Count; for (uint i = 0; i < charCount; i++) { diff --git a/Daybreak.Core/Services/DXVK/DXVKService.cs b/Daybreak.Core/Services/DXVK/DXVKService.cs index a0e4e51c..0caed3a5 100644 --- a/Daybreak.Core/Services/DXVK/DXVKService.cs +++ b/Daybreak.Core/Services/DXVK/DXVKService.cs @@ -433,6 +433,7 @@ private async Task DownloadAndExtractDXVK(IProgress progre { Directory.Delete(x32Target, recursive: true); } + if (Directory.Exists(x64Target)) { Directory.Delete(x64Target, recursive: true); diff --git a/Daybreak.Core/Views/EventCalendarView.razor.cs b/Daybreak.Core/Views/EventCalendarView.razor.cs index 72a50b9b..382a5ffe 100644 --- a/Daybreak.Core/Views/EventCalendarView.razor.cs +++ b/Daybreak.Core/Views/EventCalendarView.razor.cs @@ -6,6 +6,7 @@ using TrailBlazr.ViewModels; namespace Daybreak.Views; + public sealed class EventCalendarViewModel(IEventService eventService) : ViewModelBase { @@ -92,7 +93,7 @@ public List GetCalendarDates() { dates.Add(new DateTime(today.Year, today.Month, day)); } - + return dates; } @@ -107,6 +108,7 @@ public List GetEventsForDate(DateTime date) events.Add(eventItem); } } + return events; } } diff --git a/Daybreak.Generators/CppHeaderParser.cs b/Daybreak.Generators/CppHeaderParser.cs index 016d2ac0..d7c08c8d 100644 --- a/Daybreak.Generators/CppHeaderParser.cs +++ b/Daybreak.Generators/CppHeaderParser.cs @@ -178,6 +178,7 @@ public static void Parse(string headerText, ConstantsNode root) { inMultiLineConstexpr = false; } + continue; } @@ -189,6 +190,7 @@ public static void Parse(string headerText, ConstantsNode root) { inSkipBlock = false; } + continue; } @@ -211,6 +213,7 @@ public static void Parse(string headerText, ConstantsNode root) { ParseEnumMembersFromLine(trimmed.Substring(0, closeBraceIdx), currentEnum); } + inEnum = false; var node = namespaceStack.Peek(); node.Enums.Add(currentEnum); @@ -231,11 +234,11 @@ public static void Parse(string headerText, ConstantsNode root) int closeBraces = CountChar(lineWithoutComments, '}'); int prevDepth = structBraceDepth; structBraceDepth += openBraces - closeBraces; - + // Debug: Track brace changes for AgentLiving if (currentStruct.Name == "AgentLiving" && (openBraces > 0 || closeBraces > 0)) { - DebugLines.Add($"[BRACE] line {i+1}: {currentStruct.Name} depth {prevDepth}->{structBraceDepth} (open={openBraces}, close={closeBraces})"); + DebugLines.Add($"[BRACE] line {i + 1}: {currentStruct.Name} depth {prevDepth}->{structBraceDepth} (open={openBraces}, close={closeBraces})"); } // If we hit the closing brace of the struct @@ -252,8 +255,8 @@ public static void Parse(string headerText, ConstantsNode root) pathParts.Add(n.Name); pathParts.Reverse(); currentStruct.DebugNamespacePath = string.Join(".", pathParts); - - DebugLines.Add($"[STRUCT-END] line {i+1}: {currentStruct.Name} with {currentStruct.Fields.Count} fields"); + + DebugLines.Add($"[STRUCT-END] line {i + 1}: {currentStruct.Name} with {currentStruct.Fields.Count} fields"); node.Structs.Add(currentStruct); currentStruct = null; inStruct = false; @@ -278,6 +281,7 @@ public static void Parse(string headerText, ConstantsNode root) if (field is not null) currentStruct.Fields.Add(field); } + continue; } @@ -295,7 +299,7 @@ public static void Parse(string headerText, ConstantsNode root) var trailingCommentIdx = trimmed.IndexOf("//"); if (trailingCommentIdx > 0) trimmedWithoutTrailingComment = trimmed.Substring(0, trailingCommentIdx).TrimEnd(); - + if (trimmedWithoutTrailingComment.Contains("(") && (trimmedWithoutTrailingComment.Contains(")") || trimmedWithoutTrailingComment.Contains("{"))) continue; @@ -339,6 +343,7 @@ public static void Parse(string headerText, ConstantsNode root) }; currentStruct.Fields.Add(field); } + continue; } @@ -354,6 +359,7 @@ public static void Parse(string headerText, ConstantsNode root) var child = current.GetOrCreateChild(part); namespaceStack.Push(child); } + continue; } @@ -366,13 +372,14 @@ public static void Parse(string headerText, ConstantsNode root) freeBraceDepth--; continue; } - + if (namespaceStack.Count > 1) { // Debug: Track where namespace was popped var poppedNode = namespaceStack.Pop(); poppedNode.DebugPopLine = i + 1; } + continue; } @@ -390,6 +397,7 @@ public static void Parse(string headerText, ConstantsNode root) } } } + continue; } @@ -436,6 +444,7 @@ public static void Parse(string headerText, ConstantsNode root) inSkipBlock = true; skipBlockBraceCount = braces; } + continue; } @@ -448,6 +457,7 @@ public static void Parse(string headerText, ConstantsNode root) inSkipBlock = true; skipBlockBraceCount = braces; } + continue; } @@ -455,17 +465,18 @@ public static void Parse(string headerText, ConstantsNode root) if (OutOfLineMethodRegex.IsMatch(trimmed)) { int braces = CountChar(trimmed, '{') - CountChar(trimmed, '}'); - DebugLines.Add($"[OUT-OF-LINE] line {i+1}: {trimmed.Substring(0, Math.Min(50, trimmed.Length))}... braces={braces}"); + DebugLines.Add($"[OUT-OF-LINE] line {i + 1}: {trimmed.Substring(0, Math.Min(50, trimmed.Length))}... braces={braces}"); if (braces > 0) { inSkipBlock = true; skipBlockBraceCount = braces; } + continue; } else if (trimmed.Contains("::") && trimmed.Contains("(") && trimmed.Contains("{")) { - DebugLines.Add($"[UNMATCHED-METHOD] line {i+1}: {trimmed.Substring(0, Math.Min(60, trimmed.Length))}"); + DebugLines.Add($"[UNMATCHED-METHOD] line {i + 1}: {trimmed.Substring(0, Math.Min(60, trimmed.Length))}"); } // ── Track function declarations with body on separate line ─ @@ -492,6 +503,7 @@ public static void Parse(string headerText, ConstantsNode root) inMultiLineConstexpr = true; multiLineBraceCount = braces; } + continue; } @@ -501,7 +513,7 @@ public static void Parse(string headerText, ConstantsNode root) { var structName = structMatch.Groups[1].Value; var baseType = structMatch.Groups[2].Success ? structMatch.Groups[2].Value : null; - DebugLines.Add($"[STRUCT-START] line {i+1}: {structName} (inSkip={inSkipBlock}, freeBrace={freeBraceDepth})"); + DebugLines.Add($"[STRUCT-START] line {i + 1}: {structName} (inSkip={inSkipBlock}, freeBrace={freeBraceDepth})"); // Skip some special cases if (structName.StartsWith("__") || structName == "Packet") @@ -512,6 +524,7 @@ public static void Parse(string headerText, ConstantsNode root) inSkipBlock = true; skipBlockBraceCount = braces; } + continue; } @@ -530,7 +543,7 @@ public static void Parse(string headerText, ConstantsNode root) if (structNobraceMatch.Success) { var structName = structNobraceMatch.Groups[1].Value; - + // Skip forward declarations (just struct Name;) if (trimmed.EndsWith(";")) continue; @@ -559,8 +572,10 @@ public static void Parse(string headerText, ConstantsNode root) i = j; break; } + break; // unexpected content } + continue; } @@ -593,9 +608,11 @@ public static void Parse(string headerText, ConstantsNode root) { ParseEnumMembersFromLine(rest, enumDef); } + currentEnum = enumDef; inEnum = true; } + continue; } @@ -637,14 +654,18 @@ public static void Parse(string headerText, ConstantsNode root) { ParseEnumMembersFromLine(rest, enumDef); } + currentEnum = enumDef; inEnum = true; } + i = j; break; } + break; // unexpected content } + continue; } @@ -794,7 +815,7 @@ private static string StripComments(string line) int slashSlash = line.IndexOf("//"); if (slashSlash >= 0) line = line.Substring(0, slashSlash); - + // Remove /* */ style comments (simple - doesn't handle nested) int blockStart = line.IndexOf("/*"); while (blockStart >= 0) @@ -806,7 +827,7 @@ private static string StripComments(string line) line = line.Substring(0, blockStart); blockStart = line.IndexOf("/*"); } - + return line; } diff --git a/Daybreak.Generators/GenerateGWCABindings.cs b/Daybreak.Generators/GenerateGWCABindings.cs index dfef5838..6127eca6 100644 --- a/Daybreak.Generators/GenerateGWCABindings.cs +++ b/Daybreak.Generators/GenerateGWCABindings.cs @@ -238,7 +238,7 @@ private static void EmitSource( // Emit var sb = new StringBuilder(65536); EmitHeader(sb, totalExports, skippedExports); - + // Add diagnostic comment about parsed structs sb.AppendLine(" // ═══════════════════════════════════════════════════"); sb.AppendLine(" // Parsed structs diagnostic:"); @@ -246,6 +246,7 @@ private static void EmitSource( { sb.AppendLine($" // {diag}"); } + sb.AppendLine(" // ═══════════════════════════════════════════════════"); sb.AppendLine(); @@ -270,31 +271,33 @@ private static void EmitSource( { EmitConstantsNode(sb, grandchild, typeMap, namespaceClassNames, 4); } + continue; } + EmitConstantsNode(sb, child, typeMap, namespaceClassNames, 4); } sb.AppendLine("}"); // Close GWCA class sb.AppendLine("}"); // Close Daybreak.API.Interop namespace - + // Emit structs and enums into GuildWars namespace for consumer code compatibility // Consumer code uses `using Daybreak.API.Interop.GuildWars;` to access types sb.AppendLine(); sb.AppendLine("namespace Daybreak.API.Interop.GuildWars"); sb.AppendLine("{"); var emittedNames = new HashSet(StringComparer.Ordinal); - + // Collect inline array types needed by struct fields (for non-blittable array fields) var inlineArrayTypes = new HashSet<(string csType, int size)>(); CollectInlineArrayTypes(headerRoot, typeMap, inlineArrayTypes); - + // Emit manually-defined helper structs first (TLink, etc.) EmitManualHelperStructs(sb, 4, emittedNames); - + // Emit inline array types for non-blittable arrays (e.g., enum arrays) EmitInlineArrayTypes(sb, 4, inlineArrayTypes, emittedNames); - + // Emit enums first - they're often referenced by structs (e.g. Attribute enum vs Attribute struct) EmitEnumsToGuildWarsNamespace(sb, headerRoot, 4, emittedNames); EmitStructsToGuildWarsNamespace(sb, headerRoot, typeMap, 4, emittedNames, inlineArrayTypes); @@ -551,6 +554,7 @@ private static void EmitConstantsNode( else sb.AppendLine($"{innerPad} {SanitizeIdentifier(member.Name)},{comment}"); } + sb.AppendLine($"{innerPad}}}"); } else @@ -666,10 +670,10 @@ private static void CollectStructMappings( // Only add structs that can actually be emitted if (!CanEmitStruct(structDef)) continue; - + // Determine the C# name, handling collisions with namespace classes or enums var csName = SanitizeIdentifier(structDef.Name); - + // Check if name collides with a namespace class, enum, or ANOTHER struct already using this name if (namespaceClassNames.Contains(structDef.Name)) { @@ -693,21 +697,21 @@ private static void CollectStructMappings( else csName += "_"; } - + usedGuildWarsNames.Add(csName); - + // Use a qualified key that includes the C++ path to distinguish structs with the same name // from different namespaces (e.g., GW::Attribute vs GW::SkillbarMgr::Attribute) var mapKey = structDef.Name; var fqCsType = "global::Daybreak.API.Interop.GuildWars." + csName; var simpleStructKey = "struct " + structDef.Name; - + if (typeMap.ContainsKey(mapKey)) { // Use qualified key to distinguish this struct from enum or another struct // Include the csPath to make it unique (e.g., "struct GW.Attribute" vs "struct GW.SkillbarMgr.Attribute") mapKey = "struct " + csPath.Replace("GWCA.", "") + "." + structDef.Name; - + // Also add simple "struct X" key if not already taken (for field type resolution) // This allows MapCppFieldTypeToCs to find the struct without knowing the full path if (!typeMap.ContainsKey(simpleStructKey)) @@ -715,7 +719,7 @@ private static void CollectStructMappings( typeMap[simpleStructKey] = fqCsType; } } - + // Structs go into GuildWars namespace (flat), not nested GWCA classes typeMap[mapKey] = fqCsType; } @@ -745,19 +749,20 @@ private static void CollectNamespaceClassNames(NamespaceNode node, HashSet diagnostics) { var currentPath = string.IsNullOrEmpty(path) ? node.Name : path + "." + node.Name; - + // Show namespace pop line info if (node.DebugPopLine > 0) { diagnostics.Add($"[NAMESPACE] {currentPath} popped at line {node.DebugPopLine}"); } - + foreach (var structDef in node.Structs) { var (canEmit, reason) = CanEmitStructWithReason(structDef); var status = canEmit ? "OK" : $"SKIP: {reason}"; diagnostics.Add($"{currentPath}.{structDef.Name}: {structDef.Fields.Count} fields [{status}]"); } + foreach (var child in node.Children.Values) { CollectStructDiagnostics(child, currentPath, diagnostics); @@ -772,7 +777,7 @@ private static (bool canEmit, string? reason) CanEmitStructWithReason(CppStructD // Skip structs with no fields (usually forward declarations that got parsed) if (structDef.Fields.Count == 0) return (false, "no fields"); - + // Check for mixed offset/no-offset fields (can't use Explicit layout if not all have offsets) bool hasAnyOffset = structDef.Fields.Any(f => f.Offset.HasValue); bool allHaveOffsets = structDef.Fields.All(f => f.Offset.HasValue); @@ -788,7 +793,7 @@ private static (bool canEmit, string? reason) CanEmitStructWithReason(CppStructD return (false, $"template param T in field {field.Name}"); // Skip structs with complex template containers we can't represent // Note: TLink is handled separately in MapCppFieldTypeToCs (8-byte linked list node) - if (cppType.Contains("TList<") || + if (cppType.Contains("TList<") || cppType.Contains("PrioQ<") || cppType.Contains("PrioQLink<") || cppType.Contains("BaseArray<")) return (false, $"complex template in field {field.Name}: {cppType}"); @@ -815,9 +820,10 @@ private static (bool canEmit, string? reason) CanEmitStructWithReason(CppStructD if (cppType.Contains("EquipmentVTable") || cppType.Contains("VTable")) return (false, $"vtable in field {field.Name}: {cppType}"); } + return (true, null); } - + private static bool CanEmitStruct(CppStructDef structDef) => CanEmitStructWithReason(structDef).canEmit; /// @@ -907,7 +913,7 @@ private static void EmitStructsToGuildWarsNamespace(StringBuilder sb, ConstantsN // Start with the node's own name as the path base (GWCA for headerRoot) EmitStructsRecursive(sb, node, node.Name, typeMap, indent, emittedNames, inlineArrayTypes); } - + private static void EmitStructsRecursive(StringBuilder sb, ConstantsNode node, string currentPath, Dictionary typeMap, int indent, HashSet emittedNames, HashSet<(string csType, int size)> inlineArrayTypes) { foreach (var structDef in node.Structs.OrderBy(s => s.Name, StringComparer.Ordinal)) @@ -915,13 +921,13 @@ private static void EmitStructsRecursive(StringBuilder sb, ConstantsNode node, s // Skip structs that can't be emitted if (!CanEmitStruct(structDef)) continue; - + // Get the C# name from typeMap (which includes collision-resolution suffixes like "Struct") // Try direct name first, then qualified struct key (for collision cases) string? fqCsName; var directLookup = typeMap.TryGetValue(structDef.Name, out fqCsName); var containsGuildWars = fqCsName?.Contains("GuildWars.") ?? false; - + if (!directLookup || !containsGuildWars) { // If direct lookup failed or returned an enum (not in GuildWars namespace), @@ -929,22 +935,22 @@ private static void EmitStructsRecursive(StringBuilder sb, ConstantsNode node, s var qualifiedKey = "struct " + currentPath.Replace("GWCA.", "") + "." + structDef.Name; typeMap.TryGetValue(qualifiedKey, out fqCsName); } - + if (fqCsName is null) continue; - + // Extract just the struct name from the fully-qualified name // e.g. "global::Daybreak.API.Interop.GuildWars.ItemStruct" -> "ItemStruct" var csName = fqCsName.Substring(fqCsName.LastIndexOf('.') + 1); - + // Skip duplicates (including if an enum with the same name was emitted) if (emittedNames.Contains(csName)) continue; - + emittedNames.Add(csName); EmitStruct(sb, structDef, typeMap, indent, inlineArrayTypes, csName); } - + // Recurse into children, appending the child's name to the current path foreach (var child in node.Children.Values) { @@ -959,7 +965,7 @@ private static void EmitStructsRecursive(StringBuilder sb, ConstantsNode node, s private static void EmitManualHelperStructs(StringBuilder sb, int indent, HashSet emittedNames) { var pad = new string(' ', indent); - + // TLink - doubly-linked list node used in Agent and other structs // C++ definition: struct TLink { TLink* prev_link; T* next_node; } // Size: 8 bytes (2 pointers on x86) @@ -1003,16 +1009,16 @@ private static void CollectInlineArrayTypes(ConstantsNode node, Dictionary inlineArrayTypes, HashSet emittedNames) { var pad = new string(' ', indent); - + foreach (var (csType, size) in inlineArrayTypes.OrderBy(x => x.csType).ThenBy(x => x.size)) { // Generate a name like "AttributeArray12" or "SkillIDArray8" var simpleName = GetSimpleTypeName(csType); var arrayTypeName = $"{simpleName}Array{size}"; - + if (!emittedNames.Add(arrayTypeName)) continue; - + sb.AppendLine($"{pad}/// "); sb.AppendLine($"{pad}/// Inline array of {size} {simpleName} elements."); sb.AppendLine($"{pad}/// "); @@ -1067,10 +1073,10 @@ private static string GetSimpleTypeName(string csType) var isPointer = csType.EndsWith("*"); if (isPointer) csType = csType.TrimEnd('*'); - + var lastDot = csType.LastIndexOf('.'); var name = lastDot >= 0 ? csType.Substring(lastDot + 1) : csType; - + // Append Ptr for pointer types to make valid identifier return isPointer ? name + "Ptr" : name; } @@ -1092,30 +1098,30 @@ private static void EmitEnumsToGuildWarsNamespace(StringBuilder sb, ConstantsNod { EmitEnumsRecursive(sb, node, indent, emittedNames); } - + private static void EmitEnumsRecursive(StringBuilder sb, ConstantsNode node, int indent, HashSet emittedNames) { var pad = new string(' ', indent); - + foreach (var enumDef in node.Enums.OrderBy(e => e.Name, StringComparer.Ordinal)) { // Skip anonymous enums if (enumDef.Name is null) continue; - + // Skip duplicates (including if a struct with the same name was emitted) if (emittedNames.Contains(enumDef.Name)) continue; - + emittedNames.Add(enumDef.Name); - + // Determine base type and map C++ types to C# var baseType = MapCppEnumBaseType(enumDef.UnderlyingType ?? "int"); - + sb.AppendLine(); sb.AppendLine($"{pad}public enum {SanitizeIdentifier(enumDef.Name)} : {baseType}"); sb.AppendLine($"{pad}{{"); - + var innerPad = new string(' ', indent + 4); foreach (var member in enumDef.Members) { @@ -1124,9 +1130,10 @@ private static void EmitEnumsRecursive(StringBuilder sb, ConstantsNode node, int else sb.AppendLine($"{innerPad}{SanitizeIdentifier(member.Name)},"); } + sb.AppendLine($"{pad}}}"); } - + // Recurse into children foreach (var child in node.Children.Values) { @@ -1141,19 +1148,19 @@ private static void EmitTypeAliasesToGuildWarsNamespace(StringBuilder sb, Consta { EmitTypeAliasesRecursive(sb, node, typeMap, indent, emittedNames); } - + private static void EmitTypeAliasesRecursive(StringBuilder sb, ConstantsNode node, Dictionary typeMap, int indent, HashSet emittedNames) { var pad = new string(' ', indent); - + foreach (var alias in node.TypeAliases.OrderBy(a => a.AliasName, StringComparer.Ordinal)) { // Skip duplicates if (emittedNames.Contains(alias.AliasName)) continue; - + emittedNames.Add(alias.AliasName); - + var innerType = alias.TemplateArg.Replace("::", ".").Trim(); // Handle pointer types (e.g., "Item *" -> "nint") if (innerType.EndsWith("*")) @@ -1170,10 +1177,10 @@ private static void EmitTypeAliasesRecursive(StringBuilder sb, ConstantsNode nod // Unmapped struct type - use nint as fallback innerType = "nint"; } - + sb.AppendLine($"{pad}public unsafe struct {alias.AliasName} {{ public global::Daybreak.API.Interop.GuildWars.GuildWarsArray<{innerType}> Value; }}"); } - + // Recurse into children foreach (var child in node.Children.Values) { @@ -1259,6 +1266,7 @@ private static string MapCppFieldTypeToCs(string cppType, Dictionary"; } + return "global::Daybreak.API.Interop.GuildWars.GuildWarsArray"; } @@ -1286,7 +1294,7 @@ private static string MapCppFieldTypeToCs(string cppType, Dictionary "nint", "HANDLE" => "nint", "HWND" => "nint", + // EGL handles: `using EGLSurface = void*;` aliases declared inside + // GWCA/Managers/RenderMgr.h, which the header parser doesn't resolve. + "EGLSurface" => "nint", + "EGLContext" => "nint", + "EGLDisplay" => "nint", "uintptr_t" => "nuint", "intptr_t" => "nint", "Vec2f" => "global::System.Numerics.Vector2", @@ -1420,6 +1433,7 @@ private static string ToPascalCase(string name) result.Append(part.Substring(1)); } } + return result.ToString(); } @@ -1649,7 +1663,7 @@ private static string ResolveTemplateArgType(DemangledType arg, Dictionary "nint", }; } - + /// /// Resolves a struct name to its C# type, handling name collisions with enums. /// @@ -1664,7 +1678,7 @@ private static string ResolveStructType(string name, Dictionary // Unmapped struct -> nint return "nint"; } - + /// /// Resolves a pointer inner type (the pointee) for struct or enum types, /// handling name collisions between structs and enums. @@ -1680,7 +1694,7 @@ private static string ResolveStructOrEnumPointerInner(string name, Dictionary /// Resolves a pointer type used as a template argument (e.g., Agent* in Array<Agent*>). /// In unsafe C#, pointer types can be used as generic type arguments for unmanaged structs. @@ -1689,17 +1703,17 @@ private static string ResolvePointerTemplateArg(DemangledType arg, Dictionary "nint", // unmapped pointer -> nint }; } - + /// /// Maps C/C++ primitive type names to C# primitive types. /// @@ -1890,6 +1904,7 @@ public ConstantsNode GetOrCreateChild(string childName) child = new ConstantsNode(childName); this.Children[childName] = child; } + return child; } } @@ -1943,4 +1958,4 @@ internal sealed class CppTypeAlias public string SourceType { get; set; } = ""; // e.g., "Array" public string? TemplateArg { get; set; } // e.g., "Buff" } -} \ No newline at end of file +} diff --git a/Daybreak.Generators/MsvcDemangler.cs b/Daybreak.Generators/MsvcDemangler.cs index 46b17891..b32ad503 100644 --- a/Daybreak.Generators/MsvcDemangler.cs +++ b/Daybreak.Generators/MsvcDemangler.cs @@ -461,6 +461,7 @@ private static void ReadFuncPtr(ReadOnlySpan s, ref int pos, List { pos++; // skip Z - this terminates the function pointer, not the outer param list } + break; } diff --git a/Daybreak.Linux/Services/Keyboard/KeyboardHookService.cs b/Daybreak.Linux/Services/Keyboard/KeyboardHookService.cs index ea7c1a71..a0c0f812 100644 --- a/Daybreak.Linux/Services/Keyboard/KeyboardHookService.cs +++ b/Daybreak.Linux/Services/Keyboard/KeyboardHookService.cs @@ -348,6 +348,7 @@ private static nint FindGtkWindowForCurrentProcess() result = window; break; } + current = NativeMethods.G_list_next(current); } diff --git a/Daybreak.Linux/Services/Screens/ScreenManager.cs b/Daybreak.Linux/Services/Screens/ScreenManager.cs index 6abe273b..30348392 100644 --- a/Daybreak.Linux/Services/Screens/ScreenManager.cs +++ b/Daybreak.Linux/Services/Screens/ScreenManager.cs @@ -221,7 +221,7 @@ private Rectangle EnsurePositionIsOnScreen(Rectangle position) /// global value, and under the forced X11 backend GDK cannot report reliable /// per-monitor scales anyway. /// - private int GetDpiForPosition(int x, int y) + private int GetDpiForPosition(int _, int __) { return (int)Math.Round(this.GetEffectiveScale() * DefaultDpi); } diff --git a/Daybreak.Linux/Services/Startup/Actions/SetupWinePrefixAction.cs b/Daybreak.Linux/Services/Startup/Actions/SetupWinePrefixAction.cs index 224802fb..75e47eda 100644 --- a/Daybreak.Linux/Services/Startup/Actions/SetupWinePrefixAction.cs +++ b/Daybreak.Linux/Services/Startup/Actions/SetupWinePrefixAction.cs @@ -53,31 +53,4 @@ public override void ExecuteOnStartup() expirationTime: Global.NotificationLongExpiration ); } - - public override async Task ExecuteOnStartupAsync(CancellationToken cancellationToken) - { - if ( - !this.winePrefixManager.IsAvailable() - || !this.winePrefixManager.IsInitialized() - ) - { - return; - } - - var scopedLogger = this.logger.CreateScopedLogger(); - if (await this.winePrefixManager.ConfigureComputerName(cancellationToken)) - { - scopedLogger.LogDebug("Wine computer name configuration is up to date"); - return; - } - - scopedLogger.LogError( - "Failed to configure the Linux host name as the Wine computer name" - ); - this.notificationService.NotifyError( - title: "Wine prefix configuration failed", - description: "Daybreak could not configure the Linux host name as the Wine computer name. Check the logs for details.", - expirationTime: DateTime.UtcNow + TimeSpan.FromSeconds(30) - ); - } } diff --git a/Daybreak.Linux/Services/Window/WindowManipulationService.cs b/Daybreak.Linux/Services/Window/WindowManipulationService.cs index ba906aa3..80977fe6 100644 --- a/Daybreak.Linux/Services/Window/WindowManipulationService.cs +++ b/Daybreak.Linux/Services/Window/WindowManipulationService.cs @@ -137,6 +137,7 @@ private static nint FindGtkWindowForCurrentProcess() result = window; break; } + current = NativeMethods.G_list_next(current); } diff --git a/Daybreak.Linux/Services/Wine/WineDebugLog.cs b/Daybreak.Linux/Services/Wine/WineDebugLog.cs new file mode 100644 index 00000000..47305c81 --- /dev/null +++ b/Daybreak.Linux/Services/Wine/WineDebugLog.cs @@ -0,0 +1,96 @@ +using System.Diagnostics; +using Daybreak.Shared.Utils; + +namespace Daybreak.Linux.Services.Wine; + +/// +/// Debug-build support for capturing Wine diagnostics, most importantly the +/// winedbg --auto backtrace produced when Guild Wars crashes. +/// +/// Guild Wars is launched by Daybreak.Injector.exe, so it is a *grandchild* of the +/// Wine process Daybreak starts and inherits that process's stderr. Daybreak stops +/// reading that pipe as soon as the injector prints its result, which means a later +/// crash backtrace is written into a pipe nobody drains: the output is lost, and if +/// the pipe buffer fills, the game blocks inside a stderr write. +/// +/// Redirecting stderr to a file inside the shell makes the descriptor outlive +/// Daybreak's interest in the process, so every descendant (injector, Gw.exe, +/// winedbg) appends to a durable log instead. +/// +internal static class WineDebugLog +{ + private const string LogFileName = "wine-debug.log"; + private const string EnableVariable = "DAYBREAK_WINE_DEBUG"; + private const string ChannelsVariable = "DAYBREAK_WINE_DEBUG_CHANNELS"; + + /// + /// Enabled by default for Debug builds. Either build configuration can opt in or + /// out explicitly with DAYBREAK_WINE_DEBUG=1 / =0. + /// + public static bool IsEnabled => + Environment.GetEnvironmentVariable(EnableVariable) switch + { + "1" or "true" or "TRUE" => true, + "0" or "false" or "FALSE" => false, +#if DEBUG + _ => true, +#else + _ => false, +#endif + }; + + public static string LogPath => PathUtils.GetAbsolutePathFromRoot(LogFileName); + + /// + /// Extra WINEDEBUG channels. Left unset by default: Wine's default err class + /// already reports unhandled exceptions and drives winedbg, while trace channels such + /// as +seh or +relay slow the game to a crawl. Set + /// DAYBREAK_WINE_DEBUG_CHANNELS=+seh when a specific investigation needs them. + /// + public static string? Channels => + Environment.GetEnvironmentVariable(ChannelsVariable) is { Length: > 0 } channels + ? channels + : null; + + /// + /// Rewrites to run the original command under + /// /bin/sh with stderr appended to . + /// + /// + /// The command is passed as a single positional parameter and re-parsed with + /// eval so the caller's existing double-quoting (paths such as + /// "Z:\...\Guild Wars\Gw.exe" contain spaces) keeps working unchanged. + /// + public static void Apply(ProcessStartInfo startInfo) + { + var logPath = LogPath; + var command = $"\"{startInfo.FileName}\" {startInfo.Arguments}"; + + startInfo.FileName = "/bin/sh"; + startInfo.Arguments = string.Empty; + startInfo.ArgumentList.Add("-c"); + startInfo.ArgumentList.Add("log=\"$1\"; shift; eval \"exec $* 2>>'$log'\""); + startInfo.ArgumentList.Add("daybreak-wine"); + startInfo.ArgumentList.Add(logPath); + startInfo.ArgumentList.Add(command); + + if (Channels is { } channels) + { + startInfo.Environment["WINEDEBUG"] = channels; + } + } + + public static void WriteSessionHeader(string description) + { + try + { + File.AppendAllText( + LogPath, + $"{Environment.NewLine}===== {DateTime.Now:yyyy-MM-dd HH:mm:ss} {description} ====={Environment.NewLine}"); + } + catch + { + // Diagnostics only - never fail a launch because the log is unwritable. + } + } +} diff --git a/Daybreak.Linux/Services/Wine/WinePrefixManager.cs b/Daybreak.Linux/Services/Wine/WinePrefixManager.cs index ea525252..2b1deefa 100644 --- a/Daybreak.Linux/Services/Wine/WinePrefixManager.cs +++ b/Daybreak.Linux/Services/Wine/WinePrefixManager.cs @@ -122,7 +122,10 @@ public IProgressAsyncOperation PerformUninstallation(CancellationToken can public IEnumerable GetCustomArguments() => []; /// - public Task OnGuildWarsStarting(GuildWarsStartingContext guildWarsStartingContext, CancellationToken cancellationToken) + public async Task OnGuildWarsStarting( + GuildWarsStartingContext guildWarsStartingContext, + CancellationToken cancellationToken + ) { if (!this.IsAvailable()) { @@ -132,7 +135,7 @@ public Task OnGuildWarsStarting(GuildWarsStartingContext guildWarsStartingContex title: "Wine not installed", description: "Wine is required to launch Guild Wars on Linux. Please install Wine and restart Daybreak.", expirationTime: DateTime.UtcNow + TimeSpan.FromSeconds(15)); - return Task.CompletedTask; + return; } if (!this.IsInitialized()) @@ -143,10 +146,23 @@ public Task OnGuildWarsStarting(GuildWarsStartingContext guildWarsStartingContex title: "Wine prefix not initialized", description: "The Wine prefix needs to be set up before launching Guild Wars. Click here to initialize it.", expirationTime: DateTime.UtcNow + TimeSpan.FromSeconds(15)); - return Task.CompletedTask; + return; + } + + if (await this.ConfigureComputerName(cancellationToken)) + { + return; } - return Task.CompletedTask; + this.logger.LogError( + "Failed to configure the Linux host name as the Wine computer name. Blocking Guild Wars startup" + ); + guildWarsStartingContext.CancelStartup = true; + this.notificationService.NotifyError( + title: "Wine prefix configuration failed", + description: "Daybreak could not configure the Linux host name as the Wine computer name. Check the logs for details.", + expirationTime: DateTime.UtcNow + TimeSpan.FromSeconds(15) + ); } /// @@ -462,6 +478,15 @@ CancellationToken cancellationToken startInfo.Environment["WINEPREFIX"] = this.winePrefixPath; + // Guild Wars outlives this call, so its crash backtrace must go somewhere + // durable rather than into the stderr pipe we stop reading below. + if (WineDebugLog.IsEnabled) + { + WineDebugLog.WriteSessionHeader($"{wineExePath} {wineArgs}"); + WineDebugLog.Apply(startInfo); + this.logger.LogDebug("Wine diagnostics are being appended to {WineDebugLog}", WineDebugLog.LogPath); + } + try { using var process = new Process { StartInfo = startInfo }; diff --git a/Directory.Packages.props b/Directory.Packages.props index d9e792dc..a5a7f853 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -7,40 +7,40 @@ - + - - - - + + + + - - - - - - - - - + + + + + + + + + - - + + - + - - - - - + + + + + @@ -54,14 +54,14 @@ - - - + + + - - - + + + diff --git a/LICENSE.md b/LICENSE.md index 367794c6..8fdd7c66 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,21 +1,20 @@ MIT License -Copyright (c) 2025 Macocian Alexandru Victor +Copyright (c) 2026 Macocian Alexandru Victor -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index cdcdb363..5678d29d 100644 --- a/README.md +++ b/README.md @@ -200,6 +200,34 @@ public static string ToWinePath(string linuxPath) } ``` +### Wine Debug Log + +Debug builds append all Wine output to `wine-debug.log` in the Daybreak output folder: + +``` +Daybreak.Linux/bin/Debug/net10.0/linux-x64/wine-debug.log +``` + +This is the place to look when Guild Wars dies without an error. Guild Wars is a grandchild of the Wine process Daybreak starts, so its stderr would otherwise go to a pipe nobody reads and the crash report would be lost. Wine runs `winedbg --auto` on a crash, so the log contains the faulting stack — including managed frames when `Daybreak.API` is at fault: + +``` +err:eventlog:ReportEventW L"Message: Access Violation: Attempted to read or write protected memory..." +err:eventlog:ReportEventW L" at Daybreak.API.Interop.GuildWars.GuildWarsArray`1.Enumerator.get_Current()" +err:eventlog:ReportEventW L" at Daybreak.API.Services.CharacterSelectService... +err:seh:NtRaiseException Unhandled exception code c0000409 +``` + +Note that `Daybreak.API` is NativeAOT, which cannot throw `AccessViolationException`. A bad pointer read therefore calls `FailFast` and terminates Guild Wars instantly, with nothing written to `Daybreak.API.log`. + +Each launch is delimited by a `===== =====` header. The log is append-only, so delete it when it gets large. + +Environment variables: + +| Variable | Effect | +|----------|--------| +| `DAYBREAK_WINE_DEBUG` | `1` forces logging on, `0` off. Defaults to on for Debug builds, off for Release. | +| `DAYBREAK_WINE_DEBUG_CHANNELS` | Sets `WINEDEBUG`, e.g. `+seh`. Unset by default — Wine's default `err` class already reports crashes, and trace channels slow the game badly. | + --- ## Credits diff --git a/Scripts/SetupWinePrefix.sh b/Scripts/SetupWinePrefix.sh index 8cf8ffc5..f479c614 100755 --- a/Scripts/SetupWinePrefix.sh +++ b/Scripts/SetupWinePrefix.sh @@ -19,6 +19,15 @@ set -euo pipefail # ─── configuration ──────────────────────────────────────────────────────────── DOTNET_SDK_CHANNEL="${DOTNET_SDK_CHANNEL:-10.0}" +# Pinned, not "latest": the SDK's bundled Roslyn must be >= the +# Microsoft.CodeAnalysis.CSharp version referenced by Daybreak.Generators +# (see Directory.Packages.props). A generator built against a newer Roslyn is +# rejected with CS9057 and silently dropped, which makes Daybreak.API fail to +# compile with a wall of "GWCAEquivalentAttribute could not be found" errors. +# SDK 10.0.300 -> Roslyn 5.6.0.0 +# SDK 10.0.400 -> Roslyn 5.9.0.0 +# Set DOTNET_SDK_VERSION=latest to track the newest SDK in the channel. +DOTNET_SDK_VERSION="${DOTNET_SDK_VERSION:-10.0.400}" LLVM_VERSION="${LLVM_VERSION:-22.1.5}" XWIN_VERSION="${XWIN_VERSION:-0.9.0}" WINEPREFIX_DEFAULT="$HOME/.wine-daybreak" @@ -68,21 +77,28 @@ fi # ─── 2. .NET SDK ────────────────────────────────────────────────────────────── DOTNET_DIR="$WINEPREFIX/drive_c/dotnet" -if [[ ! -f "$DOTNET_DIR/dotnet.exe" ]]; then - log "Resolving latest .NET $DOTNET_SDK_CHANNEL SDK" - SDK_INFO=$(curl -fsSL "https://builds.dotnet.microsoft.com/dotnet/release-metadata/${DOTNET_SDK_CHANNEL}/releases.json" | python3 -c " +log "Resolving .NET SDK ($DOTNET_SDK_VERSION) from channel $DOTNET_SDK_CHANNEL" +SDK_INFO=$(curl -fsSL "https://builds.dotnet.microsoft.com/dotnet/release-metadata/${DOTNET_SDK_CHANNEL}/releases.json" | python3 -c " import json,sys +want=sys.argv[1] d=json.load(sys.stdin) -v=d['latest-sdk'] +if want=='latest': + want=d['latest-sdk'] for r in d['releases']: - if r['sdk']['version']==v: - for f in r['sdk']['files']: + for s in ([r['sdk']] + r.get('sdks',[])): + if s['version']!=want: + continue + for f in s['files']: if f['rid']=='win-x64' and f['name'].endswith('.zip'): - print(v); print(f['url']); sys.exit(0) -sys.exit('No win-x64 SDK zip found') -") - SDK_VER=$(echo "$SDK_INFO" | sed -n '1p') - SDK_URL=$(echo "$SDK_INFO" | sed -n '2p') + print(want); print(f['url']); sys.exit(0) +sys.exit(f'No win-x64 SDK zip found for {want}') +" "$DOTNET_SDK_VERSION") +SDK_VER=$(echo "$SDK_INFO" | sed -n '1p') +SDK_URL=$(echo "$SDK_INFO" | sed -n '2p') + +# Keyed on the versioned SDK directory, not dotnet.exe: bumping +# DOTNET_SDK_VERSION must actually install the new SDK into an existing prefix. +if [[ ! -d "$DOTNET_DIR/sdk/$SDK_VER" ]]; then SDK_ZIP="$CACHE_DIR/dotnet-sdk-${SDK_VER}-win-x64.zip" if [[ ! -f "$SDK_ZIP" ]]; then @@ -94,10 +110,12 @@ sys.exit('No win-x64 SDK zip found') fi mkdir -p "$DOTNET_DIR" - log "Extracting SDK into $DOTNET_DIR" - (cd "$DOTNET_DIR" && unzip -q "$SDK_ZIP") + # -o so a newer SDK lands side-by-side and refreshes the shared host/runtime. + # With no global.json in the repo, dotnet then selects the highest SDK. + log "Extracting SDK $SDK_VER into $DOTNET_DIR" + (cd "$DOTNET_DIR" && unzip -qo "$SDK_ZIP") else - log ".NET SDK already present in $DOTNET_DIR" + log ".NET SDK $SDK_VER already present in $DOTNET_DIR" fi # ─── 3. LLVM Windows binaries (lld-link.exe, llvm-lib.exe) ─────────────────── diff --git a/Tools/SkillUpdater/WikiSkillParser.cs b/Tools/SkillUpdater/WikiSkillParser.cs index 369b1cbb..0401b2f5 100644 --- a/Tools/SkillUpdater/WikiSkillParser.cs +++ b/Tools/SkillUpdater/WikiSkillParser.cs @@ -194,9 +194,13 @@ private static Dictionary ExtractFields(string body) { var c = body[i]; if (c == '{' && i + 1 < body.Length && body[i + 1] == '{') { braceDepth++; i += 2; continue; } + if (c == '}' && i + 1 < body.Length && body[i + 1] == '}') { braceDepth--; i += 2; continue; } + if (c == '[' && i + 1 < body.Length && body[i + 1] == '[') { bracketDepth++; i += 2; continue; } + if (c == ']' && i + 1 < body.Length && body[i + 1] == ']') { bracketDepth--; i += 2; continue; } + if (c == '|' && braceDepth == 0 && bracketDepth == 0) { break;

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�=#C%X0@tHs>oy=0Psanr#9NED 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Π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�dLqj<7_}y%)~Q??H=RpI-I?5KZtWeih&H5plk3<8AoClj zFpwcdF_a)=fO`Tx4F(EJfu~7Bo@Sns;o$8p$kgO2d5H1~5cd`%!%I|O)s2iz0CEnD zs;EJTn8MYbYLq%yO;l6VR3NT&b)K4`W~yt|EkItmY99EM0-&#A^|DHk33nr64$zu` z@lrI(1Bb)MMrnh!M6Ah3)zTauBm@3-t+oaJHdo67zA11xu(EteGpw0WkmCr2toPKT z^ucg*J1B`Bws}6Zplxo zEBQ+SQe&x^L^8Y`ZtAbBO)C6T8b2K?24*AYxDcLd1vs(Q@BZM0QF;6k zKA%4bk9krp1ZQ;t-j{Ngewsg4(*y#A8d|UxrbTFdfRp02WU#tZwdug53mqma9hy83 z{*E$BY-u5~ zV5_B#QkIkhPW%X>k3#93bOAh#4_4Rs$^LR<#FGMYWWjQn93l5XWEU?dgKL`#PcU0v z2n)0t8Tu?a$5|nC67l6Z`2x_Wk5UD3A6*L(2z@Z13t?D6(npDbZA}L9nyO4!W`h@8 zfi)2uu_hu1QN|JEE(?`&$_3@R;sXrnhx~qH;79?iP_P;XW~h%EqsFVr$j41pr>nEo zh3X1*HQ1soH3vBBUmZ)z3g*C%9RWHn)Xr%aVC{YMD&U0u^~S)Xf^O)+dKftKK6(te z%Vd3mJ{5Vt*%<#7`f9LIS$d9sP(Pxd#Co!G`UU;E?qgIj{0x7iu@Q)@i(v#CVMc_} z2W!0IjbyAdnrci(6tNH-!)jxrkp(<(5P0^aL9#vbSs)d`%3sD>9ADWj*Oddnaxz#K z5d_{l95HqjBJ4yt1rb0R;`@1W2J)9{5#eWp%BJAF_26QtVAqu=8PjnJVBw{IHhFpDF8|<~35<`KfA8&4}ag-ZiajgT?wCwdQSp*6hbb~K{78uHm^fEeITDzAfbMcQGZBj zW5{VBBvpW{8j#jt$ZHrRHUcu+2U1(g3?)N$CqR0qLVl-1f@ed97eb0xK#o^Kk~cz@ zvmnhmkmrMt=p%ACY++AW!zkFp!LW#lu!$+Kim9-RX|RlFV1SPk%Lc-KrNd8E!ORCh z1L@3%V$S^fn5Fvo$6!Gr-}MKOs?G9HgH0qZFi zg6qm+vXN8E1=24x>vlU?m#q--FhgTO}= z9Tfr_6$2SjTtrck9}rPv2L)05lMI$S9jIq@3Fe`wn*eM317Rz`)e(FQvf5MO>sG+O z<-n&EVs(ZOFl=3+nLxSaAmD-s2NR?K4^SkK0USV4Knl>%3fTQT;GgRXwe*aGcw!ve zKF`582OZByfNBEa3wxH}nAynVWIM>^0@!4K#L%Iz&D1KVVb(V~cDP8VdhZX*8|rBK zgc4i31-e}byi21l#SAuMpvCE6m~)}8zKFdA@KT|e$wXvfQo&5kM%0o8jWdH>g0OcanNV7 zgFdH2r#+Zw1!j3QQ0PX-=jOxf7C3&l7@qgC<9mJKecfgJuL3y;a(poLz=LnufmHb6 zG{+OqgM4H--gqtiF|`awASox|2MVz+&<)!k4(4DsR*B?8{~0S8>)*Cm0np<-DgoHa zId zr$fE2*P0QTv;3F7?VpRgy3S73ADi~s^zj#FoR0r|OyRZxy<>~!)W|-P{zq)%3(s9R MJi5io@nKv34?+vv-2eap diff --git a/Dependencies/GWCA/gwca.exp b/Dependencies/GWCA/gwca.exp index 8045c53d588cc9ecdd9b10ba8ce18ba5b8fe20bc..8e36a7bab679e30d1e5bae824042873611f43f11 100644 GIT binary patch literal 153687 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 E50D8dAOHXW literal 146597 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 From a044e903044010d773a1a8f451237b427c4cb66e Mon Sep 17 00:00:00 2001 From: Macocian Alexandru Victor Date: Sun, 30 Aug 2026 20:37:45 +0200 Subject: [PATCH 3/4] Setup stable computer name in Wine prefix (Closes #1609) (#1611) --- .../Startup/Actions/SetupWinePrefixAction.cs | 27 +++++++ .../Services/Wine/IWinePrefixManager.cs | 7 ++ .../Services/Wine/WinePrefixManager.cs | 72 +++++++++++++++++++ 3 files changed, 106 insertions(+) diff --git a/Daybreak.Linux/Services/Startup/Actions/SetupWinePrefixAction.cs b/Daybreak.Linux/Services/Startup/Actions/SetupWinePrefixAction.cs index 75e47eda..224802fb 100644 --- a/Daybreak.Linux/Services/Startup/Actions/SetupWinePrefixAction.cs +++ b/Daybreak.Linux/Services/Startup/Actions/SetupWinePrefixAction.cs @@ -53,4 +53,31 @@ public override void ExecuteOnStartup() expirationTime: Global.NotificationLongExpiration ); } + + public override async Task ExecuteOnStartupAsync(CancellationToken cancellationToken) + { + if ( + !this.winePrefixManager.IsAvailable() + || !this.winePrefixManager.IsInitialized() + ) + { + return; + } + + var scopedLogger = this.logger.CreateScopedLogger(); + if (await this.winePrefixManager.ConfigureComputerName(cancellationToken)) + { + scopedLogger.LogDebug("Wine computer name configuration is up to date"); + return; + } + + scopedLogger.LogError( + "Failed to configure the Linux host name as the Wine computer name" + ); + this.notificationService.NotifyError( + title: "Wine prefix configuration failed", + description: "Daybreak could not configure the Linux host name as the Wine computer name. Check the logs for details.", + expirationTime: DateTime.UtcNow + TimeSpan.FromSeconds(30) + ); + } } diff --git a/Daybreak.Linux/Services/Wine/IWinePrefixManager.cs b/Daybreak.Linux/Services/Wine/IWinePrefixManager.cs index e04d8df0..e162164c 100644 --- a/Daybreak.Linux/Services/Wine/IWinePrefixManager.cs +++ b/Daybreak.Linux/Services/Wine/IWinePrefixManager.cs @@ -30,6 +30,13 @@ public interface IWinePrefixManager : IModService /// string GetWinePrefixPath(); + ///