KitchenChaos/Assets/Scripts/PlateKitchenObject.cs

39 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using Unity.Netcode;
using UnityEngine;
public class PlateKitchenObject : KitchenObject {
[SerializeField] private List<KitchenObjectSO> ValidKitchenObjectSOList;
private List<KitchenObjectSO> kitchenObjectSOList;
public override void Awake() {
base.Awake();
kitchenObjectSOList = new();
}
public event EventHandler<IngredientAddedEventArgs> OnIngredientAdded;
public bool TryAddIngredient(KitchenObjectSO kitchenObjectSO) {
if (!ValidKitchenObjectSOList.Contains(kitchenObjectSO)) return false;
if (kitchenObjectSOList.Contains(kitchenObjectSO)) return false;
AddIngredientServerRpc(KitchenGameMultiplayer.Instance.GetKitchenObjectSOIndex(kitchenObjectSO));
return true;
}
[ServerRpc(RequireOwnership = false)]
private void AddIngredientServerRpc(int kitchenObjectSOIndex) => AddIngredientClientRpc(kitchenObjectSOIndex);
[ClientRpc]
private void AddIngredientClientRpc(int kitchenObjectSOIndex) {
KitchenObjectSO kitchenObjectSO = KitchenGameMultiplayer.Instance.GetKitchenObjectSOFromIndex(kitchenObjectSOIndex);
kitchenObjectSOList.Add(kitchenObjectSO);
OnIngredientAdded?.Invoke(this, new() { KitchenObjectSO = kitchenObjectSO });
}
public List<KitchenObjectSO> GetKitchenObjectSOList() => kitchenObjectSOList;
public class IngredientAddedEventArgs : EventArgs {
public KitchenObjectSO KitchenObjectSO;
}
}