Skip to content

Commit

Permalink
some changes
Browse files Browse the repository at this point in the history
  • Loading branch information
DeltaGW2 committed Feb 19, 2024
1 parent 2a5dc46 commit 96ebdb9
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 106 deletions.
49 changes: 49 additions & 0 deletions .github/workflows/msbuild.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

name: MSBuild

on:
push:
branches: [ "main" ]

env:
# Path to the solution file relative to the root of the project.
SOLUTION_FILE_PATH: .

# Configuration type to build.
# You can convert this to a build matrix if you need coverage of multiple configuration types.
# https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
BUILD_CONFIGURATION: Release

permissions:
contents: write

jobs:
build:
runs-on: windows-latest

steps:
- uses: actions/checkout@v3

- name: Add MSBuild to PATH
uses: microsoft/[email protected]

- name: Restore NuGet packages
working-directory: ${{env.GITHUB_WORKSPACE}}
run: nuget restore ${{env.SOLUTION_FILE_PATH}}

- name: Build
working-directory: ${{env.GITHUB_WORKSPACE}}
# Add additional options to the MSBuild command line here (like platform or verbosity level).
# See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
run: msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}}

- name: Archive files
uses: actions/upload-artifact@v4
with:
name: arcdps_integration64
path: |
x64/arcdps_integration64.dll
4 changes: 4 additions & 0 deletions GW2Nexus-ArcDPSBridge.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,13 @@
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(SolutionDir)$(Platform)\</OutDir>
<IntDir>$(Platform)\</IntDir>
<TargetName>arcdps_integration64</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(SolutionDir)$(Platform)\</OutDir>
<IntDir>$(Platform)\</IntDir>
<TargetName>arcdps_integration64</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
Expand Down
131 changes: 25 additions & 106 deletions src/entry.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,9 @@ struct EvCombatData
void AddonLoad(AddonAPI* aApi);
void AddonUnload();

AddonDefinition* AddonDef = nullptr;
AddonDefinition AddonDef = {};
AddonAPI* APIDefs = nullptr;

std::mutex Mutex;
std::vector<EvCombatData*> evCombatEvents;

arcdps_exports arc_exports;
uint32_t cbtcount = 0;
extern "C" __declspec(dllexport) void* get_init_addr(char* arcversion, ImGuiContext* imguictx, void* id3dptr, HANDLE arcdll, void* mallocfn, void* freefn, uint32_t d3dversion);
Expand All @@ -51,20 +48,20 @@ uintptr_t mod_combat(const char* channel, cbtevent* ev, ag* src, ag* dst, char*

extern "C" __declspec(dllexport) AddonDefinition* GetAddonDef()
{
AddonDef = new AddonDefinition();
AddonDef->Signature = -19392669;
AddonDef->APIVersion = NEXUS_API_VERSION;
AddonDef->Name = "Nexus ArcDPS Bridge";
AddonDef->Version.Major = 1;
AddonDef->Version.Minor = 0;
AddonDef->Version.Build = 0;
AddonDef->Version.Revision = 1;
AddonDef->Author = "Raidcore";
AddonDef->Description = "Adds events for the ArcDPS combat API.";
AddonDef->Load = AddonLoad;
AddonDef->Unload = AddonUnload;

return AddonDef;
AddonDef.Signature = -19392669;
AddonDef.APIVersion = NEXUS_API_VERSION;
AddonDef.Name = "Nexus ArcDPS Bridge";
AddonDef.Version.Major = 1;
AddonDef.Version.Minor = 0;
AddonDef.Version.Build = 0;
AddonDef.Version.Revision = 1;
AddonDef.Author = "Raidcore";
AddonDef.Description = "Raises Nexus Events from ArcDPS combat API callbacks.";
AddonDef.Load = AddonLoad;
AddonDef.Unload = AddonUnload;
AddonDef.Flags = EAddonFlags_DisableHotloading;

return &AddonDef;
}

void AddonLoad(AddonAPI* aApi)
Expand Down Expand Up @@ -118,103 +115,25 @@ uintptr_t mod_combat_local(cbtevent* ev, ag* src, ag* dst, char* skillname, uint

uintptr_t mod_combat(const char* channel, cbtevent* ev, ag* src, ag* dst, char* skillname, uint64_t id, uint64_t revision)
{
/*Mutex.lock();
if (evCombatEvents.size() > 1000)
{
for (size_t i = 0; i < 500; i++)
{
if (evCombatEvents[i]->src && evCombatEvents[i]->src->name)
{
delete[] evCombatEvents[i]->src->name;
}
if (evCombatEvents[i]->dst && evCombatEvents[i]->dst->name)
{
delete[] evCombatEvents[i]->dst->name;
}
if (evCombatEvents[i]->skillname)
{
delete[] evCombatEvents[i]->skillname;
}
if (evCombatEvents[i]->src)
{
delete evCombatEvents[i]->src;
}
if (evCombatEvents[i]->dst)
{
delete evCombatEvents[i]->dst;
}
delete evCombatEvents[i];
}
for (size_t i = 0; i < 500; i++)
{
evCombatEvents.erase(evCombatEvents.begin());
}
}
Mutex.unlock();*/

EvCombatData* evCbtData = new EvCombatData();
evCbtData->ev = ev != nullptr ? new cbtevent(*ev) : nullptr;
evCbtData->src = src != nullptr ? new ag(*src) : nullptr;
if (evCbtData->src && evCbtData->src->name)
{
size_t szSrcName = strlen(src->name) + 1;
if (szSrcName > 1)
{
char* sSrcName = new char[szSrcName];
strcpy_s(sSrcName, szSrcName, src->name);
evCbtData->src->name = sSrcName;
}
else
{
evCbtData->src->name = nullptr;
}
}
evCbtData->dst = dst != nullptr ? new ag(*dst) : nullptr;
if (evCbtData->dst && evCbtData->dst->name)
{
size_t szDstName = strlen(dst->name) + 1;
if (szDstName > 1)
{
char* sDstName = new char[szDstName];
strcpy_s(sDstName, szDstName, dst->name);
evCbtData->dst->name = sDstName;
}
else
{
evCbtData->dst->name = nullptr;
}
}
if (skillname)
EvCombatData evCbtData
{
size_t szSkName = strlen(skillname) + 1;
if (szSkName > 1)
{
char* sSkName = new char[szSkName];
strcpy_s(sSkName, szSkName, skillname);
evCbtData->skillname = sSkName;
}
else
{
evCbtData->skillname = nullptr;
}
}
evCbtData->id = id;
evCbtData->revision = revision;

Mutex.lock();
evCombatEvents.push_back(evCbtData);
Mutex.unlock();
ev,
src,
dst,
skillname,
id,
revision
};

if (APIDefs != nullptr)
{
if (strcmp(channel, "local") == 0)
{
APIDefs->RaiseEvent("EV_ARC_COMBATEVENT_LOCAL", evCbtData);
APIDefs->RaiseEvent("EV_ARCDPS_COMBATEVENT_LOCAL_RAW", &evCbtData);
}
else
{
APIDefs->RaiseEvent("EV_ARC_COMBATEVENT_SQUAD", evCbtData);
APIDefs->RaiseEvent("EV_ARCDPS_COMBATEVENT_SQUAD_RAW", &evCbtData);
}
}

Expand Down

0 comments on commit 96ebdb9

Please sign in to comment.