using UnityEngine; using Unity.Netcode; namespace Colosseum.Player { /// /// 플레이어 네트워크 상태 관리 (HP, MP 등) /// public class PlayerNetworkController : NetworkBehaviour { [Header("Stats")] [SerializeField] private float maxHealth = 100f; [SerializeField] private float maxMana = 50f; // 네트워크 동기화 변수 private NetworkVariable currentHealth = new NetworkVariable(100f); private NetworkVariable currentMana = new NetworkVariable(50f); public float Health => currentHealth.Value; public float MaxHealth => maxHealth; public float Mana => currentMana.Value; public float MaxMana => maxMana; public override void OnNetworkSpawn() { // 초기화 if (IsServer) { currentHealth.Value = maxHealth; currentMana.Value = maxMana; } } /// /// 대미지 적용 (서버에서만 실행) /// [Rpc(SendTo.Server)] public void TakeDamageRpc(float damage) { currentHealth.Value = Mathf.Max(0f, currentHealth.Value - damage); if (currentHealth.Value <= 0f) { HandleDeath(); } } /// /// 마나 소모 (서버에서만 실행) /// [Rpc(SendTo.Server)] public void UseManaRpc(float amount) { currentMana.Value = Mathf.Max(0f, currentMana.Value - amount); } /// /// 마나 회복 (서버에서만 실행) /// [Rpc(SendTo.Server)] public void RestoreManaRpc(float amount) { currentMana.Value = Mathf.Min(maxMana, currentMana.Value + amount); } private void HandleDeath() { // TODO: 사망 처리 로직 Debug.Log($"Player {OwnerClientId} died!"); } } }