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 PhaseMessage)
{
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);
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 PhaseMessage).TurnPlayer + " ");
prun.Foreground = (m as PhaseMessage).TurnPlayer.Color.CacheToBrush();
prun.FontWeight = FontWeights.Bold;
p.Inlines.Add(prun);
b.Blocks.Add(p);
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;
}