using System.Collections; using System.Collections.Generic; using UnityEngine; public class CuttingCounter : BaseCounter { [SerializeField] private CuttingRecipeSO[] cuttingRecipeSOArray; public override void Interact(Player player) { if (!HasKitchenObject()) { // no KitchenObject here if (player.HasKitchenObject()) { // player has object if (HasRecipeWithInput(player.GetKitchenObject().GetKitchenObjectSO())) { // player is carrying an object that can be chopped player.GetKitchenObject().SetKitchenObjectParent(this); } } else { // player has nothing, do nothing } } else { // KitchenObject is here if (player.HasKitchenObject()) { // player has object, do nothing } else { // player has nothing GetKitchenObject().SetKitchenObjectParent(player); } } } public override void InteractAlternate(Player player) { if (HasKitchenObject() && HasRecipeWithInput(GetKitchenObject().GetKitchenObjectSO())) { // there is a KitchenObject AND it is able to be cut KitchenObjectSO outputKitchenSO = GetOutputForInput(GetKitchenObject().GetKitchenObjectSO()); GetKitchenObject().DestroySelf(); KitchenObject.SpawnKitchenObject(outputKitchenSO, this); } } private bool HasRecipeWithInput(KitchenObjectSO inputKitchenObjectSO) { foreach (CuttingRecipeSO cuttingRecipeSO in cuttingRecipeSOArray) { if (cuttingRecipeSO.input == inputKitchenObjectSO) { return true; } } return false; } private KitchenObjectSO GetOutputForInput(KitchenObjectSO inputKitchenObjectSO) { foreach (CuttingRecipeSO cuttingRecipeSO in cuttingRecipeSOArray) { if (cuttingRecipeSO.input == inputKitchenObjectSO) { return cuttingRecipeSO.output; } } return null; } }