Beispiel #1
0
        private static Direction GetVisibilityMask(TilePosition position, IDictionary <TilePosition, GroundType> groundTypes)
        {
            if (!groundTypes.ContainsKey(position))
            {
                return(Direction.None);
            }
            if (groundTypes[position].IsInVisible())
            {
                return(Direction.None);
            }

            return(position.Neighbors()
                   .Where(dirAndPos => !HasVisibleNeighbor(groundTypes, dirAndPos.Value))
                   .Aggregate(Direction.None, (prev, next) => prev.CombineFlags(next.Key)));
        }