71 lines
2.0 KiB
C#
71 lines
2.0 KiB
C#
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 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;
|
|
}
|
|
}
|
|
}
|