Files
BABA_YAGA/Assets/Scripts/Player Controller/PlayerStats.cs
2026-04-29 13:10:00 +07:00

72 lines
2.0 KiB
C#

using UnityEngine;
using Fusion;
using System;
using Hallucinate.Network;
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 (Health <= 0 && Object.HasStateAuthority)
{
// Find the other player as winner
foreach (var player in Runner.ActivePlayers)
{
if (player != Object.InputAuthority)
{
MatchResultManager.Instance?.ProcessMatchEnd(player);
break;
}
}
}
if (Object.HasInputAuthority)
{
// UI Placeholder: Trigger Health UI Change
}
}
void OnStaminaChangedRender()
{
OnStaminaChanged?.Invoke(Stamina);
if (Object.HasInputAuthority)
{
// UI Placeholder: Trigger Stamina UI Change
}
}
void OnNoiseLevelChangedRender()
{
OnNoiseLevelChanged?.Invoke(NoiseLevel);
}
private void UpdateUI()
{
if (Object.HasInputAuthority)
{
OnHealthChangedRender();
OnStaminaChangedRender();
}
}
}
}