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