mirror of
https://github.com/CookiePLMonster/SilentPatch.git
synced 2024-11-22 13:32:36 +01:00
Perform static initialization with lambdas
This commit is contained in:
parent
d767bf9766
commit
71cfde4d8e
@ -608,16 +608,14 @@ static size_t ScriptFileSize, ScriptMissionSize;
|
|||||||
|
|
||||||
static void InitializeScriptGlobals()
|
static void InitializeScriptGlobals()
|
||||||
{
|
{
|
||||||
static bool bInitScriptStuff = false;
|
static bool bInitScriptStuff = [] () {;
|
||||||
if ( !bInitScriptStuff )
|
|
||||||
{
|
|
||||||
ScriptSpace = *AddressByVersion<unsigned char**>(0x5D5380, 0x5D5B60, 0x450E34);
|
ScriptSpace = *AddressByVersion<unsigned char**>(0x5D5380, 0x5D5B60, 0x450E34);
|
||||||
ScriptParams = *AddressByVersion<int**>(0x48995B, 0x46410A, 0x46979A);
|
ScriptParams = *AddressByVersion<int**>(0x48995B, 0x46410A, 0x46979A);
|
||||||
ScriptFileSize = *AddressByVersion<size_t*>( 0x468E74+1, 0, 0x46E572+1);
|
ScriptFileSize = *AddressByVersion<size_t*>( 0x468E74+1, 0, 0x46E572+1);
|
||||||
ScriptMissionSize = *AddressByVersion<size_t*>( 0x489A5A+1, 0, 0x490798+1);
|
ScriptMissionSize = *AddressByVersion<size_t*>( 0x489A5A+1, 0, 0x490798+1);
|
||||||
|
|
||||||
bInitScriptStuff = true;
|
return true;
|
||||||
}
|
} ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void SweetsGirlFix()
|
static void SweetsGirlFix()
|
||||||
@ -724,24 +722,19 @@ bool GetCurrentZoneLockedOrUnlocked_Steam(float fPosX, float fPosY)
|
|||||||
// By NTAuthority
|
// By NTAuthority
|
||||||
void DrawMoonWithPhases(int moonColor, float* screenPos, float sizeX, float sizeY)
|
void DrawMoonWithPhases(int moonColor, float* screenPos, float sizeX, float sizeY)
|
||||||
{
|
{
|
||||||
static RwTexture* gpMoonMask = nullptr;
|
static RwTexture* gpMoonMask = [] () {
|
||||||
|
|
||||||
if ( gpMoonMask == nullptr )
|
|
||||||
{
|
|
||||||
if ( GetFileAttributesW(L"lunar.png") != INVALID_FILE_ATTRIBUTES )
|
if ( GetFileAttributesW(L"lunar.png") != INVALID_FILE_ATTRIBUTES )
|
||||||
{
|
{
|
||||||
// load from file
|
// load from file
|
||||||
gpMoonMask = CPNGFile::ReadFromFile("lunar.png");
|
return CPNGFile::ReadFromFile("lunar.png");
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
// Load from memory
|
|
||||||
HRSRC resource = FindResourceW(hDLLModule, MAKEINTRESOURCE(IDR_LUNAR64), RT_RCDATA);
|
|
||||||
void* pMoonMask = LockResource( LoadResource(hDLLModule, resource) );
|
|
||||||
|
|
||||||
gpMoonMask = CPNGFile::ReadFromMemory(pMoonMask, SizeofResource(hDLLModule, resource));
|
// Load from memory
|
||||||
}
|
HRSRC resource = FindResourceW(hDLLModule, MAKEINTRESOURCE(IDR_LUNAR64), RT_RCDATA);
|
||||||
}
|
void* pMoonMask = LockResource( LoadResource(hDLLModule, resource) );
|
||||||
|
|
||||||
|
return CPNGFile::ReadFromMemory(pMoonMask, SizeofResource(hDLLModule, resource));
|
||||||
|
} ();
|
||||||
//D3DPERF_BeginEvent(D3DCOLOR_ARGB(0,0,0,0), L"render moon");
|
//D3DPERF_BeginEvent(D3DCOLOR_ARGB(0,0,0,0), L"render moon");
|
||||||
|
|
||||||
float currentDayFraction = nGameClockDays / 31.0f;
|
float currentDayFraction = nGameClockDays / 31.0f;
|
||||||
@ -757,7 +750,7 @@ void DrawMoonWithPhases(int moonColor, float* screenPos, float sizeX, float size
|
|||||||
|
|
||||||
RenderOneXLUSprite(screenPos[0], screenPos[1], fFarClipZ, sizeX * size, sizeY * size, 0, 0, 0, 0, a10, -1, 0, 0);
|
RenderOneXLUSprite(screenPos[0], screenPos[1], fFarClipZ, sizeX * size, sizeY * size, 0, 0, 0, 0, a10, -1, 0, 0);
|
||||||
|
|
||||||
RwRenderStateSet(rwRENDERSTATETEXTURERASTER, RwTextureGetRaster(gpMoonMask));
|
RwRenderStateSet(rwRENDERSTATETEXTURERASTER, gpMoonMask != nullptr ? RwTextureGetRaster(gpMoonMask) : nullptr );
|
||||||
RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDINVSRCCOLOR);
|
RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDINVSRCCOLOR);
|
||||||
RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCCOLOR);
|
RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCCOLOR);
|
||||||
|
|
||||||
@ -819,9 +812,8 @@ char* GetMyDocumentsPath()
|
|||||||
static char cUserFilesPath[MAX_PATH];
|
static char cUserFilesPath[MAX_PATH];
|
||||||
static char* const ppTempBufPtr = *GetVer() == 0 ? *AddressByRegion_10<char**>(0x744FE5) : cUserFilesPath;
|
static char* const ppTempBufPtr = *GetVer() == 0 ? *AddressByRegion_10<char**>(0x744FE5) : cUserFilesPath;
|
||||||
|
|
||||||
if (ppTempBufPtr[0] == '\0')
|
static bool initPath = [&] () {
|
||||||
{
|
char** const ppUserFilesDir = AddressByVersion<char**>(0x74503F, 0x74586F, 0x77EE50, 0x77902B, 0x778F1B);
|
||||||
static char** const ppUserFilesDir = AddressByVersion<char**>(0x74503F, 0x74586F, 0x77EE50, 0x77902B, 0x778F1B);
|
|
||||||
|
|
||||||
char cTmpPath[MAX_PATH];
|
char cTmpPath[MAX_PATH];
|
||||||
|
|
||||||
@ -836,7 +828,9 @@ char* GetMyDocumentsPath()
|
|||||||
strcpy_s(cTmpPath, ppTempBufPtr);
|
strcpy_s(cTmpPath, ppTempBufPtr);
|
||||||
PathAppendA(cTmpPath, "User Tracks");
|
PathAppendA(cTmpPath, "User Tracks");
|
||||||
CreateDirectoryA(cTmpPath, nullptr);
|
CreateDirectoryA(cTmpPath, nullptr);
|
||||||
}
|
|
||||||
|
return true;
|
||||||
|
} ();
|
||||||
return ppTempBufPtr;
|
return ppTempBufPtr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -999,14 +993,14 @@ void UpdateEscalators()
|
|||||||
static char** pStencilShadowsPad = *AddressByVersion<char***>(0x70FC4F, 0, 0x75E286, 0x758A47, 0x758937);
|
static char** pStencilShadowsPad = *AddressByVersion<char***>(0x70FC4F, 0, 0x75E286, 0x758A47, 0x758937);
|
||||||
void StencilShadowAlloc( )
|
void StencilShadowAlloc( )
|
||||||
{
|
{
|
||||||
static char* pMemory = nullptr;
|
static char* pMemory = [] () {;
|
||||||
if ( pMemory == nullptr )
|
char* mem = static_cast<char*>( orgNewAlloc( 3 * 0x6000 ) );
|
||||||
{
|
pStencilShadowsPad[0] = mem;
|
||||||
pMemory = static_cast<char*>( orgNewAlloc( 3 * 0x6000 ) );
|
pStencilShadowsPad[1] = mem+0x6000;
|
||||||
pStencilShadowsPad[0] = pMemory;
|
pStencilShadowsPad[2] = mem+(2*0x6000);
|
||||||
pStencilShadowsPad[1] = pMemory+0x6000;
|
|
||||||
pStencilShadowsPad[2] = pMemory+(2*0x6000);
|
return mem;
|
||||||
}
|
} ();
|
||||||
}
|
}
|
||||||
|
|
||||||
RwBool GTARtAnimInterpolatorSetCurrentAnim(RtAnimInterpolator* animI, RtAnimAnimation* anim)
|
RwBool GTARtAnimInterpolatorSetCurrentAnim(RtAnimInterpolator* animI, RtAnimAnimation* anim)
|
||||||
|
Loading…
Reference in New Issue
Block a user