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