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); } }
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)); } } } } } }
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; } }
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; } }
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; } }
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; } }