Пример #1
0
        public static bool IsSet(SetCard setCard1, SetCard setCard2, SetCard setCard3)
        {
            Contract.Requires <ArgumentNullException>(setCard1 != null);
            Contract.Requires <ArgumentNullException>(setCard2 != null);
            Contract.Requires <ArgumentNullException>(setCard3 != null);

            Contract.Requires <ArgumentOutOfRangeException>(setCard1 != setCard2);
            Contract.Requires <ArgumentOutOfRangeException>(setCard3 != setCard1 && setCard3 != setCard2);

            IList <int> c1 = setCard1.Profile;
            IList <int> c2 = setCard2.Profile;
            IList <int> c3 = setCard3.Profile;

            bool isSet = true;

            for (int i = 0; i < 4; i++)
            {
                if (c1[i] == c2[i])
                {
                    isSet = isSet && (c2[i] == c3[i]);
                }
                else
                {
                    isSet = isSet && ((c1[i] != c3[i]) && (c2[i] != c3[i]));
                }

                if (!isSet)
                {
                    break;
                }
            }

            return(isSet);
        } // bool IsSet()
Пример #2
0
        public static Drawing GetFullCardDrawing(SetCard setCard)
        {
            Drawing designDrawing = GetCardDesignDrawing(setCard);

            DrawingGroup group = new DrawingGroup();

            group.Children.Add(s_cardDrawing);
            group.Children.Add(designDrawing);

            return(group);
        }
Пример #3
0
 private void resetMaterials()
 {
     if (m_set != null)
     {
         for (int i = 0; i < m_cards.Count; i++)
         {
             SetCard card = m_set[i];
             m_cards[i].SetCard(card);
         }
     }
 }
Пример #4
0
        private static SetCard[] GetDeck()
        {
            SetCard[] cards = new SetCard[c_deckSize];

            for (int i = 0; i < c_deckSize; i++)
            {
                SetCard setCard = new SetCard(i);
                cards[setCard.Index] = setCard;
            }

            return(cards);
        }
Пример #5
0
            public void SetCard(SetCard card)
            {
                if (m_card != card)
                {
                    m_card = card;

                    if (m_card != null)
                    {
                        Drawing         drawing  = SetCardDrawingFactory.GetFullCardDrawing(m_card);
                        DrawingBrush    brush    = new DrawingBrush(drawing);
                        DiffuseMaterial material = new DiffuseMaterial(brush);
                        material.Freeze();

                        m_geometry.Material = material;
                    }
                    else
                    {
                        m_geometry.Material = new DiffuseMaterial(Brushes.Transparent);
                    }
                }
            }
Пример #6
0
 public static bool Convert(bool canPlay, SetCard card)
 {
     return(canPlay && (card != null));
 }
Пример #7
0
        public static Drawing GetCardDesignDrawing(SetCard setCard)
        {
            Contract.Requires <ArgumentNullException>(setCard != null);

            DrawingGroup drawingGroup = new DrawingGroup();

            #region Border

            RectangleGeometry cardBorderGeometry = new RectangleGeometry(new Rect(s_cardSize));
            GeometryDrawing   cardBorderDrawing  =
                new GeometryDrawing(null, s_borderPen, cardBorderGeometry);

            drawingGroup.Children.Add(cardBorderDrawing);

            #endregion

            #region Brush

            Brush itemBrush = null;
            switch (setCard.Fill)
            {
            case SetFill.Solid:
                switch (setCard.Color)
                {
                case SetColor.Green:
                    itemBrush = Brushes.Green;
                    break;

                case SetColor.Purple:
                    itemBrush = Brushes.Purple;
                    break;

                case SetColor.Red:
                    itemBrush = Brushes.Red;
                    break;
                }
                break;

            case SetFill.Stripe:
                switch (setCard.Color)
                {
                case SetColor.Green:
                    itemBrush = s_stripedGreenBrush;
                    break;

                case SetColor.Purple:
                    itemBrush = s_stripedPurpleBrush;
                    break;

                case SetColor.Red:
                    itemBrush = s_stripedRedBrush;
                    break;
                }
                break;

            case SetFill.Empty:
                itemBrush = Brushes.Transparent;
                break;
            }

            #endregion

            Pen itemPen = null;
            switch (setCard.Color)
            {
            case SetColor.Green:
                itemPen = s_greenPen;
                break;

            case SetColor.Purple:
                itemPen = s_purplePen;
                break;

            case SetColor.Red:
                itemPen = s_redPen;
                break;
            }

            Point startCenter = new Point(s_cardSize.Width / 2, s_cardSize.Height / 2);

            if (setCard.Count == 2)
            {
                startCenter.Y -= c_centerOffset / 2;
            }
            else if (setCard.Count == 3)
            {
                startCenter.Y -= c_centerOffset;
            }

            GeometryGroup geometryGroup = new GeometryGroup();

            for (int i = 0; i < setCard.Count; i++)
            {
                Geometry itemGeometry = null;

                switch (setCard.Shape)
                {
                case SetShape.Diamond:

                    itemGeometry = GetDiamondGeometry();
                    break;

                case SetShape.Oval:

                    itemGeometry = new RectangleGeometry(
                        new Rect(s_itemSize),
                        s_itemSize.Height / 2,
                        s_itemSize.Height / 2);
                    break;

                case SetShape.Squiggle:

                    itemGeometry = new PathGeometry(s_squigglePathFigureCollection);
                    break;
                }

                itemGeometry.Transform = GetCenterTransform(itemGeometry, startCenter);

                geometryGroup.Children.Add(itemGeometry);

                startCenter.Y += c_centerOffset;
            }

            Debug.Assert(itemBrush != null);
            Debug.Assert(itemPen != null);

            GeometryDrawing itemDrawing =
                new GeometryDrawing(itemBrush, itemPen, geometryGroup);

            drawingGroup.Children.Add(itemDrawing);

            return(drawingGroup);
        }