107 lines
2.5 KiB
C#
107 lines
2.5 KiB
C#
using UnityEngine;
|
|
|
|
public class FishingInventory : MonoBehaviour
|
|
{
|
|
[Header("Item Counts")]
|
|
[SerializeField] private int fishCount;
|
|
[SerializeField] private int trashCount;
|
|
[SerializeField] private int memoryPieceCount;
|
|
|
|
public int FishCount => fishCount;
|
|
public int TrashCount => trashCount;
|
|
public int MemoryPieceCount => memoryPieceCount;
|
|
|
|
private void OnValidate()
|
|
{
|
|
ClampCounts();
|
|
}
|
|
|
|
private void ClampCounts()
|
|
{
|
|
fishCount = Mathf.Max(0, fishCount);
|
|
trashCount = Mathf.Max(0, trashCount);
|
|
memoryPieceCount = Mathf.Max(0, memoryPieceCount);
|
|
}
|
|
|
|
public void AddItem(FishingItemType itemType, int amount = 1)
|
|
{
|
|
if (itemType == FishingItemType.None || amount <= 0)
|
|
return;
|
|
|
|
switch (itemType)
|
|
{
|
|
case FishingItemType.Fish:
|
|
fishCount += amount;
|
|
break;
|
|
|
|
case FishingItemType.Trash:
|
|
trashCount += amount;
|
|
break;
|
|
|
|
case FishingItemType.MemoryPiece:
|
|
memoryPieceCount += amount;
|
|
break;
|
|
}
|
|
|
|
ClampCounts();
|
|
}
|
|
|
|
public bool HasItem(FishingItemType itemType, int amount = 1)
|
|
{
|
|
if (itemType == FishingItemType.None || amount <= 0)
|
|
return false;
|
|
|
|
return GetItemCount(itemType) >= amount;
|
|
}
|
|
|
|
public bool ConsumeItem(FishingItemType itemType, int amount = 1)
|
|
{
|
|
if (!HasItem(itemType, amount))
|
|
return false;
|
|
|
|
switch (itemType)
|
|
{
|
|
case FishingItemType.Fish:
|
|
fishCount -= amount;
|
|
break;
|
|
|
|
case FishingItemType.Trash:
|
|
trashCount -= amount;
|
|
break;
|
|
|
|
case FishingItemType.MemoryPiece:
|
|
memoryPieceCount -= amount;
|
|
break;
|
|
}
|
|
|
|
ClampCounts();
|
|
return true;
|
|
}
|
|
|
|
public int GetItemCount(FishingItemType itemType)
|
|
{
|
|
switch (itemType)
|
|
{
|
|
case FishingItemType.Fish:
|
|
return fishCount;
|
|
|
|
case FishingItemType.Trash:
|
|
return trashCount;
|
|
|
|
case FishingItemType.MemoryPiece:
|
|
return memoryPieceCount;
|
|
|
|
case FishingItemType.None:
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
public void ResetInventory()
|
|
{
|
|
fishCount = 0;
|
|
trashCount = 0;
|
|
memoryPieceCount = 0;
|
|
}
|
|
}
|