using Unity.Netcode; using UnityEngine; namespace Northbound { public class PlayerResourceInventory : NetworkBehaviour { public int maxResourceCapacity = 100; private int _displayAmount = 0; public int CurrentResourceAmount => _displayAmount; public int MaxResourceCapacity => maxResourceCapacity; [Rpc(SendTo.Server)] private void SetMaxCapacityServerRpc(int maxCapacity) { var resourceManager = ServerResourceManager.Instance; if (resourceManager != null) { resourceManager.SetPlayerMaxCapacity(OwnerClientId, maxCapacity); } } public override void OnNetworkSpawn() { if (IsClient && IsOwner) { SetMaxCapacityServerRpc(maxResourceCapacity); RequestResourceUpdateServerRpc(); } } [Rpc(SendTo.Server)] public void RequestResourceUpdateServerRpc() { var resourceManager = ServerResourceManager.Instance; if (resourceManager != null) { int amount = resourceManager.GetPlayerResourceAmount(OwnerClientId); UpdateResourceAmountClientRpc(amount); } } [Rpc(SendTo.ClientsAndHost)] private void UpdateResourceAmountClientRpc(int amount) { _displayAmount = amount; } public void UpdateResourceAmountDirectly(int amount) { _displayAmount = amount; } public bool CanAddResource(int amount) { var resourceManager = ServerResourceManager.Instance; if (resourceManager != null) { return resourceManager.CanAddResource(OwnerClientId, amount); } return false; } public int GetAvailableSpace() { var resourceManager = ServerResourceManager.Instance; if (resourceManager != null) { return resourceManager.GetAvailableSpace(OwnerClientId); } return 0; } } }