Exemple #1
0
        public Pathfind SetDestination(Vector3 worldSpacePos)
        {
            var destination = tilemapManager.GetTileNode(tilemapManager.WorldToCell(worldSpacePos));

            pathfind.pathStatus = 0;
            StartCoroutine(WaitForPathThenQueueMoves(destination));
            return(pathfind);
        }
    // Update is called once per frame
    void Update()
    {
        if (_agent.status == AgentStatus.Dead)
        {
            return;
        }
        if (!handleInput.Value)
        {
            return;
        }
        if (!gfm.playerCanMove.Value)
        {
            return;
        }

        //keyboard Input
        if (UnityEngine.Input.GetKeyDown(KeyCode.RightArrow))
        {
            inputStack.Enqueue(Vector2Int.right);
        }
        else if (UnityEngine.Input.GetKeyDown(KeyCode.LeftArrow))
        {
            inputStack.Enqueue(Vector2Int.left);
        }
        else if (UnityEngine.Input.GetKeyDown(KeyCode.UpArrow))
        {
            inputStack.Enqueue(Vector2Int.up);
        }
        else if (UnityEngine.Input.GetKeyDown(KeyCode.DownArrow))
        {
            inputStack.Enqueue(Vector2Int.down);
        }

        // if (UnityEngine.Input.GetKeyDown(KeyCode.Space))
        // {
        //  _tilemapManager.Sound(_agent.position, 3);
        // }

        //pathfinding test.
        if (UnityEngine.Input.GetMouseButtonDown(1))
        {
            var clickPos  = _tilemapManager.WorldToCell(Camera.main.ScreenToWorldPoint(UnityEngine.Input.mousePosition));
            var clickNode = _tilemapManager.GetTileNode(clickPos);
            if (clickNode == null)
            {
                return;
            }

            StartCoroutine(WaitAndQueuePath(clickNode.position));
        }

        ///
        if (UnityEngine.Input.GetMouseButtonDown(0))
        {
            //if input for movement...
            var clickPos = _tilemapManager.WorldToCell(Camera.main.ScreenToWorldPoint(UnityEngine.Input.mousePosition));

            if (_agent.position == clickPos)
            {
                return;
            }                     //if we clicked ON the player. This how we show menu?

            if (_agent.position.x == clickPos.x)
            {
                inputStack.Enqueue(_agent.position.y < clickPos.y ? Vector2Int.up : Vector2Int.down);
            }
            else if (_agent.position.y == clickPos.y)
            {
                inputStack.Enqueue(_agent.position.x < clickPos.x ? Vector2Int.right : Vector2Int.left);
            }
        }                 //end mouse movement

        ///
        if (!_activeTurn.blockPlayerMovement && inputStack.Count > 0)
        {
            _activeTurn = _agent.Move(inputStack.Dequeue());
            if (_activeTurn.turnTaken)
            {
                _activeTurn.blockPlayerMovement = true;
            }
        }
    }