Merge branch 'master' of somewhatlurker/PD-Loader into master
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
#include "ScoreSaver.h"
|
||||
#include "GameState.h"
|
||||
#include "../Constants.h"
|
||||
#include "../framework.h"
|
||||
#include "../Utilities/Operations.h"
|
||||
@@ -22,11 +23,6 @@ namespace TLAC::Components
|
||||
|
||||
ScoreSaver::~ScoreSaver()
|
||||
{
|
||||
for (int diff = 0; diff < 4; diff++)
|
||||
{
|
||||
*(DivaScore**)(PLAYER_DATA_ADDRESS + diff * 0x18 + 0x5d0) = 0;
|
||||
*(DivaScore**)(PLAYER_DATA_ADDRESS + diff * 0x18 + 0x5d8) = 0;
|
||||
}
|
||||
}
|
||||
|
||||
const char* ScoreSaver::GetDisplayName()
|
||||
@@ -34,14 +30,8 @@ namespace TLAC::Components
|
||||
return "score_saver";
|
||||
}
|
||||
|
||||
bool(__stdcall* ScoreSaver::divaInitResults)(void* cls) = (bool(__stdcall*)(void* cls))RESULTS_INIT_ADDRESS;
|
||||
void ScoreSaver::Initialize(ComponentsManager*)
|
||||
void ScoreSaver::initCache()
|
||||
{
|
||||
DetourTransactionBegin();
|
||||
DetourUpdateThread(GetCurrentThread());
|
||||
DetourAttach(&(PVOID&)ScoreSaver::divaInitResults, (PVOID)(ScoreSaver::hookedInitResults));
|
||||
DetourTransactionCommit();
|
||||
|
||||
// build the score cache
|
||||
UpdateScoreCache();
|
||||
UpdateClearCounts();
|
||||
@@ -54,6 +44,18 @@ namespace TLAC::Components
|
||||
}
|
||||
}
|
||||
|
||||
bool(__stdcall* ScoreSaver::divaInitResults)(void* cls) = (bool(__stdcall*)(void* cls))RESULTS_INIT_ADDRESS;
|
||||
std::thread ScoreSaver::initThread;
|
||||
void ScoreSaver::Initialize(ComponentsManager*)
|
||||
{
|
||||
DetourTransactionBegin();
|
||||
DetourUpdateThread(GetCurrentThread());
|
||||
DetourAttach(&(PVOID&)ScoreSaver::divaInitResults, (PVOID)(ScoreSaver::hookedInitResults));
|
||||
DetourTransactionCommit();
|
||||
|
||||
initThread = std::thread(initCache);
|
||||
}
|
||||
|
||||
bool ScoreSaver::checkExistingScoreValid(int pv, int difficulty, int isEx)
|
||||
{
|
||||
WCHAR keyBase[32]; // needs to be big enough to store pv.999.diff.3.ex
|
||||
@@ -313,7 +315,12 @@ namespace TLAC::Components
|
||||
|
||||
void ScoreSaver::Update()
|
||||
{
|
||||
return;
|
||||
if (*(GameState*)CURRENT_GAME_STATE_ADDRESS == GS_GAME && *(SubGameState*)CURRENT_GAME_SUB_STATE_ADDRESS == SUB_SELECTOR && initThread.joinable())
|
||||
{
|
||||
// it's actually fine to let the init happen in the background after reaching game state, but this is probably safer
|
||||
printf("[ScoreSaver] Waiting for initialisation...");
|
||||
initThread.join();
|
||||
}
|
||||
}
|
||||
|
||||
void ScoreSaver::UpdateInput()
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "../Constants.h"
|
||||
#include <windows.h>
|
||||
#include <vector>
|
||||
#include <thread>
|
||||
|
||||
namespace TLAC::Components
|
||||
{
|
||||
@@ -109,10 +110,12 @@ namespace TLAC::Components
|
||||
static bool(__stdcall* divaInitResults)(void* cls);
|
||||
static bool hookedInitResults(void* cls);
|
||||
static void InjectCode(void* address, const std::vector<uint8_t> data);
|
||||
static void initCache();
|
||||
static bool checkExistingScoreValid(int pv, int difficulty, int isEx);
|
||||
static int calculateCheck(int score, int cntCools, int cntFines, int percent, int combo, int clearRank, int allTimeRank, int allTimeModifiers, int allTimePercent);
|
||||
|
||||
static WCHAR configPath[256];
|
||||
static WCHAR rival_configPath[256];
|
||||
static std::thread initThread;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
<AdditionalIncludeDirectories>..\..\..\dependencies\detours\include;..\..\..\dependencies\freeglut\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\..\..\dependencies\PluginConfigApi;..\..\..\dependencies\detours\include;..\..\..\dependencies\freeglut\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@@ -139,7 +139,7 @@
|
||||
<PrecompiledHeaderFile>
|
||||
</PrecompiledHeaderFile>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
<AdditionalIncludeDirectories>..\..\..\dependencies\detours\include;..\..\..\dependencies\freeglut\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\..\..\dependencies\PluginConfigApi;..\..\..\dependencies\detours\include;..\..\..\dependencies\freeglut\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@@ -225,6 +225,7 @@
|
||||
<ClInclude Include="Input\Mouse\MouseState.h" />
|
||||
<ClInclude Include="Input\Xinput\Xinput.h" />
|
||||
<ClInclude Include="Input\Xinput\XinputState.h" />
|
||||
<ClInclude Include="pluginconfig.h" />
|
||||
<ClInclude Include="Utilities\EnumBitwiseOperations.h" />
|
||||
<ClInclude Include="Utilities\Math.h" />
|
||||
<ClInclude Include="Utilities\Operations.h" />
|
||||
|
||||
@@ -195,6 +195,9 @@
|
||||
<ClInclude Include="Components\ScoreSaver.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="pluginconfig.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="dllmain.cpp">
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <stdio.h>
|
||||
#include "Constants.h"
|
||||
#include "framework.h"
|
||||
#include "pluginconfig.h"
|
||||
#include "Input/Mouse/Mouse.h"
|
||||
#include "Input/Xinput/Xinput.h"
|
||||
#include "Input/Keyboard/Keyboard.h"
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
#include "PluginConfigApi.h"
|
||||
|
||||
using namespace PluginConfig;
|
||||
|
||||
extern "C" __declspec(dllexport) LPCWSTR GetPluginName(void)
|
||||
{
|
||||
return L"TLAC";
|
||||
}
|
||||
|
||||
extern "C" __declspec(dllexport) LPCWSTR GetPluginDescription(void)
|
||||
{
|
||||
return L"Provides keyboard/mouse/controller input, player data management, bug fixes for running on more PCs, etc.\nThis plugin is required.";
|
||||
}
|
||||
Reference in New Issue
Block a user