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; } } }
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); }