Пример #1
0
    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);
    }
Пример #2
0
    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);
    }
Пример #3
0
 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);
 }