diff --git a/game/Assets/Scripts/CameraOrbitKeyboard.cs b/game/Assets/Scripts/CameraOrbitKeyboard.cs index 5a3dfcd..63c930d 100644 --- a/game/Assets/Scripts/CameraOrbitKeyboard.cs +++ b/game/Assets/Scripts/CameraOrbitKeyboard.cs @@ -29,7 +29,9 @@ public class CameraOrbitKeyboard : MonoBehaviour { // On gère la souris nous-mêmes if (_axisController != null) _axisController.enabled = false; - LockCursor(); + // Only lock cursor if no UI panel is open + if (!ChatUI.IsVisible && !KeyBindingUI.IsVisible) + LockCursor(); } void OnDisable() @@ -55,16 +57,16 @@ public class CameraOrbitKeyboard : MonoBehaviour var mouse = Mouse.current; - // Clic droit = toggle lock - if (mouse != null && mouse.rightButton.wasPressedThisFrame) + // Right-click unlocks, left-click re-locks (consistent with PlayerController) + if (!ChatUI.IsVisible && !KeyBindingUI.IsVisible && mouse != null) { - if (Cursor.lockState == CursorLockMode.Locked) + if (Cursor.lockState == CursorLockMode.Locked && mouse.rightButton.wasPressedThisFrame) UnlockCursor(); - else + else if (Cursor.lockState != CursorLockMode.Locked && mouse.leftButton.wasPressedThisFrame) LockCursor(); } - if (KeyBindingUI.IsVisible) return; + if (KeyBindingUI.IsVisible || ChatUI.IsVisible) return; // Souris — seulement quand locked (delta infini, sans accrochage au bord) if (Cursor.lockState == CursorLockMode.Locked && mouse != null) diff --git a/game/Assets/Scripts/Network/NetworkManager.cs b/game/Assets/Scripts/Network/NetworkManager.cs index dce538f..e2af4a7 100644 --- a/game/Assets/Scripts/Network/NetworkManager.cs +++ b/game/Assets/Scripts/Network/NetworkManager.cs @@ -154,6 +154,7 @@ public class NetworkManager : MonoBehaviour _callbacks.OnRemove(state => state.players, (key, player) => OnPlayerRemove(key, player)); _callbacks.Listen(state => state.phase, (v, _) => _OnPhaseChanged(v)); _callbacks.Listen(state => state.countdown, (v, _) => OnCountdownChanged?.Invoke(v)); + _callbacks.Listen(state => state.playersAlive, (v, _) => GameHUD.Instance?.SetPlayersAlive(v)); _room.OnMessage("eliminated", msg => { OnEliminated?.Invoke(msg.sessionId, msg.reason); }); _room.OnMessage ("qualified", msg => { OnQualified?.Invoke(msg.sessionId); });