mirror of
https://github.com/CookiePLMonster/SilentPatch.git
synced 2024-12-29 15:23:02 +05:00
III: Register Skimmer for SIT_IN_BOAT if an old version of III Aircraft is installed
This commit is contained in:
parent
1162f4d4bd
commit
c2aa895cbf
1 changed files with 28 additions and 0 deletions
|
@ -25,6 +25,28 @@
|
||||||
|
|
||||||
EXTERN_C IMAGE_DOS_HEADER __ImageBase;
|
EXTERN_C IMAGE_DOS_HEADER __ImageBase;
|
||||||
|
|
||||||
|
// ============= Mod compatibility stuff =============
|
||||||
|
|
||||||
|
namespace ModCompat
|
||||||
|
{
|
||||||
|
// If an old version of III Aircraft is installed, register Skimmer for the "Sit in boat" feature.
|
||||||
|
// If III Aircraft is ever updated, it will start exporting GetBuildNumber and will be expected to register
|
||||||
|
// Skimmer with SilentPatch by itself (in case an update un-hardcodes its ID). For the current builds, do it ourselves.
|
||||||
|
bool IIIAircraftNeedsSkimmerFallback(HMODULE module)
|
||||||
|
{
|
||||||
|
if (module == nullptr) return false; // III Aircraft not installed
|
||||||
|
|
||||||
|
bool bOldModVersion = true;
|
||||||
|
|
||||||
|
auto func = (uint32_t(*)())GetProcAddress(module, "GetBuildNumber");
|
||||||
|
if (func != nullptr)
|
||||||
|
{
|
||||||
|
bOldModVersion = func() < 0x200;
|
||||||
|
}
|
||||||
|
return bOldModVersion;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct PsGlobalType
|
struct PsGlobalType
|
||||||
{
|
{
|
||||||
HWND window;
|
HWND window;
|
||||||
|
@ -825,6 +847,7 @@ void InjectDelayedPatches_III_Common( bool bHasDebugMenu, const wchar_t* wcModul
|
||||||
const ModuleList moduleList;
|
const ModuleList moduleList;
|
||||||
|
|
||||||
const HMODULE skygfxModule = moduleList.Get(L"skygfx");
|
const HMODULE skygfxModule = moduleList.Get(L"skygfx");
|
||||||
|
const HMODULE iiiAircraftModule = moduleList.Get(L"IIIAircraft");
|
||||||
if (skygfxModule != nullptr)
|
if (skygfxModule != nullptr)
|
||||||
{
|
{
|
||||||
auto attachCarPipe = reinterpret_cast<void(*)(RwObject*)>(GetProcAddress(skygfxModule, "AttachCarPipeToRwObject"));
|
auto attachCarPipe = reinterpret_cast<void(*)(RwObject*)>(GetProcAddress(skygfxModule, "AttachCarPipeToRwObject"));
|
||||||
|
@ -834,6 +857,11 @@ void InjectDelayedPatches_III_Common( bool bHasDebugMenu, const wchar_t* wcModul
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ModCompat::IIIAircraftNeedsSkimmerFallback(iiiAircraftModule))
|
||||||
|
{
|
||||||
|
SVF::RegisterFeature(156, SVF::Feature::SIT_IN_BOAT);
|
||||||
|
}
|
||||||
|
|
||||||
// Locale based metric/imperial system INI/debug menu
|
// Locale based metric/imperial system INI/debug menu
|
||||||
{
|
{
|
||||||
using namespace Localization;
|
using namespace Localization;
|
||||||
|
|
Loading…
Reference in a new issue