コード例 #1
0
        public void Draw(Renderer sb, SpriteFont font, Vector2 position, Color color)
        {
            Vector2 fontSize = font.MeasureString("qQ");
            int     iconSize = (int)fontSize.Y;
            float   fX       = position.X;
            float   fY       = position.Y;

            foreach (PieceInfo piece in m_Pieces)
            {
                if (piece.m_Str != null)
                {
                    Happiness.ShadowString(sb, font, piece.m_Str, new Vector2(fX, fY), color);
                    fX += font.MeasureString(piece.m_Str).X;
                }
                if (piece.m_Icon != null)
                {
                    sb.Draw(piece.m_Icon, new Rectangle((int)fX, (int)fY, iconSize, iconSize), Color.White);
                    fX += iconSize;
                }
            }
        }
コード例 #2
0
 public void Draw(Renderer sb)
 {
     sb.Draw(Assets.GoldCoin, m_GoldCoinRect, Color.White);
     sb.DrawString(Assets.HelpFont, m_szCoins, m_vCoinsPosition, Color.Goldenrod);
 }
コード例 #3
0
ファイル: AnimatedSprite.cs プロジェクト: acid1789/Happiness
 public void Draw(Renderer spriteBatch, Rectangle rDrawRect, Color DrawColor)
 {
     spriteBatch.Draw(m_Textures[m_iCurrentTexture], rDrawRect, DrawColor);
 }
コード例 #4
0
 void DrawArrow(Renderer sb)
 {
     sb.Draw(Assets.Arrow, m_vArrowPosition, null, null, m_vArrowOrigin, m_fArrowRotation, m_vArrowScale, Color.White, SpriteEffects.None, 0);
 }
コード例 #5
0
        void DrawClue(Renderer sb, int x, int y, Clue c, bool bHintClue)
        {
            Rectangle[] rects = new Rectangle[3];
            rects[0] = new Rectangle(x, y, m_IconSize, m_IconSize);
            rects[1] = new Rectangle(x, y + m_IconSize, m_IconSize, m_IconSize);
            rects[2] = new Rectangle(x, y + (m_IconSize * 2), m_IconSize, m_IconSize);
            Rectangle bounds = new Rectangle(x, y, m_IconSize, m_IconSize * 3);

            int[] iIcons    = new int[3];
            int[] iRows     = c.GetRows();
            int   iNumIcons = c.GetIcons(GameScene.Puzzle, iIcons);

            // Draw the frame
            sb.Draw(Assets.TransGray, bounds, Color.White);
            sb.Draw(Assets.GoldBarVertical, new Rectangle(x - 3, y - 3, 3, bounds.Height + 6), Color.White);
            sb.Draw(Assets.GoldBarHorizontal, new Rectangle(x - 3, y - 3, bounds.Width + 6, 3), Color.White);
            sb.Draw(Assets.GoldBarVertical, new Rectangle(bounds.Right, y - 3, 3, bounds.Height + 6), Color.White);
            sb.Draw(Assets.GoldBarHorizontal, new Rectangle(x - 3, bounds.Bottom, bounds.Width + 6, 3), Color.White);

            // Draw the icons

            for (int j = 0; j < iNumIcons; j++)
            {
                sb.Draw(GameScene.GetIcon(iRows[j], iIcons[j]), rects[j], Color.White);
                if (bHintClue)
                {
                    Assets.HintSprite.Draw(sb, rects[j], Color.White);
                }
            }

            // Draw the operational overlay
            Rectangle[] overlayRects = new Rectangle[2];
            overlayRects[0] = new Rectangle(x, y + (m_IconSize / 2), m_IconSize, m_IconSize);
            overlayRects[1] = new Rectangle(x, y + (m_IconSize / 2) + m_IconSize, m_IconSize, m_IconSize);
            switch (c.m_VerticalType)
            {
            case eVerticalType.Two:
            case eVerticalType.Three:
                break;

            case eVerticalType.EitherOr:
                sb.Draw(Assets.EitherOrOverlay, overlayRects[1], Color.White);
                break;

            case eVerticalType.TwoNot:
                sb.Draw(Assets.NotOverlay, overlayRects[0], Color.White);
                break;

            case eVerticalType.ThreeTopNot:
                sb.Draw(Assets.NotOverlay, rects[0], Color.White);
                break;

            case eVerticalType.ThreeMidNot:
                sb.Draw(Assets.NotOverlay, rects[1], Color.White);
                break;

            case eVerticalType.ThreeBotNot:
                sb.Draw(Assets.NotOverlay, rects[2], Color.White);
                break;
            }
        }
コード例 #6
0
        void DrawClue(Renderer sb, int x, int y, Clue c, bool bHintClue)
        {
            Rectangle[] rects = new Rectangle[3];
            rects[0] = new Rectangle(x, y, m_IconSize, m_IconSize);
            rects[1] = new Rectangle(x + m_IconSize, y, m_IconSize, m_IconSize);
            rects[2] = new Rectangle(x + (m_IconSize * 2), y, m_IconSize, m_IconSize);
            Rectangle bounds = new Rectangle(x, y, m_IconSize * 3, m_IconSize);

            int[] iIcons    = new int[3];
            int[] iRows     = c.GetRows();
            int   iNumIcons = c.GetIcons(GameScene.Puzzle, iIcons);

            // Draw the frame
            //sb.Draw(m_Game.TransGrey, bounds, Color.White);
            sb.Draw(Assets.GoldBarHorizontal, new Rectangle(x - 3, y - 3, bounds.Width + 6, 3), Color.White);
            sb.Draw(Assets.GoldBarHorizontal, new Rectangle(x - 3, bounds.Bottom, bounds.Width + 6, 3), Color.White);
            sb.Draw(Assets.GoldBarVertical, new Rectangle(x - 3, y - 3, 3, bounds.Height + 6), Color.White);
            sb.Draw(Assets.GoldBarVertical, new Rectangle(bounds.Right, y - 3, 3, bounds.Height + 6), Color.White);

            // Draw the icons
            if (c.m_HorizontalType == eHorizontalType.LeftOf || c.m_HorizontalType == eHorizontalType.NotLeftOf)
            {
                sb.Draw(GameScene.GetIcon(iRows[0], iIcons[0]), rects[0], Color.White);
                sb.Draw(Assets.LeftOfIcon, rects[1], Color.White);
                sb.Draw(GameScene.GetIcon(iRows[1], iIcons[1]), rects[2], Color.White);

                if (bHintClue)
                {
                    Assets.HintSprite.Draw(sb, rects[0], Color.White);
                    Assets.HintSprite.Draw(sb, rects[2], Color.White);
                }
            }
            else
            {
                for (int j = 0; j < iNumIcons; j++)
                {
                    sb.Draw(GameScene.GetIcon(iRows[j], iIcons[j]), rects[j], Color.White);
                    if (bHintClue)
                    {
                        Assets.HintSprite.Draw(sb, rects[j], Color.White);
                    }
                }
            }

            // Draw the operational overlay
            switch (c.m_HorizontalType)
            {
            case eHorizontalType.NextTo:
            case eHorizontalType.LeftOf:
                break;

            case eHorizontalType.NotLeftOf:
            case eHorizontalType.NotNextTo:
                sb.Draw(Assets.NotOverlay, rects[1], Color.White);
                break;

            case eHorizontalType.Span:
                sb.Draw(Assets.SpanOverlay, bounds, Color.White);
                break;

            case eHorizontalType.SpanNotLeft:
                sb.Draw(Assets.SpanOverlay, bounds, Color.White);
                sb.Draw(Assets.NotOverlay, rects[0], Color.White);
                break;

            case eHorizontalType.SpanNotMid:
                sb.Draw(Assets.SpanOverlay, bounds, Color.White);
                sb.Draw(Assets.NotOverlay, rects[1], Color.White);
                break;

            case eHorizontalType.SpanNotRight:
                sb.Draw(Assets.SpanOverlay, bounds, Color.White);
                sb.Draw(Assets.NotOverlay, rects[2], Color.White);
                break;
            }
        }
コード例 #7
0
        void DrawClueDescription_Horizontal(Renderer spriteBatch, Clue clue)
        {
            int iX = m_Rect.Left;
            int iY = (m_Rect.Top + (m_Rect.Height >> 1)) - (m_iClueIconSize >> 1);

            int[] iIcons = new int[3];
            int[] iRows  = clue.GetRows();
            clue.GetIcons(GameScene.Puzzle, iIcons);
            string szDesc;

            switch (clue.m_HorizontalType)
            {
            case eHorizontalType.NextTo:
                spriteBatch.Draw(GameScene.GetIcon(iRows[0], iIcons[0]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "is next to";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[1], iIcons[1]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                break;

            case eHorizontalType.NotNextTo:
                spriteBatch.Draw(GameScene.GetIcon(iRows[0], iIcons[0]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "is not next to";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[1], iIcons[1]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                break;

            case eHorizontalType.LeftOf:
                spriteBatch.Draw(GameScene.GetIcon(iRows[0], iIcons[0]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "is left of";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[1], iIcons[1]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                break;

            case eHorizontalType.NotLeftOf:
                spriteBatch.Draw(GameScene.GetIcon(iRows[0], iIcons[0]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "is not left of";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[1], iIcons[1]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                break;

            case eHorizontalType.Span:
                spriteBatch.Draw(GameScene.GetIcon(iRows[1], iIcons[1]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "has";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[0], iIcons[0]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "next to it on one side, and";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[2], iIcons[2]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "next to it on the other";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                break;

            case eHorizontalType.SpanNotLeft:
                spriteBatch.Draw(GameScene.GetIcon(iRows[1], iIcons[1]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "has";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[2], iIcons[2]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "next to it on one side, and not";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[0], iIcons[0]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "next to it on the other";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                break;

            case eHorizontalType.SpanNotMid:
                spriteBatch.Draw(GameScene.GetIcon(iRows[0], iIcons[0]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "and";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[2], iIcons[2]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "have one column between them without";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[1], iIcons[1]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                break;

            case eHorizontalType.SpanNotRight:
                spriteBatch.Draw(GameScene.GetIcon(iRows[1], iIcons[1]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "has";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[0], iIcons[0]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "on one side, and not";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[2], iIcons[2]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "on the other";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                break;
            }
        }
コード例 #8
0
        void DrawClueDescription_Vertical(Renderer spriteBatch, Clue clue)
        {
            int iX = m_Rect.Left;
            int iY = (m_Rect.Top + (m_Rect.Height >> 1)) - (m_iClueIconSize >> 1);

            int[] iIcons = new int[3];
            int[] iRows  = clue.GetRows();
            clue.GetIcons(GameScene.Puzzle, iIcons);
            string szDesc;

            switch (clue.m_VerticalType)
            {
            case eVerticalType.Two:
                spriteBatch.Draw(GameScene.GetIcon(iRows[0], iIcons[0]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "is in the same column as";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[1], iIcons[1]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                break;

            case eVerticalType.Three:
                spriteBatch.Draw(GameScene.GetIcon(iRows[0], iIcons[0]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "is in the same column as";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[1], iIcons[1]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "and";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[2], iIcons[2]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                break;

            case eVerticalType.EitherOr:
                spriteBatch.Draw(GameScene.GetIcon(iRows[0], iIcons[0]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "is either in the column with";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[1], iIcons[1]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "or the column with";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[2], iIcons[2]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                break;

            case eVerticalType.TwoNot:
                spriteBatch.Draw(GameScene.GetIcon(iRows[0], iIcons[0]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX    += m_iClueIconSize + 6;
                szDesc = "is not in the same column as";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;
                spriteBatch.Draw(GameScene.GetIcon(iRows[1], iIcons[1]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                break;

            case eVerticalType.ThreeTopNot:
                spriteBatch.Draw(GameScene.GetIcon(iRows[1], iIcons[1]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX += m_iClueIconSize + 6;

                szDesc = "and";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;

                spriteBatch.Draw(GameScene.GetIcon(iRows[2], iIcons[2]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX += m_iClueIconSize + 6;

                szDesc = "are in the same column but";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;

                spriteBatch.Draw(GameScene.GetIcon(iRows[0], iIcons[0]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX += m_iClueIconSize + 6;

                szDesc = "is not";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                break;

            case eVerticalType.ThreeMidNot:
                spriteBatch.Draw(GameScene.GetIcon(iRows[0], iIcons[0]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX += m_iClueIconSize + 6;

                szDesc = "and";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;

                spriteBatch.Draw(GameScene.GetIcon(iRows[2], iIcons[2]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX += m_iClueIconSize + 6;

                szDesc = "are in the same column but";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;

                spriteBatch.Draw(GameScene.GetIcon(iRows[1], iIcons[1]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX += m_iClueIconSize + 6;

                szDesc = "is not";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                break;

            case eVerticalType.ThreeBotNot:
                spriteBatch.Draw(GameScene.GetIcon(iRows[0], iIcons[0]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX += m_iClueIconSize + 6;

                szDesc = "and";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;

                spriteBatch.Draw(GameScene.GetIcon(iRows[1], iIcons[1]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX += m_iClueIconSize + 6;

                szDesc = "are in the same column but";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                iX += (int)Assets.DialogFont.MeasureString(szDesc).X + 6;

                spriteBatch.Draw(GameScene.GetIcon(iRows[2], iIcons[2]), new Rectangle(iX, iY, m_iClueIconSize, m_iClueIconSize), Color.White);
                iX += m_iClueIconSize + 6;

                szDesc = "is not";
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX + 2, iY + 2), Color.Black);
                spriteBatch.DrawString(Assets.DialogFont, szDesc, new Vector2(iX, iY), Color.White);
                break;
            }
        }