示例#1
0
    public void StartTurn()
    {
        movesLeft = moveDistance;
        var playerPos = mapController.GetHexPositionFor(transform.position);

        navigationController.SetPossibleMoveDistance(playerPos, moveDistance);
    }
示例#2
0
    public void NavigateTo(HexPos toHexPos)
    {
        HexPos  fromHexPos = mapController.GetHexPositionFor(player.transform.position);
        HexNode fromNode, toNode;

        if (navigationNodes.TryGetValue(fromHexPos, out fromNode) &&
            navigationNodes.TryGetValue(toHexPos, out toNode))
        {
            if (fromNode.CanReach(toHexPos, player.moveDistance))
            {
                isPlayerNavigating = true;

                moveNodes = GetShortestPathAstar(fromNode, toNode);
                if (moveNodes.Count > 1)
                {
                    // Remove start node
                    moveNodes.RemoveAt(0);
                    MoveTo(moveNodes[0], moveNodes.Count == 1);
                }
            }
        }
    }