Skip to content

Commit 3af9cc6

Browse files
authored
Merge pull request #3 from Invisi/master
Reverts Ni's patch, re-adds arcdps references with chainloaded name
2 parents 79052a9 + 8df2027 commit 3af9cc6

File tree

1 file changed

+72
-11
lines changed

1 file changed

+72
-11
lines changed

src/arcdps_mechanicslog.cpp

Lines changed: 72 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,21 @@ uintptr_t mod_combat(cbtevent* ev, ag* src, ag* dst, char* skillname, uint64_t i
2828
uintptr_t mod_imgui(uint32_t not_charsel_or_loading);
2929
uintptr_t mod_options();
3030
static int changeExportPath(ImGuiTextEditCallbackData const *data);
31+
void readArcExports();
3132
void parseIni();
3233
void writeIni();
34+
bool canMoveWindows();
3335

3436
typedef uint64_t(*arc_export_func_u64)();
37+
auto arc_dll = LoadLibraryA(TEXT("gw2addon_arcdps.dll"));
38+
auto arc_export_e6 = (arc_export_func_u64)GetProcAddress(arc_dll, "e6");
39+
bool arc_movelock_altui = false;
40+
bool arc_clicklock_altui = false;
41+
42+
auto arc_export_e7 = (arc_export_func_u64)GetProcAddress(arc_dll, "e7");
43+
DWORD arc_global_mod1 = 0;
44+
DWORD arc_global_mod2 = 0;
45+
DWORD arc_global_mod_multi = 0;
3546

3647
bool show_app_log = false;
3748
AppLog log_ui;
@@ -154,6 +165,18 @@ uintptr_t mod_wnd(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
154165
}
155166
}
156167
}
168+
else if (uMsg == WM_ACTIVATEAPP) {
169+
if (!wParam)
170+
{
171+
io->KeysDown[arc_global_mod1] = false;
172+
io->KeysDown[arc_global_mod2] = false;
173+
}
174+
}
175+
176+
if (io->KeysDown[arc_global_mod1] && io->KeysDown[arc_global_mod2])
177+
{
178+
if (io->KeysDown[log_key] || io->KeysDown[chart_key]) return 0;
179+
}
157180

158181
return uMsg;
159182
}
@@ -304,39 +327,46 @@ uintptr_t mod_combat(cbtevent* ev, ag* src, ag* dst, char* skillname, uint64_t i
304327

305328
void ShowMechanicsLog(bool* p_open)
306329
{
307-
if(show_app_log) log_ui.draw("Mechanics Log", p_open, ImGuiWindowFlags_NoCollapse, &tracker);
330+
if(show_app_log) log_ui.draw("Mechanics Log", p_open, ImGuiWindowFlags_NoCollapse
331+
| (!canMoveWindows() ? ImGuiWindowFlags_NoMove : 0), &tracker);
308332
}
309333

310334
void ShowMechanicsChart(bool* p_open)
311335
{
312336
if (show_app_chart)
313337
{
314-
chart_ui.draw(&tracker, "Mechanics Chart", p_open, ImGuiWindowFlags_NoCollapse, true);
338+
chart_ui.draw(&tracker, "Mechanics Chart", p_open, ImGuiWindowFlags_NoCollapse
339+
| (!canMoveWindows() ? ImGuiWindowFlags_NoMove : 0), arc_clicklock_altui);
315340
}
316341
}
317342

318343
void ShowMechanicsOptions(bool* p_open)
319344
{
320345
if (show_options)
321346
{
322-
options_ui.draw(&tracker, "Mechanics Options", p_open, ImGuiWindowFlags_NoCollapse);
347+
options_ui.draw(&tracker, "Mechanics Options", p_open, ImGuiWindowFlags_NoCollapse
348+
| (!canMoveWindows() ? ImGuiWindowFlags_NoMove : 0));
323349
}
324350
}
325351

326352
uintptr_t mod_imgui(uint32_t not_charsel_or_loading)
327353
{
328-
354+
readArcExports();
355+
329356
if (!not_charsel_or_loading) return 0;
330357

331358
auto const io = &ImGui::GetIO();
332359

333-
if (ImGui::IsKeyPressed(log_key))
334-
{
335-
show_app_log = !show_app_log;
336-
}
337-
if (ImGui::IsKeyPressed(chart_key))
360+
if (io->KeysDown[arc_global_mod1] && io->KeysDown[arc_global_mod2])
338361
{
339-
show_app_chart = !show_app_chart;
362+
if (ImGui::IsKeyPressed(log_key))
363+
{
364+
show_app_log = !show_app_log;
365+
}
366+
if (ImGui::IsKeyPressed(chart_key))
367+
{
368+
show_app_chart = !show_app_chart;
369+
}
340370
}
341371

342372
ShowMechanicsLog(&show_app_log);
@@ -366,6 +396,23 @@ static int changeExportPath(ImGuiTextEditCallbackData const *data)
366396
chart_ui.export_dir = data->Buf;
367397
}
368398

399+
void readArcExports()
400+
{
401+
uint64_t e6_result = arc_export_e6();
402+
uint64_t e7_result = arc_export_e7();
403+
404+
arc_movelock_altui = (e6_result & 0x04);
405+
arc_clicklock_altui = (e6_result & 0x08);
406+
407+
uint16_t* ra = (uint16_t*)&e7_result;
408+
if (ra)
409+
{
410+
arc_global_mod1 = ra[0];
411+
arc_global_mod2 = ra[1];
412+
arc_global_mod_multi = ra[2];
413+
}
414+
}
415+
369416
void parseIni()
370417
{
371418
static bool has_read_ini = false;
@@ -439,4 +486,18 @@ void writeIni()
439486
}
440487

441488
rc = mechanics_ini.SaveFile("addons\\arcdps\\arcdps_mechanics.ini");
442-
}
489+
}
490+
491+
bool canMoveWindows()
492+
{
493+
if (!arc_movelock_altui)
494+
{
495+
return true;
496+
}
497+
else
498+
{
499+
auto io = &ImGui::GetIO();
500+
return io->KeysDown[arc_global_mod1] && io->KeysDown[arc_global_mod2];
501+
502+
}
503+
}

0 commit comments

Comments
 (0)