Beispiel #1
0
        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);
        }
Beispiel #4
0
        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;
            }
        }