From 21d7e1bc8f21715b78ed13489e5bce1cc5960290 Mon Sep 17 00:00:00 2001 From: Delta <46466697+DeltaGW2@users.noreply.github.com> Date: Tue, 16 Apr 2024 21:15:53 +0200 Subject: [PATCH] add unofficial extras support --- .gitmodules | 5 ++- GW2Nexus-ArcDPSBridge.vcxproj | 8 +++++ GW2Nexus-ArcDPSBridge.vcxproj.filters | 21 ++++++++++++ src/entry.cpp | 48 ++++++++++++++++++++++++++- src/unofficial_extras | 1 + 5 files changed, 81 insertions(+), 2 deletions(-) create mode 160000 src/unofficial_extras diff --git a/.gitmodules b/.gitmodules index a2df862..505d509 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "src/nexus"] path = src/nexus - url = https://github.com/RaidcoreGG/RCGG-lib-nexus-api \ No newline at end of file + url = https://github.com/RaidcoreGG/RCGG-lib-nexus-api +[submodule "src/unofficial_extras"] + path = src/unofficial_extras + url = https://github.com/Krappa322/arcdps_unofficial_extras_releases diff --git a/GW2Nexus-ArcDPSBridge.vcxproj b/GW2Nexus-ArcDPSBridge.vcxproj index cd9bb18..964056d 100644 --- a/GW2Nexus-ArcDPSBridge.vcxproj +++ b/GW2Nexus-ArcDPSBridge.vcxproj @@ -62,6 +62,7 @@ NotUsing + stdcpp20 Windows @@ -84,6 +85,7 @@ NotUsing + stdcpp20 Windows @@ -99,10 +101,16 @@ + + + + + + diff --git a/GW2Nexus-ArcDPSBridge.vcxproj.filters b/GW2Nexus-ArcDPSBridge.vcxproj.filters index a371b05..5cf1f34 100644 --- a/GW2Nexus-ArcDPSBridge.vcxproj.filters +++ b/GW2Nexus-ArcDPSBridge.vcxproj.filters @@ -13,11 +13,20 @@ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + {3ffae431-27b1-4979-98cc-64d6122af344} + Source Files + + unofficial_extras + + + unofficial_extras + @@ -26,5 +35,17 @@ Header Files + + unofficial_extras + + + unofficial_extras + + + unofficial_extras + + + unofficial_extras + \ No newline at end of file diff --git a/src/entry.cpp b/src/entry.cpp index d9ffe9d..58a9f00 100644 --- a/src/entry.cpp +++ b/src/entry.cpp @@ -5,6 +5,7 @@ #include "nexus/Nexus.h" #include "ArcDPS.h" +#include "unofficial_extras/Definitions.h" BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { @@ -137,4 +138,49 @@ uintptr_t mod_combat(const char* channel, cbtevent* ev, ag* src, ag* dst, char* } return 0; -} \ No newline at end of file +} + +struct SquadUpdate_t +{ + UserInfo* UserInfo; + uint64_t UsersCount; +}; + +void SquadUpdate(const UserInfo* pUpdatedUsers, uint64_t pUpdatedUsersCount) +{ + SquadUpdate_t sqUpdate{ + const_cast(pUpdatedUsers), + pUpdatedUsersCount + }; + + APIDefs->RaiseEvent("EV_UNOFFICIAL_EXTRAS_SQUAD_UPDATE", (void*)&sqUpdate); +} + +void LanguageChanged(Language pNewLanguage) +{ + APIDefs->RaiseEvent("EV_UNOFFICIAL_EXTRAS_LANGUAGE_CHANGED", (void*)&pNewLanguage); +} + +void KeyBindChanged(KeyBinds::KeyBindChanged pChangedKeyBind) +{ + APIDefs->RaiseEvent("EV_UNOFFICIAL_EXTRAS_KEYBIND_CHANGED", (void*)&pChangedKeyBind); +} + +void ChatMessage(const ChatMessageInfo* pChatMessage) +{ + APIDefs->RaiseEvent("EV_UNOFFICIAL_EXTRAS_CHAT_MESSAGE", (void*)pChatMessage); +} + +extern "C" __declspec(dllexport) void arcdps_unofficial_extras_subscriber_init(const ExtrasAddonInfo* pExtrasInfo, void* pSubscriberInfo) { + // MaxInfoVersion has to be higher to have enough space to hold this object + if (pExtrasInfo->ApiVersion == 2 && pExtrasInfo->MaxInfoVersion >= 2) + { + const auto subscriber_info = static_cast(pSubscriberInfo); + subscriber_info->InfoVersion = 2; + subscriber_info->SubscriberName = "Nexus ArcDPS Bridge"; + subscriber_info->SquadUpdateCallback = SquadUpdate; + subscriber_info->LanguageChangedCallback = LanguageChanged; + subscriber_info->KeyBindChangedCallback = KeyBindChanged; + subscriber_info->ChatMessageCallback = ChatMessage; + } +} diff --git a/src/unofficial_extras b/src/unofficial_extras new file mode 160000 index 0000000..2cb56d6 --- /dev/null +++ b/src/unofficial_extras @@ -0,0 +1 @@ +Subproject commit 2cb56d69cfbea4c7394fe04e21436fc44f2a543d