Skip to content

Commit a384e4b

Browse files
committed
update after review
1 parent 47b6107 commit a384e4b

File tree

6 files changed

+67
-41
lines changed

6 files changed

+67
-41
lines changed

Client/mods/deathmatch/logic/CClientGame.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5483,9 +5483,8 @@ void CClientGame::ResetMapInfo()
54835483
g_pMultiplayer->SetGrainLevel(0);
54845484

54855485
// Underwater effects
5486-
g_pMultiplayer->SetUnderwaterDarkness(true, 90.0f);
5487-
g_pMultiplayer->SetUnderwaterEffectEnabled(false);
5488-
g_pMultiplayer->SetUnderwaterEffectSpeed(0.0015f, 0.04f);
5486+
g_pMultiplayer->ResetUnderwaterDarkness();
5487+
g_pMultiplayer->ResetUnderwaterEffect();
54895488

54905489
// Water
54915490
GetManager()->GetWaterManager()->ResetWorldWaterLevel();

Client/mods/deathmatch/logic/luadefs/CLuaCameraDefs.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -178,12 +178,18 @@ unsigned char CLuaCameraDefs::GetCameraDrunkLevel()
178178

179179
CLuaMultiReturn<bool, float, float> CLuaCameraDefs::GetCameraUnderwaterEffect()
180180
{
181-
return g_pMultiplayer->GetUnderwaterEffect();
181+
bool isEnabled;
182+
float speed, frequency;
183+
g_pMultiplayer->GetUnderwaterEffect(isEnabled, speed, frequency);
184+
return {isEnabled, speed, frequency};
182185
}
183186

184187
CLuaMultiReturn<bool, float> CLuaCameraDefs::GetCameraUnderwaterDarkness()
185188
{
186-
return g_pMultiplayer->GetUnderwaterDarkness();
189+
bool isEnabled;
190+
float fullDarknessDepth;
191+
g_pMultiplayer->GetUnderwaterDarkness(isEnabled, fullDarknessDepth);
192+
return {isEnabled, fullDarknessDepth};
187193
}
188194

189195
int CLuaCameraDefs::SetCameraMatrix(lua_State* luaVM)
@@ -511,15 +517,14 @@ bool CLuaCameraDefs::SetCameraUnderwaterDarkness(bool bEnabled, std::optional<fl
511517

512518
bool CLuaCameraDefs::ResetCameraUnderwaterEffect()
513519
{
514-
g_pMultiplayer->SetUnderwaterEffectEnabled(false);
515-
g_pMultiplayer->SetUnderwaterEffectSpeed(0.0015f, 0.04f);
520+
g_pMultiplayer->ResetUnderwaterEffect();
516521

517522
return true;
518523
}
519524

520525
bool CLuaCameraDefs::ResetCameraUnderwaterDarkness()
521526
{
522-
g_pMultiplayer->SetUnderwaterDarkness(true, 90.0f);
527+
g_pMultiplayer->ResetUnderwaterDarkness();
523528

524529
return true;
525530
}

Client/mods/deathmatch/logic/luadefs/CLuaCameraDefs.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ class CLuaCameraDefs : public CLuaDefs
4545
LUA_DECLARE(SetCameraGoggleEffect);
4646
static bool SetCameraDrunkLevel(short drunkLevel);
4747

48-
static bool SetCameraUnderwaterEffectEnabled(bool bEnabled);
49-
static bool SetCameraUnderwaterEffectSpeed(float fSpeed, float fFrequency);
50-
static bool SetCameraUnderwaterDarkness(bool bEnabled, std::optional<float> fFullDarknessDepth);
48+
static bool SetCameraUnderwaterEffectEnabled(bool isEnabled);
49+
static bool SetCameraUnderwaterEffectSpeed(float speed, float frequency);
50+
static bool SetCameraUnderwaterDarkness(bool isEnabled, std::optional<float> fullDarknessDepth);
5151
static bool ResetCameraUnderwaterEffect();
5252
static bool ResetCameraUnderwaterDarkness();
5353

Client/multiplayer_sa/CMultiplayerSA.h

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -201,11 +201,13 @@ class CMultiplayerSA : public CMultiplayer
201201
bool IsNightVisionEnabled();
202202
bool IsThermalVisionEnabled();
203203

204-
std::tuple<bool, float, float> GetUnderwaterEffect();
205-
std::tuple<bool, float> GetUnderwaterDarkness();
206-
void SetUnderwaterEffectEnabled(bool bEnabled);
207-
void SetUnderwaterEffectSpeed(float fSpeed, float fFrequency);
208-
void SetUnderwaterDarkness(bool bEnabled, float fFullDarknessDepth);
204+
void GetUnderwaterEffect(bool& isEnabled, float& speed, float& frequency);
205+
void GetUnderwaterDarkness(bool& isEnabled, float& fullDarknessDepth);
206+
void SetUnderwaterEffectEnabled(bool isEnabled) override;
207+
void SetUnderwaterEffectSpeed(float speed, float frequency) override;
208+
void SetUnderwaterDarkness(bool isEnabled, float fullDarknessDepth) override;
209+
void ResetUnderwaterEffect() override;
210+
void ResetUnderwaterDarkness() override;
209211

210212
void AllowWindowsCursorShowing(bool bAllow);
211213

Client/multiplayer_sa/CMultiplayerSA_Postprocess.cpp

Lines changed: 38 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,18 @@
1515
#define HOOKPOS_GrainEffect_RainModifier 0x705078
1616
#define HOOKPOS_GrainEffect_OverlayModifier 0x705091
1717

18+
#define VAR_CPostEffects_WaterEnable 0xC402D3
19+
#define VAR_CPostEffects_WaterSpeed 0x8D5138
20+
#define VAR_CPostEffects_WaterFreq 0x8D513C
21+
#define VAR_CPostEffects_WaterDepthDarkessEnabled 0x8D5144
22+
#define VAR_CPostEffects_WaterFullDarknessDepth 0x8D5148
23+
#define VAR_CPostEffects_WaterFxStartUnderWaterness 0x8D514C
24+
#define VAR_CWeather_UnderWaterness 0xC8132C
25+
26+
#define DEFAULT_UNDERWATER_EFFECT_SPEED ( 0.0015f )
27+
#define DEFAULT_UNDERWATER_EFFECT_FREQUENCY ( 0.04f )
28+
#define DEFAULT_UNDERWATER_FULL_DARKNESS_DEPTH ( 90.0f )
29+
1830
namespace GrainEffect
1931
{
2032

@@ -154,22 +166,33 @@ void CMultiplayerSA::SetNightVisionEnabled(bool bEnabled, bool bNoiseEnabled)
154166
}
155167
}
156168

157-
void CMultiplayerSA::SetUnderwaterEffectEnabled(bool bEnabled)
169+
void CMultiplayerSA::SetUnderwaterEffectEnabled(bool isEnabled)
158170
{
159-
MemPutFast<BYTE>(0xC402D3, bEnabled ? 1 : 0);
171+
MemPutFast<uint8_t>(VAR_CPostEffects_WaterEnable, isEnabled ? 1 : 0);
160172
}
161173

162-
void CMultiplayerSA::SetUnderwaterEffectSpeed(float fSpeed, float fFrequency)
174+
void CMultiplayerSA::SetUnderwaterEffectSpeed(float speed, float frequency)
163175
{
164-
MemPutFast<float>(0x8D5138, fSpeed);
165-
MemPutFast<float>(0x8D513C, fFrequency);
176+
MemPutFast<float>(VAR_CPostEffects_WaterSpeed, speed);
177+
MemPutFast<float>(VAR_CPostEffects_WaterFreq, frequency);
178+
}
179+
180+
void CMultiplayerSA::SetUnderwaterDarkness(bool isEnabled, float fullDarknessDepth)
181+
{
182+
MemPutFast<uint8_t>(VAR_CPostEffects_WaterDepthDarkessEnabled, isEnabled ? 1 : 0);
183+
184+
MemPutFast<float>(VAR_CPostEffects_WaterFullDarknessDepth, fullDarknessDepth);
166185
}
167186

168-
void CMultiplayerSA::SetUnderwaterDarkness(bool bEnabled, float fFullDarknessDepth)
187+
void CMultiplayerSA::ResetUnderwaterEffect()
169188
{
170-
MemPutFast<BYTE>(0x8D5144, bEnabled ? 1 : 0);
189+
this->SetUnderwaterEffectEnabled(false);
190+
this->SetUnderwaterEffectSpeed(DEFAULT_UNDERWATER_EFFECT_SPEED, DEFAULT_UNDERWATER_EFFECT_FREQUENCY);
191+
}
171192

172-
MemPutFast<float>(0x8D5148, fFullDarknessDepth);
193+
void CMultiplayerSA::ResetUnderwaterDarkness()
194+
{
195+
this->SetUnderwaterDarkness(false, DEFAULT_UNDERWATER_FULL_DARKNESS_DEPTH);
173196
}
174197

175198
void CMultiplayerSA::SetThermalVisionEnabled(bool bEnabled, bool bNoiseEnabled)
@@ -202,22 +225,17 @@ bool CMultiplayerSA::IsThermalVisionEnabled()
202225
return (*(BYTE*)0xC402B9 == 1);
203226
}
204227

205-
std::tuple<bool, float, float> CMultiplayerSA::GetUnderwaterEffect()
228+
void CMultiplayerSA::GetUnderwaterEffect(bool& isEnabled, float& speed, float& frequency)
206229
{
207-
bool bEnabled = (*(BYTE*)0xC402D3 == 1) || (*(float*)0xC8132C) >= 0.535f;
208-
float fSpeed = (*(float*)0x8D5138);
209-
float fFrequency = (*(float*)0x8D513C);
210-
211-
return std::tuple<bool, float, float>(bEnabled, fSpeed, fFrequency);
230+
isEnabled = (*(uint8_t*)VAR_CPostEffects_WaterEnable == 1) || (*(float*)VAR_CWeather_UnderWaterness) >= (*(float*)VAR_CPostEffects_WaterFxStartUnderWaterness);
231+
speed = (*(float*)VAR_CPostEffects_WaterSpeed);
232+
frequency = (*(float*)VAR_CPostEffects_WaterFreq);
212233
}
213234

214-
215-
std::tuple<bool, float> CMultiplayerSA::GetUnderwaterDarkness()
235+
void CMultiplayerSA::GetUnderwaterDarkness(bool& isEnabled, float& fullDarknessDepth)
216236
{
217-
bool bEnabled = (*(BYTE*)0x8D5144);
218-
float fFullDarknessDepth = (*(float*)0x8D5148);
219-
220-
return std::tuple<bool, float>(bEnabled, fFullDarknessDepth);
237+
isEnabled = (*(uint8_t*)VAR_CPostEffects_WaterDepthDarkessEnabled);
238+
fullDarknessDepth = (*(float*)VAR_CPostEffects_WaterFullDarknessDepth);
221239
}
222240

223241
void CMultiplayerSA::InitHooks_Postprocess()

Client/sdk/multiplayer/CMultiplayer.h

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -410,9 +410,11 @@ class CMultiplayer
410410
virtual unsigned int PtrNodeSingleLinkPool_NoOfUsedSpaces() const noexcept = 0;
411411
virtual unsigned int PtrNodeDoubleLinkPool_NoOfUsedSpaces() const noexcept = 0;
412412

413-
virtual std::tuple<bool, float, float> GetUnderwaterEffect() = 0;
414-
virtual std::tuple<bool, float> GetUnderwaterDarkness() = 0;
415-
virtual void SetUnderwaterEffectEnabled(bool bEnabled) = 0;
416-
virtual void SetUnderwaterEffectSpeed(float fSpeed, float fFrequency) = 0;
417-
virtual void SetUnderwaterDarkness(bool bEnabled, float fFullDarknessDepth) = 0;
413+
virtual void GetUnderwaterEffect(bool& isEnabled, float& speed, float& frequency) = 0;
414+
virtual void GetUnderwaterDarkness(bool& isEnabled, float& fullDarknessDepth) = 0;
415+
virtual void SetUnderwaterEffectEnabled(bool isEnabled) = 0;
416+
virtual void SetUnderwaterEffectSpeed(float speed, float frequency) = 0;
417+
virtual void SetUnderwaterDarkness(bool isEnabled, float fullDarknessDepth) = 0;
418+
virtual void ResetUnderwaterEffect() = 0;
419+
virtual void ResetUnderwaterDarkness() = 0;
418420
};

0 commit comments

Comments
 (0)