Exemplo n.º 1
0
    // Check this first, then check to use held item
    private void InteractWithItem()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            if (GameManager._instance.interactables.Count > 0)
            {
                GameObject closestObject   = null;
                float      closestDistance = float.MaxValue;

                foreach (GameObject element in GameManager._instance.interactables)
                {
                    float distance = Vector3.Distance(transform.position, element.transform.position);
                    if (distance < GameInfo.playerInteractableRange && distance < closestDistance)
                    {
                        closestObject   = element;
                        closestDistance = distance;
                    }
                }

                if (closestObject != null)
                {
                    if (closestObject.tag == "Dispenser")
                    {
                        ItemDispenser dispenser = closestObject.GetComponent <ItemDispenser>();
                        dispenser.Interact();
                    }
                    else if (closestObject.tag == "Preparer")
                    {
                        ItemPreparer preparer = closestObject.GetComponent <ItemPreparer>();
                        preparer.Interact();
                    }
                    else if (closestObject.tag == "Resource Dispenser")
                    {
                        ResourceReplenisher replenisher = closestObject.GetComponent <ResourceReplenisher>();
                        replenisher.Interact();
                    }
                    else if (closestObject.tag == "Item Generator")
                    {
                        ItemGenerator generator = closestObject.GetComponent <ItemGenerator>();
                        generator.Interact();
                    }
                    else if (closestObject.tag == "Baby")
                    {
                        Baby baby = closestObject.GetComponent <Baby>();
                        baby.Interact();
                    }

                    isInteracting = true;
                }
                else
                {
                    print("none found, attempting to use item on self");
                    UseHeldItem();
                }
            }
            else
            {
                isInteracting = false;
            }
        }
    }