Пример #1
0
    void OnSelectedInteractableChanged(Transform t)
    {
        switch (t.parent.tag)
        {
        case "Water":
            selectedInteractable = ItemType.Water;
            break;

        case "Grass":
            selectedInteractable = ItemType.Grass;
            break;

        case "Chicken":
            selectedInteractable = ItemType.Chicken;
            break;

        case "Egg":
            selectedInteractable = ItemType.Egg;
            break;

        case "Carrot":
            selectedInteractable = ItemType.Carrot;
            break;

        case "MrBiscuits":
            selectedInteractable = ItemType.MrBiscuits;
            break;

        case "WaterSpawner":
            selectedInteractable = ItemType.WaterSpawner;
            break;

        case "GrassSpawner":
            selectedInteractable = ItemType.GrassSpawner;
            break;

        case "CarrotSpawner":
            selectedInteractable = ItemType.CarrotSpawner;
            break;

        case "MrBiscuits2":
            selectedInteractable = ItemType.MrBiscuits2;
            break;

        case "MrBiscuits3":
            selectedInteractable = ItemType.MrBiscuits3;
            break;

        case "MrBiscuits4":
            selectedInteractable = ItemType.MrBiscuits4;
            break;

        case "BatSpawner":
            selectedInteractable = ItemType.BatSpawner;
            break;
        }
        selectedInteractableTransform = t;
        if (selectedItem == ItemType.None)
        {
            switch (selectedInteractable)
            {
            case ItemType.Carrot:
            case ItemType.Chicken:
            case ItemType.Egg:
            case ItemType.Grass:
            case ItemType.Water:
                Utility.SendMessageToChildren(
                    transform.parent,
                    "SetInteraction",
                    InteractionCanvasController.Interaction.Take,
                    SendMessageOptions.DontRequireReceiver);
                break;

            default:
                Utility.SendMessageToChildren(
                    transform.parent,
                    "SetInteraction",
                    InteractionCanvasController.Interaction.None,
                    SendMessageOptions.DontRequireReceiver);
                break;
            }
        }
        else
        {
            if (FeedRules.CanBeFed(selectedInteractable, selectedItem))
            {
                Utility.SendMessageToChildren(
                    transform.parent,
                    "SetInteraction",
                    InteractionCanvasController.Interaction.Feed,
                    SendMessageOptions.DontRequireReceiver);
            }
            else
            {
                Utility.SendMessageToChildren(
                    transform.parent,
                    "SetInteraction",
                    InteractionCanvasController.Interaction.None,
                    SendMessageOptions.DontRequireReceiver);
            }
        }
    }
Пример #2
0
    void Update()
    {
        if (Input.GetButtonDown("Interact"))
        {
            // Pick up
            if (selectedItem == ItemType.None)
            {
                switch (selectedInteractable)
                {
                case ItemType.None:
                    break;

                case ItemType.Water:
                    SetSelectedItem(selectedInteractable);
                    Utility.SendMessageToChildren(
                        transform.parent,
                        "SetInteraction",
                        InteractionCanvasController.Interaction.None,
                        SendMessageOptions.DontRequireReceiver);
                    source.PlayOneShot(clips[0]);
                    break;

                case ItemType.Grass:
                case ItemType.Egg:
                case ItemType.Carrot:
                case ItemType.Chicken:
                    SetSelectedItem(selectedInteractable);
                    Utility.PhysicalDestroy(selectedInteractableTransform.parent.gameObject);
                    Utility.SendMessageToChildren(
                        transform.parent,
                        "SetInteraction",
                        InteractionCanvasController.Interaction.None,
                        SendMessageOptions.DontRequireReceiver);
                    source.PlayOneShot(clips[0]);
                    break;
                }
            }
            // Feed
            else
            {
                switch (selectedInteractable)
                {
                case ItemType.None:
                    // Eat
                    Utility.SendMessageToChildren(transform.parent, "OnFedItem", selectedItem, SendMessageOptions.DontRequireReceiver);
                    SetSelectedItem(ItemType.None);
                    fedSelf = true;
                    TryMovingPhase();
                    Utility.SendMessageToChildren(
                        transform.parent,
                        "SetInteraction",
                        InteractionCanvasController.Interaction.None,
                        SendMessageOptions.DontRequireReceiver);
                    ScreenShaker.Shake(0.5f, 0.1f);
                    source.PlayOneShot(clips[2]);
                    break;

                case ItemType.WaterSpawner:
                    break;

                case ItemType.GrassSpawner:
                    fedGrass = true;
                    TryMovingPhase();
                    if (!FeedRules.CanBeFed(selectedInteractable, selectedItem))
                    {
                        break;
                    }
                    FeedInteractable();
                    break;

                case ItemType.CarrotSpawner:
                    fedCarrot = true;
                    TryMovingPhase();
                    if (!FeedRules.CanBeFed(selectedInteractable, selectedItem))
                    {
                        break;
                    }
                    FeedInteractable();
                    break;

                case ItemType.Chicken:
                    fedChicken = true;
                    TryMovingPhase();
                    if (!FeedRules.CanBeFed(selectedInteractable, selectedItem))
                    {
                        break;
                    }
                    FeedInteractable();
                    break;

                case ItemType.MrBiscuits:
                case ItemType.MrBiscuits2:
                case ItemType.MrBiscuits3:
                case ItemType.MrBiscuits4:
                case ItemType.BatSpawner:
                    if (!FeedRules.CanBeFed(selectedInteractable, selectedItem))
                    {
                        break;
                    }
                    FeedInteractable();
                    break;
                }
            }
        }
    }