59 lines
1.7 KiB
C#
59 lines
1.7 KiB
C#
|
|
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<float> OnHealthChanged;
|
||
|
|
public event Action<float> OnStaminaChanged;
|
||
|
|
public event Action<float> 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();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|