示例#1
0
    public void ShowPath(Hex hex)
    {
        NavigableNode markingNode = GetNodeForHex(hex) as NavigableNode;

        if (markingNode != null && MarkedNode != markingNode)
        {
            if (MarkedNode != null)
            {
                RemovePath();
            }

            MarkedNode = markingNode;

            while (markingNode.Source != null)
            {
                markingNode.Highlight();
                markingNode = markingNode.Source as NavigableNode;
            }
        }
    }
示例#2
0
    protected override Node GenerateNode(Node sourceNode, Hex generationHex)
    {
        Node NodeToReturn = null;

        int heightDifference = generationHex.GetHeight() - sourceNode.OwnedHex.GetHeight();

        if (isHazardousHeight(generationHex, sourceNode))
        {
            NodeToReturn = new HazardousNode(generationHex, sourceNode, sourceNode.CumulativeCost + generationHex.GetMovementCost(), -heightDifference);
        }
        else if (heightDifference < 0)
        {
            NodeToReturn = new NavigableNode(generationHex, sourceNode, sourceNode.CumulativeCost + generationHex.GetMovementCost());
        }
        else if (isReachableFromNode(generationHex, sourceNode))
        {
            NodeToReturn = new NavigableNode(generationHex, sourceNode, sourceNode.CumulativeCost + generationHex.GetMovementCost() + Mathf.Abs(heightDifference));
        }

        return(NodeToReturn);
    }