KitchenChaos/Assets/Scripts/KitchenObject.cs

49 lines
1.4 KiB
C#

using ScriptableObjects;
using UnityEngine;
public class KitchenObject : MonoBehaviour {
[SerializeField] private KitchenObjectSO kitchenObjectSo;
private IKitchenObjectParent kitchenObjectParent;
public KitchenObjectSO GetKitchenObjectSO() {
return kitchenObjectSo;
}
public IKitchenObjectParent GetKitchenObjectParent() {
return kitchenObjectParent;
}
public void SetKitchenObjectParent(IKitchenObjectParent kOP) {
kOP.ClearKitchenObject();
kitchenObjectParent = kOP;
if (kOP.HasKitchenObject()) Debug.LogError("IKitchenObjectParent already has a KitchenObject");
kOP.SetKitchenObject(this);
transform.parent = kOP.GetKitchenObjectHoldPoint();
transform.localPosition = Vector3.zero;
}
public void DestroySelf() {
kitchenObjectParent.ClearKitchenObject();
Destroy(gameObject);
}
public bool TryGetPlate(out PlateKitchenObject plateKitchenObject) {
if (this is PlateKitchenObject) {
plateKitchenObject = this as PlateKitchenObject;
return true;
}
plateKitchenObject = null;
return false;
}
public static KitchenObject SpawnKitchenObject(KitchenObjectSO kitchenObjectSO, IKitchenObjectParent kitchenObjectParent) {
Transform kitchenObjectTransform = Instantiate(kitchenObjectSO.prefab);
KitchenObject kitchenObject = kitchenObjectTransform.GetComponent<KitchenObject>();
kitchenObject.SetKitchenObjectParent(kitchenObjectParent);
kitchenObjectTransform.gameObject.SetActive(true);
return kitchenObject;
}
}