Beispiel #1
0
        public void Draw(SpriteBatch sb)
        {
            // Draw background/frame
            sb.Draw(Assets.TransGray, m_Rect, Color.White);
            sb.Draw(Assets.TransparentBox, m_Rect, Color.SteelBlue);
            sb.Draw(Assets.TransparentBox, m_Rect, Color.SteelBlue);

            // Draw Icons
            if (m_iLargeIcon >= 0)
            {
                sb.Draw(m_Game.GetIcon(m_iRow, m_iLargeIcon), m_LargeIconRect, Color.White);
            }
            else
            {
                for (int i = 0; i < m_IconRects.Length; i++)
                {
                    if (m_bIconStatus[i])
                    {
                        sb.Draw(m_Game.GetIcon(m_iRow, i), m_IconRects[i], Color.White);
                    }

                    if (i == m_iSelectedIcon)
                    {
                        Assets.HintSprite.Draw(sb, m_IconRects[i], Color.White);
                    }
                }
            }

            // Draw Buttons
            foreach (UIButton b in m_Buttons)
            {
                b.Draw(sb);
            }
        }
Beispiel #2
0
        void DrawIcons(SpriteBatch sb)
        {
            for (int y = 0; y < GameScene.Puzzle.m_iSize; y++)
            {
                int ycoord = m_Rect.Top + (y * m_iCellHeight);

                for (int x = 0; x < GameScene.Puzzle.m_iSize; x++)
                {
                    int xcoord = m_Rect.Left + (x * m_iCellWidth);


                    int iFinal = GameScene.Puzzle.m_Rows[y].m_Cells[x].m_iFinalIcon;
                    if (iFinal >= 0)
                    {
                        Rectangle r = m_FinalRect;
                        r.Offset(xcoord, ycoord);
                        bool error = Happiness.Game.ErrorDetector && !GameScene.Puzzle.IsCorrect(y, x);
                        sb.Draw(GameScene.GetIcon(y, iFinal), r, error ? Color.Red : Color.White);

                        if (GameScene.ShouldDrawHint(y, x, iFinal))
                        {
                            Assets.HintSprite.Draw(sb, r, Color.White);
                        }
                    }
                    else
                    {
                        for (int iIcon = 0; iIcon < GameScene.Puzzle.m_iSize; iIcon++)
                        {
                            if (GameScene.Puzzle.m_Rows[y].m_Cells[x].m_bValues[iIcon])
                            {
                                Rectangle r = m_SmallRects[iIcon];
                                r.Offset(xcoord, ycoord);
                                sb.Draw(GameScene.GetIcon(y, iIcon), r, Color.White);

                                if (GameScene.ShouldDrawHint(y, x, iIcon))
                                {
                                    Assets.HintSprite.Draw(sb, r, Color.White);
                                }
                            }
                            else if (Happiness.Game.ErrorDetector2 && GameScene.Puzzle.SolutionIcon(y, x) == iIcon)
                            {
                                Rectangle r = m_SmallRects[iIcon];
                                r.Offset(xcoord, ycoord);
                                sb.Draw(GameScene.GetIcon(y, iIcon), r, new Color(Color.Red, 0.0625f));
                            }
                        }
                    }
                }
            }
        }
Beispiel #3
0
        void DrawClue(SpriteBatch 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;
            }
        }
Beispiel #4
0
        void DrawClueDescription_Horizontal(SpriteBatch 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;
            }
        }
Beispiel #5
0
        void DrawClueDescription_Vertical(SpriteBatch 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;
            }
        }
Beispiel #6
0
        void DrawClue(SpriteBatch 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;
            }
        }