Ejemplo n.º 1
0
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            paused = !paused;
        }

        if (character == null || !character.isPlayer)
        {
            character = ObjectManager.playerCharacter;
        }
        else
        {
            if (character.IsMoving)
            {
                turnTimer -= Time.deltaTime;
                if (turnTimer <= 0 && !paused)
                {
                    ObjectManager.TakeTurn();
                    turnTimer = TurnDuration;
                }
            }
            else
            {
                turnTimer = 0;

                bool leftClick  = Input.GetMouseButtonDown(0);
                bool rightClick = Input.GetMouseButtonDown(1);

                if (leftClick || rightClick)
                {
                    if (interactionsMenu != null && !RectTransformUtility.RectangleContainsScreenPoint(interactionsMenu.GetComponent <RectTransform>(), Input.mousePosition))
                    {
                        ClearInteractionMenu();
                    }
                    else if (!EventSystem.current.IsPointerOverGameObject())
                    {
                        RaycastHit[] hits = Physics.RaycastAll(Camera.ScreenPointToRay(Input.mousePosition))
                                            .Where(h => {
                            EntityObject entityObject = h.transform.GetComponent <EntityObject>();
                            return(entityObject != null && entityObject.Entity.seen);
                        }).ToArray();
                        if (hits.Length > 0)
                        {
                            RaycastHit   hit          = hits[0];
                            Entity       entity       = hit.transform.GetComponent <EntityObject>().Entity;
                            Interactable interactable = entity as Interactable;
                            if (interactable == null)
                            {
                                if (leftClick)
                                {
                                    character.RequestPathToPosition(NodeGrid.GetCoordFromWorldPos(hit.point + 0.05f * hit.normal));
                                }
                            }
                            else
                            {
                                if (rightClick)
                                {
                                    DisplayInteractable(interactable);
                                }
                                else
                                {
                                    interactable.MoveTo(character);
                                }
                            }
                        }
                    }
                }

                if (Input.GetKeyDown(KeyCode.Keypad5))
                {
                    character.StopPath();
                    ObjectManager.TakeTurn();
                }

                if (Input.GetKeyDown(KeyCode.Keypad1))
                {
                    MoveTowards(Coord.Back + Coord.Left);
                }

                if (Input.GetKeyDown(KeyCode.Keypad2) || Input.GetKeyDown(KeyCode.DownArrow))
                {
                    MoveTowards(Coord.Back);
                }

                if (Input.GetKeyDown(KeyCode.Keypad3))
                {
                    MoveTowards(Coord.Back + Coord.Right);
                }

                if (Input.GetKeyDown(KeyCode.Keypad4) || Input.GetKeyDown(KeyCode.LeftArrow))
                {
                    MoveTowards(Coord.Left);
                }

                if (Input.GetKeyDown(KeyCode.Keypad6) || Input.GetKeyDown(KeyCode.RightArrow))
                {
                    MoveTowards(Coord.Right);
                }

                if (Input.GetKeyDown(KeyCode.Keypad7))
                {
                    MoveTowards(Coord.Forward + Coord.Left);
                }

                if (Input.GetKeyDown(KeyCode.Keypad8) || Input.GetKeyDown(KeyCode.UpArrow))
                {
                    MoveTowards(Coord.Forward);
                }

                if (Input.GetKeyDown(KeyCode.Keypad9))
                {
                    MoveTowards(Coord.Forward + Coord.Right);
                }
            }
        }
    }