2026-04-28 00:07:42 +07:00
|
|
|
using UnityEngine;
|
|
|
|
|
using Fusion;
|
|
|
|
|
using System;
|
2026-04-29 13:10:00 +07:00
|
|
|
using Hallucinate.Network;
|
2026-04-28 00:07:42 +07:00
|
|
|
|
|
|
|
|
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);
|
2026-04-29 13:10:00 +07:00
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-28 00:07:42 +07:00
|
|
|
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();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|