Exemplo n.º 1
0
        private void RaiseVertex(Vector3 vertex, int dy)
        {
            var comparer      = new Vector3Comparer();
            var affectedHexes = Hexes.Where(h => h.Geometry.Points.Values.Any(v => comparer.Equals(v, vertex)))
                                .Select(h => new {
                hex   = h,
                point = h.Geometry.Points.First(p => comparer.Equals(p.Value, vertex)).Key
            }).ToList();

            if (!affectedHexes.All(h => h.hex.CanRaisePoint(h.point, dy)))
            {
                return;
            }
            foreach (var affectedHex in affectedHexes)
            {
                if (dy > 0)
                {
                    affectedHex.hex.Raise(affectedHex.point);
                }
                else if (dy < 0)
                {
                    affectedHex.hex.Lower(affectedHex.point);
                }
                else
                {
                    return;
                }
            }
            affectedHexes.Select(h => h.hex.PatchID).Distinct().ToList().ForEach(i => DirtyPatches.Add(i));
        }
Exemplo n.º 2
0
        public List <HexagonPoint> GetMatchingPoints(Hexagon neighbor)
        {
            var comparer = new Vector3Comparer();
            var points   = Geometry.Border.ToList();

            return(neighbor.Geometry.Points.Where(np => points.Any(p => comparer.Equals(p, np.Value))).Select(np => np.Key).ToList());
        }