Beispiel #1
0
        /// <summary>
        /// The affected stickers for a particular slice mask.
        /// There is one sticker list per slice.
        /// </summary>
        public List <StickerList> AffectedStickersForSliceMask(int mask)
        {
            if (Earthquake)
            {
                return(AffectedStickers);
            }

            List <StickerList> result = new List <StickerList>();

            foreach (int slice in SliceMask.MaskToSlices(mask))
            {
                if (slice > AffectedStickers.Count)
                {
                    continue;
                }
                result.Add(AffectedStickers[slice - 1]);
            }
            return(result);
        }
Beispiel #2
0
        /// <summary>
        /// Grabs all the circles the apply to a given slicemask.
        /// </summary>
        public CircleNE[] CirclesForSliceMask(int mask)
        {
            // For earthquake puzzles, return all circles for now.
            if (Earthquake)
            {
                return(Circles);
            }

            int        count   = this.Circles.Length;
            List <int> indexes = new List <int>();

            foreach (int slice in SliceMask.MaskToSlices(mask))
            {
                if (slice > NumSlices)
                {
                    continue;
                }

                int index1 = slice - 2;
                if (index1 >= 0 && index1 < count)
                {
                    indexes.Add(index1);
                }

                int index2 = slice - 1;
                if (index2 >= 0 && index2 < count)
                {
                    indexes.Add(index2);
                }
            }

            indexes = indexes.Distinct().ToList();
            indexes.Sort();
            List <CircleNE> result = new List <CircleNE>();

            foreach (int i in indexes)
            {
                result.Add(this.Circles[i]);
            }
            return(result.ToArray());
        }