private void DrawContent(SpriteBatch spriteBatch) { int currentX = 0; for (int columnIndex = 0; columnIndex < _columnHeaders.Count; columnIndex++) { ColumnHeader column = _columnHeaders[columnIndex]; DrawCellContent(spriteBatch, column.Caption, new Vector2(currentX, 0), HeaderColor); for (int i = 0; i < _rows.Count; i++) { Cell cell = _rows[i].Cells[columnIndex]; int indent = cell.HeadId > 0 ? RowHeight + 2 : 0; Vector2 position = new Vector2(currentX, (i + 1) * RowHeight); DrawCellContent(spriteBatch, cell.Text, position + new Vector2(indent, 0), _rows[i].Color.GetValueOrDefault(ContentColor)); if (cell.HeadId <= 0) { continue; } var p = (Start + position + new Vector2(1)).ToPoint(); Heads.Draw(spriteBatch, cell.HeadId, p.X, p.Y, RowHeight - 2, RowHeight - 2); } currentX += column.Width; } }
public override void OnDraw(float elapsedTime) { base.OnDraw(elapsedTime); _titledBorder.Draw(Game.SpriteBatch, true); int rowHeight = Resources.NormalFont.LineSpacing + Padding; int startY = _titledBorder.ClientRectangle.Y; switch (_gameExecution.CurrentMatchResultType) { case MatchResultType.SomeOneWins: DrawWinner(startY, Game.SpriteBatch); break; case MatchResultType.Draw: DrawDraw(startY, Game.SpriteBatch); break; } startY += rowHeight; Game.ShapeRenderer.DrawLine(_titledBorder.ClientRectangle.X, startY, _titledBorder.ClientRectangle.Right, startY, Color.White); startY += PaddingToHeading; foreach (var member in _gameExecution.CurrentLevel.Figures) { Heads.Draw(Game.SpriteBatch, member.Id, _titledBorder.ClientRectangle.X, startY, rowHeight - 2, rowHeight - 2); Game.SpriteBatch.DrawString( Resources.NormalFont, member.Name, new Vector2(_titledBorder.ClientRectangle.X + rowHeight, startY), member.IsMatchWinner ? Color.Orange : Color.White); Game.SpriteBatch.DrawString( Resources.NormalFont, member.Wins.ToString(CultureInfo.InvariantCulture), new Vector2(_titledBorder.ClientRectangle.X + PlayerWidth, startY), member.IsMatchWinner ? Color.Orange : Color.White); startY += rowHeight; } startY = _titledBorder.ClientRectangle.Y + (Resources.NormalFont.LineSpacing + Padding) * 5 + PaddingToHeading; Game.ShapeRenderer.DrawLine(_titledBorder.ClientRectangle.X, startY, _titledBorder.ClientRectangle.Right, startY, Color.White); Game.SpriteBatch.DrawString(Resources.NormalFont, "Press Enter to resume", new Vector2(_titledBorder.ClientRectangle.X, startY), Color.White); }
private void DrawWinner(int startY, SpriteBatch spriteBatch) { int rowHeight = Resources.NormalFont.LineSpacing + Padding; Figure memberWhoWins = _gameExecution.CurrentLevel.Figures.First(c => c.IsMatchWinner); int currentX = _titledBorder.ClientRectangle.X; const string text = " Winner:"; spriteBatch.DrawString(Resources.NormalFont, text, new Vector2(currentX, startY), Color.White); currentX += (int)Math.Ceiling(Resources.NormalFont.MeasureString(text).X) + Padding; Heads.Draw(spriteBatch, memberWhoWins.Id, currentX, startY, rowHeight - 2, rowHeight - 2); currentX += rowHeight; spriteBatch.DrawString(Resources.NormalFont, memberWhoWins.Name, new Vector2(currentX, startY), Color.White); }
public override void OnDraw(float elapsedTime) { base.OnDraw(elapsedTime); _titledBorder.Draw(Game.SpriteBatch, true); int rowHeight = Resources.NormalFont.LineSpacing + Padding; int startY = _titledBorder.ClientRectangle.Y; int place = 1; foreach (var sortedMember in _sortedMembers) { int currentX = _titledBorder.ClientRectangle.X; Heads.Draw(Game.SpriteBatch, sortedMember.Id, currentX, startY, Resources.NormalFont.LineSpacing, Resources.NormalFont.LineSpacing); currentX += rowHeight; Game.SpriteBatch.DrawString(Resources.NormalFont, string.Format("{0}. {1} - {2}", place, sortedMember.Name, sortedMember.Wins), new Vector2(currentX, startY), Color.White); place++; startY += rowHeight; } }