49 lines
1.4 KiB
C#
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;
|
|
}
|
|
} |