using UnityEngine; using Fusion; using System; namespace OnlyScove.Scripts { public class PlayerStats : NetworkBehaviour { [Header("Player Stats")] [Networked, OnChangedRender(nameof(OnHealthChangedRender))] public float Health { get; set; } = 100f; [Networked, OnChangedRender(nameof(OnStaminaChangedRender))] public float Stamina { get; set; } = 100f; [Networked, OnChangedRender(nameof(OnNoiseLevelChangedRender))] public float NoiseLevel { get; set; } = 0f; public event Action OnHealthChanged; public event Action OnStaminaChanged; public event Action OnNoiseLevelChanged; public override void Spawned() { // Initial UI sync placeholder UpdateUI(); } void OnHealthChangedRender() { OnHealthChanged?.Invoke(Health); if (Object.HasInputAuthority) { // UI Placeholder: Trigger Health UI Change // Example: UI.UIEventBus.TriggerHealthChange(Health / 100f); } } void OnStaminaChangedRender() { OnStaminaChanged?.Invoke(Stamina); if (Object.HasInputAuthority) { // UI Placeholder: Trigger Stamina UI Change // Example: UI.UIEventBus.TriggerStaminaChange(Stamina / 100f); } } void OnNoiseLevelChangedRender() { OnNoiseLevelChanged?.Invoke(NoiseLevel); } private void UpdateUI() { if (Object.HasInputAuthority) { OnHealthChangedRender(); OnStaminaChangedRender(); } } } }