private List <DistanceMarker> Flood(DistanceMarker currentHexMarker, int currentFaction, float maxMovement) { List <DistanceMarker> _reachableHexes = new List <DistanceMarker>(); for (int i = 0; i < 6; i++) { int testX = currentHexMarker._hex._x + _updateOrder[i, 0]; int testY = currentHexMarker._hex._y + _updateOrder[i, 1]; int[] arrayIndex = HexCoordToArrayindex(new HexCooridnates(testX, testY)); //tests if hex exists if (testX >= 0 && testX < _dimensions[0] && testY >= 0 - (testX / 2) && testY < _dimensions[1] - (testX / 2)) { DistanceMarker marker = new DistanceMarker(new HexCooridnates(testX, testY), currentHexMarker._distance + _hexes[arrayIndex[0], arrayIndex[1]].MovementPointsRequired(currentFaction)); //Checks if marker is in range if (marker._distance <= maxMovement && IsShorterRoute(_reachableHexes, marker)) { _reachableHexes.Add(marker); _reachableHexes.AddRange(Flood(marker, currentFaction, maxMovement)); } } } return(_reachableHexes); }
public void AddToList() { var dm = new DistanceMarker(); dm.anchor = Session.CreateAnchor(currentPose); dm.distanceDisplayInstance = Instantiate(meterText); dm.anchorMarker = Instantiate(anchorMarker); dm.anchorMarker.transform.position = dm.anchor.transform.position; distanceMarkers.Add(dm); }
private bool IsShorterRoute(List <DistanceMarker> reachableHexes, DistanceMarker current) { foreach (DistanceMarker old in reachableHexes) { if (current._hex._x == old._hex._x && current._hex._y == old._hex._y && old._distance < current._distance) { return(false); } } return(true); }
public void PackageMarkerClicked(DistanceMarker marker) { RemoveAllMarkers(); GamePlayer.localInstance.SetSelectedUnits(marker.loc.transform); }