Browse Source

Fix light radius runtime desync

Add runtime desync detection to CalcPlrLightRadius function.
Now checks if player's vision and light system states are out of sync
with the expected radius and updates them accordingly.
Prevents visual inconsistencies when player light radius changes
during gameplay.

Improve variable names for readability

Change visionOutOfSync to visionRadiusOutOfSync
and lightOutOfSync to lightRadiusOutOfSync
for better code clarity and self-documentation.
pull/8515/head
morfidon 19 hours ago
parent
commit
9302677ad2
  1. 8
      Source/items.cpp

8
Source/items.cpp

@ -2540,7 +2540,13 @@ void CalcPlrLightRadius(Player &player, int lrad)
{
lrad = std::clamp(lrad, 2, 15);
if (player._pLightRad != lrad) {
const bool playerOnActiveLevel = player.isOnActiveLevel();
const bool visionRadiusOutOfSync = playerOnActiveLevel && VisionList[player.getId()].radius != lrad;
const bool lightRadiusOutOfSync = playerOnActiveLevel
&& player.lightId != NO_LIGHT
&& Lights[player.lightId].radius != lrad;
if (player._pLightRad != lrad || visionRadiusOutOfSync || lightRadiusOutOfSync) {
ChangeLightRadius(player.lightId, lrad);
ChangeVisionRadius(player.getId(), lrad);
player._pLightRad = lrad;

Loading…
Cancel
Save