Inheritance: System.Windows.Documents.Section
Example #1
0
        public static Block GameMessageToBlock(IGameMessage m)
        {
            if (m == null)
            {
                return(null);
            }

            if (m is PlayerEventMessage)
            {
                if (m.IsMuted)
                {
                    return(null);
                }
                var b    = new GameMessageBlock(m);
                var p    = new Paragraph();
                var prun = new Run(m.From + " ");
                prun.Foreground = m.From.Color.CacheToBrush();
                prun.FontWeight = FontWeights.Bold;
                p.Inlines.Add(prun);

                var chatRun = MergeArgsv2(m.Message, m.Arguments);
                chatRun.Foreground = new SolidColorBrush(m.From.Color);
                //chatRun.FontWeight = FontWeights.Bold;
                p.Inlines.Add(chatRun);

                b.Blocks.Add(p);

                return(b);
            }
            else if (m is ChatMessage)
            {
                if (m.IsMuted)
                {
                    return(null);
                }

                var p = new Paragraph();
                var b = new GameMessageBlock(m);

                var inline = new Span();

                inline.Foreground = m.From.Color.CacheToBrush();
                var chatRun = new Run("<" + m.From + "> ");
                chatRun.Foreground = m.From.Color.CacheToBrush();
                chatRun.FontWeight = FontWeights.Bold;
                inline.Inlines.Add(chatRun);

                inline.Inlines.Add(MergeArgsv2(m.Message, m.Arguments));

                p.Inlines.Add(inline);

                b.Blocks.Add(p);

                return(b);
            }
            else if (m is WarningMessage)
            {
                if (m.IsMuted)
                {
                    return(null);
                }

                var b = new GameMessageBlock(m);
                b.Background  = Brushes.LightGray;
                b.Padding     = new Thickness(5);
                b.BorderBrush = Brushes.LightGray;
                b.Foreground  = m.From.Color.CacheToBrush();
                var par = new Paragraph(MergeArgsv2(m.Message, m.Arguments));
                par.Margin = new Thickness(0);
                b.Blocks.Add(par);
                //var block = new BlockUIContainer();
                //var border = new Border()
                //{
                //    CornerRadius = new CornerRadius(4),
                //    BorderBrush = Brushes.Gray,
                //    BorderThickness = new Thickness(1),
                //    Padding = new Thickness(5),
                //    Background = Brushes.LightGray,
                //};
                //var tb = new TextBlock(MergeArgsv2(m.Message, m.Arguments));
                //tb.Foreground = m.From.Color.CacheToBrush();
                //tb.TextWrapping = TextWrapping.Wrap;

                //border.Child = tb;
                //block.Child = border;

                //b.Blocks.Add(block);

                //var hiddenText = new Paragraph(MergeArgsv2(m.Message, m.Arguments));
                //hiddenText.Foreground = Brushes.Transparent;
                //hiddenText.FontSize = 0.1;
                //hiddenText.Margin = new Thickness(0);
                //b.Blocks.Add(hiddenText);

                return(b);
            }
            else if (m is SystemMessage)
            {
                if (m.IsMuted)
                {
                    return(null);
                }

                var p       = new Paragraph();
                var b       = new GameMessageBlock(m);
                var chatRun = MergeArgsv2(m.Message, m.Arguments);
                chatRun.Foreground = m.From.Color.CacheToBrush();
                p.Inlines.Add(chatRun);
                b.Blocks.Add(p);
                return(b);
            }
            else if (m is NotifyMessage)
            {
                if (m.IsMuted)
                {
                    return(null);
                }

                var p       = new Paragraph();
                var b       = new GameMessageBlock(m);
                var chatRun = MergeArgsv2(m.Message, m.Arguments);
                chatRun.Foreground = m.From.Color.CacheToBrush();
                b.Blocks.Add(p);
                p.Inlines.Add(chatRun);
                return(b);
            }
            else if (m is TurnMessage)
            {
                if (m.IsMuted)
                {
                    return(null);
                }

                var brush = m.From.Color.CacheToBrush();

                var p = new Paragraph();
                var b = new GameMessageBlock(m);
                b.TextAlignment = TextAlignment.Center;
                b.Margin        = new Thickness(2);

                p.Inlines.Add(
                    new Line
                {
                    X1 = 0,
                    X2 = 40,
                    Y1 = -4,
                    Y2 = -4,
                    StrokeThickness = 2,
                    Stroke          = brush
                });

                var chatRun = new Run(string.Format(m.Message, m.Arguments));
                chatRun.Foreground = brush;
                chatRun.FontWeight = FontWeights.Bold;
                p.Inlines.Add(chatRun);

                var prun = new Run(" " + (m as TurnMessage).TurnPlayer + " ");
                prun.Foreground = (m as TurnMessage).TurnPlayer.Color.CacheToBrush();
                prun.FontWeight = FontWeights.Bold;
                p.Inlines.Add(prun);

                p.Inlines.Add(
                    new Line
                {
                    X1 = 0,
                    X2 = 40,
                    Y1 = -4,
                    Y2 = -4,
                    StrokeThickness = 2,
                    Stroke          = brush
                });

                b.Blocks.Add(p);

                //if (((Paragraph)output.Document.Blocks.LastBlock).Inlines.Count == 0)
                //    output.Document.Blocks.Remove(output.Document.Blocks.LastBlock);

                return(b);

                //output.Document.Blocks.Add(new Paragraph { Margin = new Thickness() });
            }
            else if (m is DebugMessage)
            {
                if (m.IsMuted)
                {
                    return(null);
                }
                var p       = new Paragraph();
                var b       = new GameMessageBlock(m);
                var chatRun = MergeArgsv2(m.Message, m.Arguments);
                chatRun.Foreground = m.From.Color.CacheToBrush();
                p.Inlines.Add(chatRun);
                b.Blocks.Add(p);
                return(b);
            }
            else if (m is NotifyBarMessage)
            {
                if (m.IsMuted)
                {
                    return(null);
                }
                var p       = new Paragraph();
                var b       = new GameMessageBlock(m);
                var chatRun = MergeArgsv2(m.Message, m.Arguments);
                chatRun.Foreground = (m as NotifyBarMessage).MessageColor.CacheToBrush();
                p.Inlines.Add(chatRun);
                b.Blocks.Add(p);
                return(b);
            }
            return(null);
        }
Example #2
0
        public static Block GameMessageToBlock(IGameMessage m)
        {
            if (m == null)
                return null;

            if (m is PlayerEventMessage)
            {
                if (m.IsMuted) return null;
                var b = new GameMessageBlock(m);
                var p = new Paragraph();
                var prun = new Run(m.From + " ");
                prun.Foreground = m.From.Color.CacheToBrush();
                prun.FontWeight = FontWeights.Bold;
                p.Inlines.Add(prun);

                var chatRun = MergeArgsv2(m.Message, m.Arguments);
                chatRun.Foreground = new SolidColorBrush(m.From.Color);
                //chatRun.FontWeight = FontWeights.Bold;
                p.Inlines.Add(chatRun);

                b.Blocks.Add(p);

                return b;
            }
            else if (m is ChatMessage)
            {
                if (m.IsMuted) return null;

                var p = new Paragraph();
                var b = new GameMessageBlock(m);

                var inline = new Span();

                inline.Foreground = m.From.Color.CacheToBrush();
                var chatRun = new Run("<" + m.From + "> ");
                chatRun.Foreground = m.From.Color.CacheToBrush();
                chatRun.FontWeight = FontWeights.Bold;
                inline.Inlines.Add(chatRun);

                inline.Inlines.Add(MergeArgsv2(m.Message, m.Arguments));

                p.Inlines.Add(inline);

                b.Blocks.Add(p);

                return b;
            }
            else if (m is WarningMessage)
            {
                if (m.IsMuted) return null;

                var b = new GameMessageBlock(m);
                var block = new BlockUIContainer();
                var border = new Border()
                {
                    CornerRadius = new CornerRadius(4),
                    BorderBrush = Brushes.Gray,
                    BorderThickness = new Thickness(1),
                    Padding = new Thickness(5),
                    Background = Brushes.LightGray,
                };
                var tb = new TextBlock(MergeArgsv2(m.Message, m.Arguments));
                tb.Foreground = m.From.Color.CacheToBrush();
                tb.TextWrapping = TextWrapping.Wrap;

                border.Child = tb;
                block.Child = border;

                b.Blocks.Add(block);

                return b;
            }
            else if (m is SystemMessage)
            {
                if (m.IsMuted) return null;

                var p = new Paragraph();
                var b = new GameMessageBlock(m);
                var chatRun = MergeArgsv2(m.Message, m.Arguments);
                chatRun.Foreground = m.From.Color.CacheToBrush();
                p.Inlines.Add(chatRun);
                b.Blocks.Add(p);
                return b;
            }
            else if (m is NotifyMessage)
            {
                if (m.IsMuted) return null;

                var p = new Paragraph();
                var b = new GameMessageBlock(m);
                var chatRun = MergeArgsv2(m.Message, m.Arguments);
                chatRun.Foreground = m.From.Color.CacheToBrush();
                b.Blocks.Add(p);
                p.Inlines.Add(chatRun);
                return b;
            }
            else if (m is TurnMessage)
            {
                if (m.IsMuted) return null;

                var brush = m.From.Color.CacheToBrush();

                var p = new Paragraph();
                var b = new GameMessageBlock(m);
                b.TextAlignment = TextAlignment.Center;
                b.Margin = new Thickness(2);

                p.Inlines.Add(
                    new Line
                    {
                        X1 = 0,
                        X2 = 40,
                        Y1 = -4,
                        Y2 = -4,
                        StrokeThickness = 2,
                        Stroke = brush
                    });

                var chatRun = new Run(string.Format(m.Message, m.Arguments));
                chatRun.Foreground = brush;
                chatRun.FontWeight = FontWeights.Bold;
                p.Inlines.Add(chatRun);

                var prun = new Run(" " + (m as TurnMessage).TurnPlayer + " ");
                prun.Foreground = (m as TurnMessage).TurnPlayer.Color.CacheToBrush();
                prun.FontWeight = FontWeights.Bold;
                p.Inlines.Add(prun);

                p.Inlines.Add(
                    new Line
                    {
                        X1 = 0,
                        X2 = 40,
                        Y1 = -4,
                        Y2 = -4,
                        StrokeThickness = 2,
                        Stroke = brush
                    });

                b.Blocks.Add(p);

                //if (((Paragraph)output.Document.Blocks.LastBlock).Inlines.Count == 0)
                //    output.Document.Blocks.Remove(output.Document.Blocks.LastBlock);

                return b;

                //output.Document.Blocks.Add(new Paragraph { Margin = new Thickness() });
            }
            else if (m is DebugMessage)
            {
                if (m.IsMuted) return null;
                var p = new Paragraph();
                var b = new GameMessageBlock(m);
                var chatRun = MergeArgsv2(m.Message, m.Arguments);
                chatRun.Foreground = m.From.Color.CacheToBrush();
                p.Inlines.Add(chatRun);
                b.Blocks.Add(p);
                return b;
            }
            else if (m is NotifyBarMessage)
            {
                if (m.IsMuted) return null;
                var p = new Paragraph();
                var b = new GameMessageBlock(m);
                var chatRun = MergeArgsv2(m.Message, m.Arguments);
                chatRun.Foreground = (m as NotifyBarMessage).MessageColor.CacheToBrush();
                p.Inlines.Add(chatRun);
                b.Blocks.Add(p);
                return b;
            }
            return null;
        }