72 lines
1.9 KiB
C#
72 lines
1.9 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class EmptyCounter : MonoBehaviour, IObjectParentHolder {
|
|
|
|
[SerializeField] private ObjectSO _objectSo;
|
|
[SerializeField] private Transform _counterObjectHandle;
|
|
|
|
[SerializeField] private bool _shouldSpawnOnInteract;
|
|
|
|
private Object _currentObject;
|
|
|
|
public void Interact() {
|
|
InteractionBehaviour interactionBehaviour = PlayerController.Instance.InteractionBehaviour;
|
|
if (_shouldSpawnOnInteract) {
|
|
if (_currentObject == null) {
|
|
Transform objectTransform = Instantiate(_objectSo.prefab, _counterObjectHandle);
|
|
objectTransform.GetComponent<Object>().setObjectParent(this);
|
|
}
|
|
|
|
}
|
|
|
|
if (!HasObject()) {
|
|
//No item on the counter
|
|
//Check player if he has something
|
|
if (interactionBehaviour.HasObject()) {
|
|
Object obj = interactionBehaviour.GetObject();
|
|
obj.setObjectParent(this);
|
|
}
|
|
else {
|
|
//Player has no item
|
|
|
|
}
|
|
}
|
|
else {
|
|
//Item on Counter
|
|
//Check player if he has something
|
|
if (interactionBehaviour.HasObject()) {
|
|
//Player has something
|
|
}
|
|
else {
|
|
//Player has nothing
|
|
//Take the object
|
|
GetObject().setObjectParent(interactionBehaviour);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public Transform GetHolderTransform() {
|
|
return _counterObjectHandle;
|
|
}
|
|
|
|
public void SetObject(Object obj) {
|
|
this._currentObject = obj;
|
|
}
|
|
|
|
public Object GetObject() {
|
|
return this._currentObject;
|
|
}
|
|
|
|
public void ClearObject() {
|
|
this._currentObject = null;
|
|
}
|
|
|
|
public bool HasObject() {
|
|
return this._currentObject != null;
|
|
}
|
|
} |