Selling Functionality, Picking up items, Basic computer

This commit is contained in:
2024-10-21 01:07:44 +02:00
parent f594bdf112
commit 19b7964f83
117 changed files with 9452 additions and 540 deletions

View File

@@ -13,7 +13,7 @@ public class InteractionBehaviour : MonoBehaviour, IObjectParentHolder {
[SerializeField] private LayerMask _interactionLayer;
private EmptyCounter _lastInteractedObject = null;
private GameObject _lastInteractedObject = null;
public event EventHandler<OnSelectedCounterArgs> OnSelectedCounter;
@@ -21,7 +21,7 @@ public class InteractionBehaviour : MonoBehaviour, IObjectParentHolder {
private Object _heldObject;
public class OnSelectedCounterArgs : EventArgs {
public EmptyCounter selectedCounter;
public GameObject selectedCounter;
}
void Start() {
@@ -43,29 +43,32 @@ public class InteractionBehaviour : MonoBehaviour, IObjectParentHolder {
RaycastHit hit;
Debug.DrawRay(origin, transform.forward * _interactionDistance, Color.red);
if (Physics.Raycast(origin, transform.forward, out hit, _interactionDistance, _interactionLayer)) {
if (hit.transform.TryGetComponent(out EmptyCounter emptyCounter)) {
if (_lastInteractedObject != hit.transform.gameObject) {
SetSelectedCounter(emptyCounter);
// Debug.Log("Hitting something!");
GameObject hitObject = hit.transform.gameObject;
//Check if the object has a component that has the IInteractable interface
if (hitObject.TryGetComponent(out IInteractable interactable)) {
if(_lastInteractedObject != hitObject) {
setSelectedObject(hitObject);
}
}
else {
SetSelectedCounter(null);
setSelectedObject(null);
}
}
else {
SetSelectedCounter(null);
setSelectedObject(null);
}
}
public void Interact() {
if (_lastInteractedObject == null) return;
if (_lastInteractedObject.TryGetComponent(out EmptyCounter emptyCounter)) {
emptyCounter.Interact();
if (_lastInteractedObject.TryGetComponent(out IInteractable interactable)) {
interactable.Interact();
}
}
private void SetSelectedCounter(EmptyCounter selectedCounter) {
private void setSelectedObject(GameObject selectedCounter) {
_lastInteractedObject = selectedCounter;
OnSelectedCounter?.Invoke(this, new OnSelectedCounterArgs { selectedCounter = _lastInteractedObject });
}