Пример #1
0
    private void Update()
    {
        // save
        if (Input.GetKeyDown(KeyCode.J))
        {
            Savegame.Save(field, chests, inventory, quickSlots);
        }

        // plant an item from quickSLot
        if (Input.GetButtonDown("UseItem"))
        {
            if (!targeter.target && targeter.IsInField())
            {
                UIItem uiItem = quickSlots.GetSelectedItem();
                if (uiItem != null)
                {
                    string     itemName = uiItem.item.name;
                    GameObject plant    = Plant.CreateObject(new PlantData(itemName, "0", targeter.transform.position));
                    //GameObject plantToPlace = GameObject.Instantiate(Resources.Load<GameObject>("Prefabs/Plants/" + itemName));
                    //plantToPlace.name = itemName + Time.time;
                    plant.transform.parent = field.transform;

                    //plantToPlace.transform.position = targeter.transform.position;
                    //plantToPlace.GetComponent<SpriteRenderer>().sortingOrder = -(int)plantToPlace.transform.position.y;

                    quickSlots.RemoveSelectedItem();

                    targeter.AddTarget(plant);
                    actionTimeStamp = Time.time;
                }
            }
        }

        // remove fruit in target
        if (Input.GetButtonDown("Submit"))
        {
            if (targeter.target)
            {
                if (targeter.target.name == "Chest")
                {
                    Chest chest = targeter.target.GetComponent <Chest>();
                    cUIC.Open(chest);
                }
                else
                {
                    Plant targetPlant = targeter.target.GetComponent <Plant>();
                    if (targetPlant.data.yield > 0)
                    {
                        Item item = targetPlant.droppedFruit;
                        inventory.AddItem(item, targetPlant.data.yield);
                        Destroy(targeter.target);
                        actionTimeStamp = Time.time;
                    }
                }
            }
        }

        if (Input.GetButtonDown("Inventory"))
        {
            iUIC.Open();
        }

        #region QuickSlot
        // selects a quickSlot
        if (Input.GetButtonDown("QuickSlotUp"))
        {
            quickSlots.SelectQuickSlot(0);
        }
        if (Input.GetButtonDown("QuickSlotRight"))
        {
            quickSlots.SelectQuickSlot(1);
        }
        if (Input.GetButtonDown("QuickSlotDown"))
        {
            quickSlots.SelectQuickSlot(2);
        }
        if (Input.GetButtonDown("QuickSlotLeft"))
        {
            quickSlots.SelectQuickSlot(3);
        }
        #endregion

        // handle grid navigation
        if (!moveInGrid)
        {
            // set animation
            if (Input.GetKey(KeyCode.D))
            {
                viewingDirection = Vector3.right;
                animator.SetBool("moveRight", true);
                animator.SetBool("moveLeft", false);
            }
            else if (Input.GetKey(KeyCode.A))
            {
                viewingDirection = Vector3.left;
                animator.SetBool("moveRight", false);
                animator.SetBool("moveLeft", true);
            }
            else
            {
                animator.SetBool("moveRight", false);
                animator.SetBool("moveLeft", false);
            }

            if (Input.GetKey(KeyCode.W))
            {
                viewingDirection = Vector3.up;
                animator.SetBool("moveUp", true);
                animator.SetBool("moveDown", false);
            }
            else if (Input.GetKey(KeyCode.S))
            {
                viewingDirection = Vector3.down;
                animator.SetBool("moveUp", false);
                animator.SetBool("moveDown", true);
            }
            else
            {
                animator.SetBool("moveUp", false);
                animator.SetBool("moveDown", false);
            }

            // switch to grid based movement
            if (Input.GetButtonDown("GridMovement"))
            {
                moveInGrid = true;
                float roundedX = Mathf.Round(transform.position.x);
                float roundedY = Mathf.Round(transform.position.y);
                desiredGridPos = new Vector3(roundedX, roundedY);

                animator.SetBool("moveUp", false);
                animator.SetBool("moveRight", false);
                animator.SetBool("moveDown", false);
                animator.SetBool("moveLeft", false);
            }
        }
        else
        {
            // go out of grid based movement
            if (Input.GetButtonDown("GridMovement"))
            {
                moveInGrid = false;
            }
        }
    }