mirror of
https://github.com/halpz/re3.git
synced 2025-06-26 22:06:22 +00:00
Merge branch 'master' of https://github.com/gtamodding/re3
This commit is contained in:
@ -496,7 +496,7 @@ void CHud::Draw()
|
||||
fZoneAlpha = 255.0f;
|
||||
break;
|
||||
case 2:
|
||||
m_ZoneFadeTimer += (CTimer::GetTimeStep() * 0.02f * 1000.0f);
|
||||
m_ZoneFadeTimer += CTimer::GetTimeStepInMilliseconds();
|
||||
if (m_ZoneFadeTimer > 1000) {
|
||||
m_ZoneState = 1;
|
||||
m_ZoneFadeTimer = 1000;
|
||||
@ -504,7 +504,7 @@ void CHud::Draw()
|
||||
fZoneAlpha = m_ZoneFadeTimer * 0.001f * 255.0f;
|
||||
break;
|
||||
case 3:
|
||||
m_ZoneFadeTimer += (CTimer::GetTimeStep() * 0.02f * -1000.0f);
|
||||
m_ZoneFadeTimer -= CTimer::GetTimeStepInMilliseconds();
|
||||
if (m_ZoneFadeTimer < 0) {
|
||||
m_ZoneState = 0;
|
||||
m_ZoneFadeTimer = 0;
|
||||
@ -512,7 +512,7 @@ void CHud::Draw()
|
||||
fZoneAlpha = m_ZoneFadeTimer * 0.001f * 255.0f;
|
||||
break;
|
||||
case 4:
|
||||
m_ZoneFadeTimer += (CTimer::GetTimeStep() * 0.02f * -1000.0f);
|
||||
m_ZoneFadeTimer -= CTimer::GetTimeStepInMilliseconds();
|
||||
if (m_ZoneFadeTimer < 0) {
|
||||
m_ZoneFadeTimer = 0;
|
||||
m_ZoneToPrint = m_pLastZoneName;
|
||||
@ -526,7 +526,7 @@ void CHud::Draw()
|
||||
|
||||
}
|
||||
if (!m_Message[0]) {
|
||||
m_ZoneNameTimer += (CTimer::GetTimeStep() * 0.02f * 1000.0f);
|
||||
m_ZoneNameTimer += CTimer::GetTimeStepInMilliseconds();
|
||||
CFont::SetJustifyOff();
|
||||
CFont::SetPropOn();
|
||||
CFont::SetBackgroundOff();
|
||||
@ -592,7 +592,7 @@ void CHud::Draw()
|
||||
fVehicleAlpha = 255.0f;
|
||||
break;
|
||||
case 2:
|
||||
m_VehicleFadeTimer += (CTimer::GetTimeStep() * 0.02f * 1000.0f);
|
||||
m_VehicleFadeTimer += CTimer::GetTimeStepInMilliseconds();
|
||||
if (m_VehicleFadeTimer > 1000) {
|
||||
m_VehicleState = 1;
|
||||
m_VehicleFadeTimer = 1000;
|
||||
@ -600,7 +600,7 @@ void CHud::Draw()
|
||||
fVehicleAlpha = m_VehicleFadeTimer * 0.001f * 255.0f;
|
||||
break;
|
||||
case 3:
|
||||
m_VehicleFadeTimer += (CTimer::GetTimeStep() * 0.02f * -1000.0f);
|
||||
m_VehicleFadeTimer -= CTimer::GetTimeStepInMilliseconds();
|
||||
if (m_VehicleFadeTimer < 0) {
|
||||
m_VehicleState = 0;
|
||||
m_VehicleFadeTimer = 0;
|
||||
@ -608,7 +608,7 @@ void CHud::Draw()
|
||||
fVehicleAlpha = m_VehicleFadeTimer * 0.001f * 255.0f;
|
||||
break;
|
||||
case 4:
|
||||
m_VehicleFadeTimer += (CTimer::GetTimeStep() * 0.02f * -1000.0f);
|
||||
m_VehicleFadeTimer -= CTimer::GetTimeStepInMilliseconds();
|
||||
if (m_VehicleFadeTimer < 0) {
|
||||
m_VehicleFadeTimer = 0;
|
||||
m_pVehicleNameToPrint = m_pLastVehicleName;
|
||||
@ -622,7 +622,7 @@ void CHud::Draw()
|
||||
}
|
||||
|
||||
if (!m_Message[0]) {
|
||||
m_VehicleNameTimer += (CTimer::GetTimeStep() * 0.02f * 1000.0f);
|
||||
m_VehicleNameTimer += CTimer::GetTimeStepInMilliseconds();
|
||||
CFont::SetJustifyOff();
|
||||
CFont::SetPropOn();
|
||||
CFont::SetBackgroundOff();
|
||||
@ -924,11 +924,11 @@ void CHud::Draw()
|
||||
CFont::SetFontStyle(FONT_HEADING);
|
||||
|
||||
if (BigMessageX[0] >= (SCREEN_WIDTH - 20)) {
|
||||
BigMessageInUse[0] += (CTimer::GetTimeStep() * 0.02f * 120.0f);
|
||||
BigMessageInUse[0] += (CTimer::GetTimeStepInSeconds() * 120.0f);
|
||||
|
||||
if (BigMessageInUse[0] >= 120.0f) {
|
||||
BigMessageInUse[0] = 120.0;
|
||||
BigMessageAlpha[0] += (CTimer::GetTimeStep() * 0.02f * -255.0f);
|
||||
BigMessageAlpha[0] += (CTimer::GetTimeStepInSeconds() * -255.0f);
|
||||
}
|
||||
|
||||
if (BigMessageAlpha[0] <= 0.0f) {
|
||||
@ -937,8 +937,8 @@ void CHud::Draw()
|
||||
}
|
||||
}
|
||||
else {
|
||||
BigMessageX[0] += (CTimer::GetTimeStep() * 0.02f * 255.0f);
|
||||
BigMessageAlpha[0] += (CTimer::GetTimeStep() * 0.02f * 255.0f);
|
||||
BigMessageX[0] += (CTimer::GetTimeStepInSeconds() * 255.0f);
|
||||
BigMessageAlpha[0] += (CTimer::GetTimeStepInSeconds() * 255.0f);
|
||||
|
||||
if (BigMessageAlpha[0] >= 255.0f)
|
||||
BigMessageAlpha[0] = 255.0f;
|
||||
@ -963,7 +963,7 @@ void CHud::Draw()
|
||||
// WastedBustedText
|
||||
if (m_BigMessage[2][0]) {
|
||||
if (BigMessageInUse[2] != 0.0f) {
|
||||
BigMessageAlpha[2] += (CTimer::GetTimeStep() * 0.02f * 255.0f);
|
||||
BigMessageAlpha[2] += (CTimer::GetTimeStepInSeconds() * 255.0f);
|
||||
|
||||
if (BigMessageAlpha[2] > 255.0f)
|
||||
BigMessageAlpha[2] = 255.0;
|
||||
@ -1045,7 +1045,7 @@ void CHud::DrawAfterFade()
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
m_HelpMessageFadeTimer += 2 * (CTimer::GetTimeStep() * 0.02f * 1000.0f);
|
||||
m_HelpMessageFadeTimer += 2 * CTimer::GetTimeStepInMilliseconds();
|
||||
if (m_HelpMessageFadeTimer > 0) {
|
||||
m_HelpMessageState = 1;
|
||||
m_HelpMessageFadeTimer = 0;
|
||||
@ -1053,7 +1053,7 @@ void CHud::DrawAfterFade()
|
||||
fAlpha = m_HelpMessageFadeTimer * 0.001f * 255.0f;
|
||||
break;
|
||||
case 3:
|
||||
m_HelpMessageFadeTimer -= 2 * (CTimer::GetTimeStep() * 0.02f * 1000.0f);
|
||||
m_HelpMessageFadeTimer -= 2 * CTimer::GetTimeStepInMilliseconds();
|
||||
if (m_HelpMessageFadeTimer >= 0) {
|
||||
m_HelpMessageState = 0;
|
||||
m_HelpMessageFadeTimer = 0;
|
||||
@ -1061,7 +1061,7 @@ void CHud::DrawAfterFade()
|
||||
fAlpha = m_HelpMessageFadeTimer * 0.001f * 255.0f;
|
||||
break;
|
||||
case 4:
|
||||
m_HelpMessageFadeTimer -= 2 * (CTimer::GetTimeStep() * 0.02f * 1000.0f);
|
||||
m_HelpMessageFadeTimer -= 2 * CTimer::GetTimeStepInMilliseconds();
|
||||
if (m_HelpMessageFadeTimer >= 0) {
|
||||
m_HelpMessageState = 2;
|
||||
m_HelpMessageFadeTimer = 0;
|
||||
@ -1073,7 +1073,7 @@ void CHud::DrawAfterFade()
|
||||
break;
|
||||
}
|
||||
|
||||
m_HelpMessageTimer += (CTimer::GetTimeStep() * 0.02f * 1000.0f);
|
||||
m_HelpMessageTimer += CTimer::GetTimeStepInMilliseconds();
|
||||
|
||||
CFont::SetAlphaFade(fAlpha);
|
||||
CFont::SetCentreOff();
|
||||
@ -1121,7 +1121,7 @@ void CHud::DrawAfterFade()
|
||||
|
||||
// Oddjob result
|
||||
if (OddJob2OffTimer > 0)
|
||||
OddJob2OffTimer = OddJob2OffTimer - (CTimer::GetTimeStep() * 0.02f * 1000.0f);
|
||||
OddJob2OffTimer = OddJob2OffTimer - CTimer::GetTimeStepInMilliseconds();
|
||||
|
||||
static float fStep;
|
||||
if (!m_BigMessage[1][0] && m_BigMessage[4][0] && m_BigMessage[5][0] && OddJob2OffTimer <= 0.0f) {
|
||||
@ -1197,11 +1197,11 @@ void CHud::DrawAfterFade()
|
||||
CFont::SetRightJustifyOn();
|
||||
CFont::SetFontStyle(FONT_HEADING);
|
||||
if (BigMessageX[1] >= (SCREEN_WIDTH - 20)) {
|
||||
BigMessageInUse[1] += (CTimer::GetTimeStep() * 0.02f * 120.0f);
|
||||
BigMessageInUse[1] += (CTimer::GetTimeStepInSeconds() * 120.0f);
|
||||
|
||||
if (BigMessageInUse[1] >= 120.0f) {
|
||||
BigMessageInUse[1] = 120.0;
|
||||
BigMessageAlpha[1] += (CTimer::GetTimeStep() * 0.02f * -255.0f);
|
||||
BigMessageAlpha[1] += (CTimer::GetTimeStepInSeconds() * -255.0f);
|
||||
}
|
||||
if (BigMessageAlpha[1] <= 0) {
|
||||
m_BigMessage[1][0] = 0;
|
||||
@ -1209,8 +1209,8 @@ void CHud::DrawAfterFade()
|
||||
}
|
||||
}
|
||||
else {
|
||||
BigMessageX[1] += (CTimer::GetTimeStep() * 0.02f * 255.0f);
|
||||
BigMessageAlpha[1] += (CTimer::GetTimeStep() * 0.02f * 255.0f);
|
||||
BigMessageX[1] += (CTimer::GetTimeStepInSeconds() * 255.0f);
|
||||
BigMessageAlpha[1] += (CTimer::GetTimeStepInSeconds() * 255.0f);
|
||||
|
||||
if (BigMessageAlpha[1] >= 255.0f)
|
||||
BigMessageAlpha[1] = 255.0f;
|
||||
|
@ -6,7 +6,7 @@
|
||||
#include "Timecycle.h"
|
||||
#include "Coronas.h"
|
||||
#include "Weather.h"
|
||||
#include "CullZones.h"
|
||||
#include "ZoneCull.h"
|
||||
#include "Frontend.h"
|
||||
|
||||
RpLight *&pAmbient = *(RpLight**)0x885B6C;
|
||||
|
@ -74,7 +74,7 @@ public:
|
||||
static void RemovePSystem(tParticleType type);
|
||||
static void RemoveParticle(CParticle *pParticle, CParticle *pPrevParticle, tParticleSystemData *pPSystemData);
|
||||
|
||||
static inline void _Next(CParticle *&pParticle, CParticle *&pPrevParticle, tParticleSystemData *pPSystemData, bool bRemoveParticle)
|
||||
static void _Next(CParticle *&pParticle, CParticle *&pPrevParticle, tParticleSystemData *pPSystemData, bool bRemoveParticle)
|
||||
{
|
||||
if ( bRemoveParticle )
|
||||
{
|
||||
|
322
src/render/Timecycle.cpp
Normal file
322
src/render/Timecycle.cpp
Normal file
@ -0,0 +1,322 @@
|
||||
#include "common.h"
|
||||
#include "patcher.h"
|
||||
#include "main.h"
|
||||
#include "Clock.h"
|
||||
#include "Weather.h"
|
||||
#include "Camera.h"
|
||||
#include "Shadows.h"
|
||||
#include "ZoneCull.h"
|
||||
#include "CutsceneMgr.h"
|
||||
#include "FileMgr.h"
|
||||
#include "Timecycle.h"
|
||||
|
||||
int (*CTimeCycle::m_nAmbientRed)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x86AF78;
|
||||
int (*CTimeCycle::m_nAmbientGreen)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x665308;
|
||||
int (*CTimeCycle::m_nAmbientBlue)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x72CF88;
|
||||
int (*CTimeCycle::m_nDirectionalRed)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x6FAB78;
|
||||
int (*CTimeCycle::m_nDirectionalGreen)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x6F4528;
|
||||
int (*CTimeCycle::m_nDirectionalBlue)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x83CE58;
|
||||
int (*CTimeCycle::m_nSkyTopRed)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x87FB90;
|
||||
int (*CTimeCycle::m_nSkyTopGreen)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x8460A8;
|
||||
int (*CTimeCycle::m_nSkyTopBlue)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x87B158;
|
||||
int (*CTimeCycle::m_nSkyBottomRed)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x6FA960;
|
||||
int (*CTimeCycle::m_nSkyBottomGreen)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x70D6A8;
|
||||
int (*CTimeCycle::m_nSkyBottomBlue)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x83D288;
|
||||
int (*CTimeCycle::m_nSunCoreRed)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x878360;
|
||||
int (*CTimeCycle::m_nSunCoreGreen)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x6EE088;
|
||||
int (*CTimeCycle::m_nSunCoreBlue)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x773A68;
|
||||
int (*CTimeCycle::m_nSunCoronaRed)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x664B60;
|
||||
int (*CTimeCycle::m_nSunCoronaGreen)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x6F01E0;
|
||||
int (*CTimeCycle::m_nSunCoronaBlue)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x6E6340;
|
||||
float (*CTimeCycle::m_fSunSize)[NUMWEATHERS] = (float(*)[NUMWEATHERS])0x733510;
|
||||
float (*CTimeCycle::m_fSpriteSize)[NUMWEATHERS] = (float(*)[NUMWEATHERS])0x87F820;
|
||||
float (*CTimeCycle::m_fSpriteBrightness)[NUMWEATHERS] = (float(*)[NUMWEATHERS])0x6E96F0;
|
||||
short (*CTimeCycle::m_nShadowStrength)[NUMWEATHERS] = (short(*)[NUMWEATHERS])0x83CFD8;
|
||||
short (*CTimeCycle::m_nLightShadowStrength)[NUMWEATHERS] = (short(*)[NUMWEATHERS])0x72B0F8;
|
||||
short (*CTimeCycle::m_nTreeShadowStrength)[NUMWEATHERS] = (short(*)[NUMWEATHERS])0x733450;
|
||||
float (*CTimeCycle::m_fFogStart)[NUMWEATHERS] = (float(*)[NUMWEATHERS])0x8806C8;
|
||||
float (*CTimeCycle::m_fFarClip)[NUMWEATHERS] = (float(*)[NUMWEATHERS])0x8804E0;
|
||||
float (*CTimeCycle::m_fLightsOnGroundBrightness)[NUMWEATHERS] = (float(*)[NUMWEATHERS])0x83D108;
|
||||
int (*CTimeCycle::m_nLowCloudsRed)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x726770;
|
||||
int (*CTimeCycle::m_nLowCloudsGreen)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x87BF08;
|
||||
int (*CTimeCycle::m_nLowCloudsBlue)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x87FA10;
|
||||
int (*CTimeCycle::m_nFluffyCloudsTopRed)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x70F2B0;
|
||||
int (*CTimeCycle::m_nFluffyCloudsTopGreen)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x72D288;
|
||||
int (*CTimeCycle::m_nFluffyCloudsTopBlue)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x86B108;
|
||||
int (*CTimeCycle::m_nFluffyCloudsBottomRed)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x6E8DA8;
|
||||
int (*CTimeCycle::m_nFluffyCloudsBottomGreen)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x715AA8;
|
||||
int (*CTimeCycle::m_nFluffyCloudsBottomBlue)[NUMWEATHERS] = (int(*)[NUMWEATHERS])0x6EE2D0;
|
||||
float (*CTimeCycle::m_fBlurRed)[NUMWEATHERS] = (float(*)[NUMWEATHERS])0x87C7E0;
|
||||
float (*CTimeCycle::m_fBlurGreen)[NUMWEATHERS] = (float(*)[NUMWEATHERS])0x774C10;
|
||||
float (*CTimeCycle::m_fBlurBlue)[NUMWEATHERS] = (float(*)[NUMWEATHERS])0x8784E0;
|
||||
float (*CTimeCycle::m_fBlurAlpha)[NUMWEATHERS] = (float(*)[NUMWEATHERS])0x733690;
|
||||
|
||||
float &CTimeCycle::m_fCurrentAmbientRed = *(float*)0x8F29B4;
|
||||
float &CTimeCycle::m_fCurrentAmbientGreen = *(float*)0x94144C;
|
||||
float &CTimeCycle::m_fCurrentAmbientBlue = *(float*)0x942FC0;
|
||||
float &CTimeCycle::m_fCurrentDirectionalRed = *(float*)0x8F29D8;
|
||||
float &CTimeCycle::m_fCurrentDirectionalGreen = *(float*)0x940594;
|
||||
float &CTimeCycle::m_fCurrentDirectionalBlue = *(float*)0x942FAC;
|
||||
int &CTimeCycle::m_nCurrentSkyTopRed = *(int*)0x9403C0;
|
||||
int &CTimeCycle::m_nCurrentSkyTopGreen = *(int*)0x943074;
|
||||
int &CTimeCycle::m_nCurrentSkyTopBlue = *(int*)0x8F29B8;
|
||||
int &CTimeCycle::m_nCurrentSkyBottomRed = *(int*)0x9414D0;
|
||||
int &CTimeCycle::m_nCurrentSkyBottomGreen = *(int*)0x8F2BD0;
|
||||
int &CTimeCycle::m_nCurrentSkyBottomBlue = *(int*)0x8F625C;
|
||||
int &CTimeCycle::m_nCurrentSunCoreRed = *(int*)0x8F2534;
|
||||
int &CTimeCycle::m_nCurrentSunCoreGreen = *(int*)0x8F6264;
|
||||
int &CTimeCycle::m_nCurrentSunCoreBlue = *(int*)0x94149C;
|
||||
int &CTimeCycle::m_nCurrentSunCoronaRed = *(int*)0x8F2C1C;
|
||||
int &CTimeCycle::m_nCurrentSunCoronaGreen = *(int*)0x885B54;
|
||||
int &CTimeCycle::m_nCurrentSunCoronaBlue = *(int*)0x880F60;
|
||||
float &CTimeCycle::m_fCurrentSunSize = *(float*)0x940588;
|
||||
float &CTimeCycle::m_fCurrentSpriteSize = *(float*)0x8F1AA8;
|
||||
float &CTimeCycle::m_fCurrentSpriteBrightness = *(float*)0x8F5FDC;
|
||||
int &CTimeCycle::m_nCurrentShadowStrength = *(int*)0x95CC76;
|
||||
int &CTimeCycle::m_nCurrentLightShadowStrength = *(int*)0x95CC66;
|
||||
int &CTimeCycle::m_nCurrentTreeShadowStrength = *(int*)0x95CC86;
|
||||
float &CTimeCycle::m_fCurrentFogStart = *(float*)0x8F1AE0;
|
||||
float &CTimeCycle::m_fCurrentFarClip = *(float*)0x8F5FD8;
|
||||
float &CTimeCycle::m_fCurrentLightsOnGroundBrightness = *(float*)0x8F1B60;
|
||||
int &CTimeCycle::m_nCurrentLowCloudsRed = *(int*)0x95CB54;
|
||||
int &CTimeCycle::m_nCurrentLowCloudsGreen = *(int*)0x95CB48;
|
||||
int &CTimeCycle::m_nCurrentLowCloudsBlue = *(int*)0x95CC1C;
|
||||
int &CTimeCycle::m_nCurrentFluffyCloudsTopRed = *(int*)0x8F2550;
|
||||
int &CTimeCycle::m_nCurrentFluffyCloudsTopGreen = *(int*)0x8F59CC;
|
||||
int &CTimeCycle::m_nCurrentFluffyCloudsTopBlue = *(int*)0x941434;
|
||||
int &CTimeCycle::m_nCurrentFluffyCloudsBottomRed = *(int*)0x8F1A38;
|
||||
int &CTimeCycle::m_nCurrentFluffyCloudsBottomGreen = *(int*)0x8E28B8;
|
||||
int &CTimeCycle::m_nCurrentFluffyCloudsBottomBlue = *(int*)0x8F3960;
|
||||
float &CTimeCycle::m_fCurrentBlurRed = *(float*)0x8F6000;
|
||||
float &CTimeCycle::m_fCurrentBlurGreen = *(float*)0x9405A0;
|
||||
float &CTimeCycle::m_fCurrentBlurBlue = *(float*)0x8F250C;
|
||||
float &CTimeCycle::m_fCurrentBlurAlpha = *(float*)0x940728;
|
||||
int &CTimeCycle::m_nCurrentFogColourRed = *(int*)0x940714;
|
||||
int &CTimeCycle::m_nCurrentFogColourGreen = *(int*)0x8E2A60;
|
||||
int &CTimeCycle::m_nCurrentFogColourBlue = *(int*)0x8F57EC;
|
||||
|
||||
int &CTimeCycle::m_FogReduction = *(int*)0x880FB8;
|
||||
|
||||
int &CTimeCycle::m_CurrentStoredValue = *(int*)0x94057C;
|
||||
CVector *CTimeCycle::m_VectorToSun = (CVector*)0x665548; // [16]
|
||||
float *CTimeCycle::m_fShadowFrontX = (float*)0x72CE90;
|
||||
float *CTimeCycle::m_fShadowFrontY = (float*)0x72CE50;
|
||||
float *CTimeCycle::m_fShadowSideX = (float*)0x87C708;
|
||||
float *CTimeCycle::m_fShadowSideY = (float*)0x87C6C8;
|
||||
float *CTimeCycle::m_fShadowDisplacementX = (float*)0x6F0748;
|
||||
float *CTimeCycle::m_fShadowDisplacementY = (float*)0x6F0788;
|
||||
|
||||
|
||||
void
|
||||
CTimeCycle::Initialise(void)
|
||||
{
|
||||
int w, h;
|
||||
int li, bi;
|
||||
char line[1040];
|
||||
|
||||
int ambR, ambG, ambB;
|
||||
int dirR, dirG, dirB;
|
||||
int skyTopR, skyTopG, skyTopB;
|
||||
int skyBotR, skyBotG, skyBotB;
|
||||
int sunCoreR, sunCoreG, sunCoreB;
|
||||
int sunCoronaR, sunCoronaG, sunCoronaB;
|
||||
float sunSz, sprSz, sprBght;
|
||||
int shad, lightShad, treeShad;
|
||||
float farClp, fogSt, lightGnd;
|
||||
int cloudR, cloudG, cloudB;
|
||||
int fluffyTopR, fluffyTopG, fluffyTopB;
|
||||
int fluffyBotR, fluffyBotG, fluffyBotB;
|
||||
float blurR, blurG, blurB, blurA;
|
||||
|
||||
debug("Intialising CTimeCycle...\n");
|
||||
|
||||
CFileMgr::SetDir("DATA");
|
||||
CFileMgr::LoadFile("TIMECYC.DAT", work_buff, sizeof(work_buff), "rb");
|
||||
CFileMgr::SetDir("");
|
||||
|
||||
line[0] = '\0';
|
||||
bi = 0;
|
||||
for(w = 0; w < NUMWEATHERS; w++)
|
||||
for(h = 0; h < NUMHOURS; h++){
|
||||
li = 0;
|
||||
while(work_buff[bi] == '/'){
|
||||
while(work_buff[bi] != '\n')
|
||||
bi++;
|
||||
bi++;
|
||||
}
|
||||
while(work_buff[bi] != '\n')
|
||||
line[li++] = work_buff[bi++];
|
||||
line[li] = '\0';
|
||||
bi++;
|
||||
|
||||
sscanf(line, "%d %d %d %d %d %d %d %d %d %d %d %d "
|
||||
"%d %d %d %d %d %d %f %f %f %d %d %d %f %f %f "
|
||||
"%d %d %d %d %d %d %d %d %d %f %f %f %f",
|
||||
&ambR, &ambG, &ambB,
|
||||
&dirR, &dirG, &dirB,
|
||||
&skyTopR, &skyTopG, &skyTopB,
|
||||
&skyBotR, &skyBotG, &skyBotB,
|
||||
&sunCoreR, &sunCoreG, &sunCoreB,
|
||||
&sunCoronaR, &sunCoronaG, &sunCoronaB,
|
||||
&sunSz, &sprSz, &sprBght,
|
||||
&shad, &lightShad, &treeShad,
|
||||
&farClp, &fogSt, &lightGnd,
|
||||
&cloudR, &cloudG, &cloudB,
|
||||
&fluffyTopR, &fluffyTopG, &fluffyTopB,
|
||||
&fluffyBotR, &fluffyBotG, &fluffyBotB,
|
||||
&blurR, &blurG, &blurB, &blurA);
|
||||
|
||||
m_nAmbientRed[h][w] = ambR;
|
||||
m_nAmbientGreen[h][w] = ambG;
|
||||
m_nAmbientBlue[h][w] = ambB;
|
||||
m_nDirectionalRed[h][w] = dirR;
|
||||
m_nDirectionalGreen[h][w] = dirG;
|
||||
m_nDirectionalBlue[h][w] = dirB;
|
||||
m_nSkyTopRed[h][w] = skyTopR;
|
||||
m_nSkyTopGreen[h][w] = skyTopG;
|
||||
m_nSkyTopBlue[h][w] = skyTopB;
|
||||
m_nSkyBottomRed[h][w] = skyBotR;
|
||||
m_nSkyBottomGreen[h][w] = skyBotG;
|
||||
m_nSkyBottomBlue[h][w] = skyBotB;
|
||||
m_nSunCoreRed[h][w] = sunCoreR;
|
||||
m_nSunCoreGreen[h][w] = sunCoreG;
|
||||
m_nSunCoreBlue[h][w] = sunCoreB;
|
||||
m_nSunCoronaRed[h][w] = sunCoronaR;
|
||||
m_nSunCoronaGreen[h][w] = sunCoronaG;
|
||||
m_nSunCoronaBlue[h][w] = sunCoronaB;
|
||||
m_fSunSize[h][w] = sunSz;
|
||||
m_fSpriteSize[h][w] = sprSz;
|
||||
m_fSpriteBrightness[h][w] = sprBght;
|
||||
m_nShadowStrength[h][w] = shad;
|
||||
m_nLightShadowStrength[h][w] = lightShad;
|
||||
m_nTreeShadowStrength[h][w] = treeShad;
|
||||
m_fFarClip[h][w] = farClp;
|
||||
m_fFogStart[h][w] = fogSt;
|
||||
m_fLightsOnGroundBrightness[h][w] = lightGnd;
|
||||
m_nLowCloudsRed[h][w] = cloudR;
|
||||
m_nLowCloudsGreen[h][w] = cloudG;
|
||||
m_nLowCloudsBlue[h][w] = cloudB;
|
||||
m_nFluffyCloudsTopRed[h][w] = fluffyTopR;
|
||||
m_nFluffyCloudsTopGreen[h][w] = fluffyTopG;
|
||||
m_nFluffyCloudsTopBlue[h][w] = fluffyTopB;
|
||||
m_nFluffyCloudsBottomRed[h][w] = fluffyBotR;
|
||||
m_nFluffyCloudsBottomGreen[h][w] = fluffyBotG;
|
||||
m_nFluffyCloudsBottomBlue[h][w] = fluffyBotB;
|
||||
m_fBlurRed[h][w] = blurR;
|
||||
m_fBlurGreen[h][w] = blurG;
|
||||
m_fBlurBlue[h][w] = blurB;
|
||||
m_fBlurAlpha[h][w] = blurA;
|
||||
}
|
||||
|
||||
m_FogReduction = 0;
|
||||
|
||||
debug("CTimeCycle ready\n");
|
||||
}
|
||||
|
||||
void
|
||||
CTimeCycle::Update(void)
|
||||
{
|
||||
int h1 = CClock::GetHours();
|
||||
int h2 = (h1+1)%24;
|
||||
int w1 = CWeather::OldWeatherType;
|
||||
int w2 = CWeather::NewWeatherType;
|
||||
float timeInterp = CClock::GetMinutes()/60.0f;
|
||||
// coefficients for a bilinear interpolation
|
||||
float c0 = (1.0f-timeInterp) * (1.0f-CWeather::InterpolationValue);
|
||||
float c1 = timeInterp * (1.0f-CWeather::InterpolationValue);
|
||||
float c2 = (1.0f-timeInterp) * CWeather::InterpolationValue;
|
||||
float c3 = timeInterp * CWeather::InterpolationValue;
|
||||
|
||||
#define INTERP(v) v[h1][w1]*c0 + v[h2][w1]*c1 + v[h1][w2]*c2 + v[h2][w2]*c3;
|
||||
|
||||
m_nCurrentSkyTopRed = INTERP(m_nSkyTopRed);
|
||||
m_nCurrentSkyTopGreen = INTERP(m_nSkyTopGreen);
|
||||
m_nCurrentSkyTopBlue = INTERP(m_nSkyTopBlue);
|
||||
|
||||
m_nCurrentSkyBottomRed = INTERP(m_nSkyBottomRed);
|
||||
m_nCurrentSkyBottomGreen = INTERP(m_nSkyBottomGreen);
|
||||
m_nCurrentSkyBottomBlue = INTERP(m_nSkyBottomBlue);
|
||||
|
||||
m_fCurrentAmbientRed = INTERP(m_nAmbientRed);
|
||||
m_fCurrentAmbientGreen = INTERP(m_nAmbientGreen);
|
||||
m_fCurrentAmbientBlue = INTERP(m_nAmbientBlue);
|
||||
m_fCurrentAmbientRed /= 255.0f;
|
||||
m_fCurrentAmbientGreen /= 255.0f;
|
||||
m_fCurrentAmbientBlue /= 255.0f;
|
||||
|
||||
m_fCurrentDirectionalRed = INTERP(m_nDirectionalRed);
|
||||
m_fCurrentDirectionalGreen = INTERP(m_nDirectionalGreen);
|
||||
m_fCurrentDirectionalBlue = INTERP(m_nDirectionalBlue);
|
||||
m_fCurrentDirectionalRed /= 255.0f;
|
||||
m_fCurrentDirectionalGreen /= 255.0f;
|
||||
m_fCurrentDirectionalBlue /= 255.0f;
|
||||
|
||||
m_nCurrentSunCoreRed = INTERP(m_nSunCoreRed);
|
||||
m_nCurrentSunCoreGreen = INTERP(m_nSunCoreGreen);
|
||||
m_nCurrentSunCoreBlue = INTERP(m_nSunCoreBlue);
|
||||
|
||||
m_nCurrentSunCoronaRed = INTERP(m_nSunCoronaRed);
|
||||
m_nCurrentSunCoronaGreen = INTERP(m_nSunCoronaGreen);
|
||||
m_nCurrentSunCoronaBlue = INTERP(m_nSunCoronaBlue);
|
||||
|
||||
m_fCurrentSunSize = INTERP(m_fSunSize);
|
||||
m_fCurrentSpriteSize = INTERP(m_fSpriteSize);
|
||||
m_fCurrentSpriteBrightness = INTERP(m_fSpriteBrightness);
|
||||
m_nCurrentShadowStrength = INTERP(m_nShadowStrength);
|
||||
m_nCurrentLightShadowStrength = INTERP(m_nLightShadowStrength);
|
||||
m_nCurrentTreeShadowStrength = INTERP(m_nTreeShadowStrength);
|
||||
m_fCurrentFarClip = INTERP(m_fFarClip);
|
||||
m_fCurrentFogStart = INTERP(m_fFogStart);
|
||||
m_fCurrentLightsOnGroundBrightness = INTERP(m_fLightsOnGroundBrightness);
|
||||
|
||||
m_nCurrentLowCloudsRed = INTERP(m_nLowCloudsRed);
|
||||
m_nCurrentLowCloudsGreen = INTERP(m_nLowCloudsGreen);
|
||||
m_nCurrentLowCloudsBlue = INTERP(m_nLowCloudsBlue);
|
||||
|
||||
m_nCurrentFluffyCloudsTopRed = INTERP(m_nFluffyCloudsTopRed);
|
||||
m_nCurrentFluffyCloudsTopGreen = INTERP(m_nFluffyCloudsTopGreen);
|
||||
m_nCurrentFluffyCloudsTopBlue = INTERP(m_nFluffyCloudsTopBlue);
|
||||
|
||||
m_nCurrentFluffyCloudsBottomRed = INTERP(m_nFluffyCloudsBottomRed);
|
||||
m_nCurrentFluffyCloudsBottomGreen = INTERP(m_nFluffyCloudsBottomGreen);
|
||||
m_nCurrentFluffyCloudsBottomBlue = INTERP(m_nFluffyCloudsBottomBlue);
|
||||
|
||||
m_fCurrentBlurRed = INTERP(m_fBlurRed);
|
||||
m_fCurrentBlurGreen = INTERP(m_fBlurGreen);
|
||||
m_fCurrentBlurBlue = INTERP(m_fBlurBlue);
|
||||
m_fCurrentBlurAlpha = INTERP(m_fBlurAlpha);
|
||||
|
||||
if(TheCamera.m_BlurType == MBLUR_NONE || TheCamera.m_BlurType == MBLUR_NORMAL)
|
||||
TheCamera.SetMotionBlur(m_fCurrentBlurRed, m_fCurrentBlurGreen, m_fCurrentBlurBlue, m_fCurrentBlurAlpha, MBLUR_NORMAL);
|
||||
|
||||
if(m_FogReduction != 0)
|
||||
m_fCurrentFarClip = max(m_fCurrentFarClip, m_FogReduction/64.0f * 650.0f);
|
||||
m_nCurrentFogColourRed = (m_nCurrentSkyTopRed + 2*m_nCurrentSkyBottomRed) / 3;
|
||||
m_nCurrentFogColourGreen = (m_nCurrentSkyTopGreen + 2*m_nCurrentSkyBottomGreen) / 3;
|
||||
m_nCurrentFogColourBlue = (m_nCurrentSkyTopBlue + 2*m_nCurrentSkyBottomBlue) / 3;
|
||||
|
||||
m_CurrentStoredValue = (m_CurrentStoredValue+1)&0xF;
|
||||
|
||||
float sunAngle = 2*PI*(CClock::GetMinutes() + CClock::GetHours()*60)/(24*60);
|
||||
CVector &sunPos = GetSunPosition();
|
||||
sunPos.x = sinf(sunAngle);
|
||||
sunPos.y = 1.0f;
|
||||
sunPos.z = 0.2f - cosf(sunAngle);
|
||||
sunPos.Normalise();
|
||||
|
||||
CShadows::CalcPedShadowValues(sunPos,
|
||||
&m_fShadowFrontX[m_CurrentStoredValue], &m_fShadowFrontY[m_CurrentStoredValue],
|
||||
&m_fShadowSideX[m_CurrentStoredValue], &m_fShadowSideY[m_CurrentStoredValue],
|
||||
&m_fShadowDisplacementX[m_CurrentStoredValue], &m_fShadowDisplacementY[m_CurrentStoredValue]);
|
||||
|
||||
if(TheCamera.GetForward().z < -0.9f ||
|
||||
!CWeather::bScriptsForceRain && (CCullZones::PlayerNoRain() || CCullZones::CamNoRain() || CCutsceneMgr::IsRunning()))
|
||||
m_FogReduction = min(m_FogReduction+1, 64);
|
||||
else
|
||||
m_FogReduction = max(m_FogReduction-1, 0);
|
||||
}
|
||||
|
||||
STARTPATCHES
|
||||
InjectHook(0x4ABAE0, CTimeCycle::Initialise, PATCH_JUMP);
|
||||
InjectHook(0x4ABF40, CTimeCycle::Update, PATCH_JUMP);
|
||||
ENDPATCHES
|
141
src/render/Timecycle.h
Normal file
141
src/render/Timecycle.h
Normal file
@ -0,0 +1,141 @@
|
||||
#pragma once
|
||||
|
||||
class CTimeCycle
|
||||
{
|
||||
static int (*m_nAmbientRed)[NUMWEATHERS];
|
||||
static int (*m_nAmbientGreen)[NUMWEATHERS];
|
||||
static int (*m_nAmbientBlue)[NUMWEATHERS];
|
||||
static int (*m_nDirectionalRed)[NUMWEATHERS];
|
||||
static int (*m_nDirectionalGreen)[NUMWEATHERS];
|
||||
static int (*m_nDirectionalBlue)[NUMWEATHERS];
|
||||
static int (*m_nSkyTopRed)[NUMWEATHERS];
|
||||
static int (*m_nSkyTopGreen)[NUMWEATHERS];
|
||||
static int (*m_nSkyTopBlue)[NUMWEATHERS];
|
||||
static int (*m_nSkyBottomRed)[NUMWEATHERS];
|
||||
static int (*m_nSkyBottomGreen)[NUMWEATHERS];
|
||||
static int (*m_nSkyBottomBlue)[NUMWEATHERS];
|
||||
static int (*m_nSunCoreRed)[NUMWEATHERS];
|
||||
static int (*m_nSunCoreGreen)[NUMWEATHERS];
|
||||
static int (*m_nSunCoreBlue)[NUMWEATHERS];
|
||||
static int (*m_nSunCoronaRed)[NUMWEATHERS];
|
||||
static int (*m_nSunCoronaGreen)[NUMWEATHERS];
|
||||
static int (*m_nSunCoronaBlue)[NUMWEATHERS];
|
||||
static float (*m_fSunSize)[NUMWEATHERS];
|
||||
static float (*m_fSpriteSize)[NUMWEATHERS];
|
||||
static float (*m_fSpriteBrightness)[NUMWEATHERS];
|
||||
static short (*m_nShadowStrength)[NUMWEATHERS];
|
||||
static short (*m_nLightShadowStrength)[NUMWEATHERS];
|
||||
static short (*m_nTreeShadowStrength)[NUMWEATHERS];
|
||||
static float (*m_fFogStart)[NUMWEATHERS];
|
||||
static float (*m_fFarClip)[NUMWEATHERS];
|
||||
static float (*m_fLightsOnGroundBrightness)[NUMWEATHERS];
|
||||
static int (*m_nLowCloudsRed)[NUMWEATHERS];
|
||||
static int (*m_nLowCloudsGreen)[NUMWEATHERS];
|
||||
static int (*m_nLowCloudsBlue)[NUMWEATHERS];
|
||||
static int (*m_nFluffyCloudsTopRed)[NUMWEATHERS];
|
||||
static int (*m_nFluffyCloudsTopGreen)[NUMWEATHERS];
|
||||
static int (*m_nFluffyCloudsTopBlue)[NUMWEATHERS];
|
||||
static int (*m_nFluffyCloudsBottomRed)[NUMWEATHERS];
|
||||
static int (*m_nFluffyCloudsBottomGreen)[NUMWEATHERS];
|
||||
static int (*m_nFluffyCloudsBottomBlue)[NUMWEATHERS];
|
||||
static float (*m_fBlurRed)[NUMWEATHERS];
|
||||
static float (*m_fBlurGreen)[NUMWEATHERS];
|
||||
static float (*m_fBlurBlue)[NUMWEATHERS];
|
||||
static float (*m_fBlurAlpha)[NUMWEATHERS];
|
||||
|
||||
static float &m_fCurrentAmbientRed;
|
||||
static float &m_fCurrentAmbientGreen;
|
||||
static float &m_fCurrentAmbientBlue;
|
||||
static float &m_fCurrentDirectionalRed;
|
||||
static float &m_fCurrentDirectionalGreen;
|
||||
static float &m_fCurrentDirectionalBlue;
|
||||
static int &m_nCurrentSkyTopRed;
|
||||
static int &m_nCurrentSkyTopGreen;
|
||||
static int &m_nCurrentSkyTopBlue;
|
||||
static int &m_nCurrentSkyBottomRed;
|
||||
static int &m_nCurrentSkyBottomGreen;
|
||||
static int &m_nCurrentSkyBottomBlue;
|
||||
static int &m_nCurrentSunCoreRed;
|
||||
static int &m_nCurrentSunCoreGreen;
|
||||
static int &m_nCurrentSunCoreBlue;
|
||||
static int &m_nCurrentSunCoronaRed;
|
||||
static int &m_nCurrentSunCoronaGreen;
|
||||
static int &m_nCurrentSunCoronaBlue;
|
||||
static float &m_fCurrentSunSize;
|
||||
static float &m_fCurrentSpriteSize;
|
||||
static float &m_fCurrentSpriteBrightness;
|
||||
static int &m_nCurrentShadowStrength;
|
||||
static int &m_nCurrentLightShadowStrength;
|
||||
static int &m_nCurrentTreeShadowStrength;
|
||||
static float &m_fCurrentFogStart;
|
||||
static float &m_fCurrentFarClip;
|
||||
static float &m_fCurrentLightsOnGroundBrightness;
|
||||
static int &m_nCurrentLowCloudsRed;
|
||||
static int &m_nCurrentLowCloudsGreen;
|
||||
static int &m_nCurrentLowCloudsBlue;
|
||||
static int &m_nCurrentFluffyCloudsTopRed;
|
||||
static int &m_nCurrentFluffyCloudsTopGreen;
|
||||
static int &m_nCurrentFluffyCloudsTopBlue;
|
||||
static int &m_nCurrentFluffyCloudsBottomRed;
|
||||
static int &m_nCurrentFluffyCloudsBottomGreen;
|
||||
static int &m_nCurrentFluffyCloudsBottomBlue;
|
||||
static float &m_fCurrentBlurRed;
|
||||
static float &m_fCurrentBlurGreen;
|
||||
static float &m_fCurrentBlurBlue;
|
||||
static float &m_fCurrentBlurAlpha;
|
||||
static int &m_nCurrentFogColourRed;
|
||||
static int &m_nCurrentFogColourGreen;
|
||||
static int &m_nCurrentFogColourBlue;
|
||||
|
||||
static int &m_FogReduction;
|
||||
|
||||
public:
|
||||
static int &m_CurrentStoredValue;
|
||||
static CVector *m_VectorToSun; // [16]
|
||||
static float *m_fShadowFrontX; // [16]
|
||||
static float *m_fShadowFrontY; // [16]
|
||||
static float *m_fShadowSideX; // [16]
|
||||
static float *m_fShadowSideY; // [16]
|
||||
static float *m_fShadowDisplacementX; // [16]
|
||||
static float *m_fShadowDisplacementY; // [16]
|
||||
|
||||
static float GetAmbientRed(void) { return m_fCurrentAmbientRed; }
|
||||
static float GetAmbientGreen(void) { return m_fCurrentAmbientGreen; }
|
||||
static float GetAmbientBlue(void) { return m_fCurrentAmbientBlue; }
|
||||
static float GetDirectionalRed(void) { return m_fCurrentDirectionalRed; }
|
||||
static float GetDirectionalGreen(void) { return m_fCurrentDirectionalGreen; }
|
||||
static float GetDirectionalBlue(void) { return m_fCurrentDirectionalBlue; }
|
||||
static int GetSkyTopRed(void) { return m_nCurrentSkyTopRed; }
|
||||
static int GetSkyTopGreen(void) { return m_nCurrentSkyTopGreen; }
|
||||
static int GetSkyTopBlue(void) { return m_nCurrentSkyTopBlue; }
|
||||
static int GetSkyBottomRed(void) { return m_nCurrentSkyBottomRed; }
|
||||
static int GetSkyBottomGreen(void) { return m_nCurrentSkyBottomGreen; }
|
||||
static int GetSkyBottomBlue(void) { return m_nCurrentSkyBottomBlue; }
|
||||
static int GetSunCoreRed(void) { return m_nCurrentSunCoreRed; }
|
||||
static int GetSunCoreGreen(void) { return m_nCurrentSunCoreGreen; }
|
||||
static int GetSunCoreBlue(void) { return m_nCurrentSunCoreBlue; }
|
||||
static int GetSunCoronaRed(void) { return m_nCurrentSunCoronaRed; }
|
||||
static int GetSunCoronaGreen(void) { return m_nCurrentSunCoronaGreen; }
|
||||
static int GetSunCoronaBlue(void) { return m_nCurrentSunCoronaBlue; }
|
||||
static float GetSunSize(void) { return m_fCurrentSunSize; }
|
||||
static float GetSpriteBrightness(void) { return m_fCurrentSpriteBrightness; }
|
||||
static float GetFarClip(void) { return m_fCurrentFarClip; }
|
||||
static float GetFogStart(void) { return m_fCurrentFogStart; }
|
||||
|
||||
static int GetLowCloudsRed(void) { return m_nCurrentLowCloudsRed; }
|
||||
static int GetLowCloudsGreen(void) { return m_nCurrentLowCloudsGreen; }
|
||||
static int GetLowCloudsBlue(void) { return m_nCurrentLowCloudsBlue; }
|
||||
static int GetFluffyCloudsTopRed(void) { return m_nCurrentFluffyCloudsTopRed; }
|
||||
static int GetFluffyCloudsTopGreen(void) { return m_nCurrentFluffyCloudsTopGreen; }
|
||||
static int GetFluffyCloudsTopBlue(void) { return m_nCurrentFluffyCloudsTopBlue; }
|
||||
static int GetFluffyCloudsBottomRed(void) { return m_nCurrentFluffyCloudsBottomRed; }
|
||||
static int GetFluffyCloudsBottomGreen(void) { return m_nCurrentFluffyCloudsBottomGreen; }
|
||||
static int GetFluffyCloudsBottomBlue(void) { return m_nCurrentFluffyCloudsBottomBlue; }
|
||||
static int GetFogRed(void) { return m_nCurrentFogColourRed; }
|
||||
static int GetFogGreen(void) { return m_nCurrentFogColourGreen; }
|
||||
static int GetFogBlue(void) { return m_nCurrentFogColourBlue; }
|
||||
|
||||
static void Initialise(void);
|
||||
static void Update(void);
|
||||
static CVector &GetSunPosition(void) { return m_VectorToSun[m_CurrentStoredValue]; }
|
||||
};
|
35
src/render/Weather.cpp
Normal file
35
src/render/Weather.cpp
Normal file
@ -0,0 +1,35 @@
|
||||
#include "common.h"
|
||||
#include "patcher.h"
|
||||
#include "Weather.h"
|
||||
|
||||
int32 &CWeather::SoundHandle = *(int32*)0x5FFBC4;
|
||||
|
||||
int32 &CWeather::WeatherTypeInList = *(int32*)0x8F626C;
|
||||
int16 &CWeather::OldWeatherType = *(int16*)0x95CCEC;
|
||||
int16 &CWeather::NewWeatherType = *(int16*)0x95CC70;
|
||||
int16 &CWeather::ForcedWeatherType = *(int16*)0x95CC80;
|
||||
|
||||
bool &CWeather::LightningFlash = *(bool*)0x95CDA3;
|
||||
bool &CWeather::LightningBurst = *(bool*)0x95CDAC;
|
||||
uint32 &CWeather::LightningStart = *(uint32*)0x8F5F84;
|
||||
uint32 &CWeather::LightningFlashLastChange = *(uint32*)0x8E2C0C;
|
||||
uint32 &CWeather::WhenToPlayLightningSound = *(uint32*)0x8F57E4;
|
||||
uint32 &CWeather::LightningDuration = *(uint32*)0x940578;
|
||||
|
||||
float &CWeather::Foggyness = *(float*)0x885AF4;
|
||||
float &CWeather::CloudCoverage = *(float*)0x8E2818;
|
||||
float &CWeather::Wind = *(float*)0x8E2BF8;
|
||||
float &CWeather::Rain = *(float*)0x8E2BFC;
|
||||
float &CWeather::InterpolationValue = *(float*)0x8F2520;
|
||||
float &CWeather::WetRoads = *(float*)0x8F5FF8;
|
||||
float &CWeather::Rainbow = *(float*)0x940598;
|
||||
|
||||
bool &CWeather::bScriptsForceRain = *(bool*)0x95CD7D;
|
||||
bool &CWeather::Stored_StateStored = *(bool*)0x95CDC1;
|
||||
|
||||
WRAPPER void CWeather::RenderRainStreaks(void) { EAXJMP(0x524550); }
|
||||
|
||||
void CWeather::ReleaseWeather()
|
||||
{
|
||||
ForcedWeatherType = -1;
|
||||
}
|
39
src/render/Weather.h
Normal file
39
src/render/Weather.h
Normal file
@ -0,0 +1,39 @@
|
||||
enum {
|
||||
WEATHER_SUNNY,
|
||||
WEATHER_CLOUDY,
|
||||
WEATHER_RAINY,
|
||||
WEATHER_FOGGY
|
||||
};
|
||||
|
||||
class CWeather
|
||||
{
|
||||
public:
|
||||
static int32 &SoundHandle;
|
||||
|
||||
static int32 &WeatherTypeInList;
|
||||
static int16 &OldWeatherType;
|
||||
static int16 &NewWeatherType;
|
||||
static int16 &ForcedWeatherType;
|
||||
|
||||
static bool &LightningFlash;
|
||||
static bool &LightningBurst;
|
||||
static uint32 &LightningStart;
|
||||
static uint32 &LightningFlashLastChange;
|
||||
static uint32 &WhenToPlayLightningSound;
|
||||
static uint32 &LightningDuration;
|
||||
|
||||
static float &Foggyness;
|
||||
static float &CloudCoverage;
|
||||
static float &Wind;
|
||||
static float &Rain;
|
||||
static float &InterpolationValue;
|
||||
static float &WetRoads;
|
||||
static float &Rainbow;
|
||||
|
||||
static bool &bScriptsForceRain;
|
||||
static bool &Stored_StateStored;
|
||||
|
||||
static void RenderRainStreaks(void);
|
||||
|
||||
static void ReleaseWeather();
|
||||
};
|
Reference in New Issue
Block a user