53 lines
1.2 KiB
C#
53 lines
1.2 KiB
C#
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
|
|
namespace WorldOfPeacecraft
|
|
{
|
|
public class ChatOutputBox : RichTextBox
|
|
{
|
|
private IBackend Backend;
|
|
private Font MessageFont;
|
|
private Font SenderFont;
|
|
private Font IregularSenderFont;
|
|
|
|
public ChatOutputBox (IBackend backend)
|
|
{
|
|
Backend = backend;
|
|
this.ReadOnly = true;
|
|
this.Multiline = true;
|
|
MessageFont = this.SelectionFont;
|
|
SenderFont = new Font (MessageFont, FontStyle.Bold);
|
|
IregularSenderFont = new Font (MessageFont, FontStyle.Bold | FontStyle.Italic);
|
|
}
|
|
|
|
public void UpdateData ()
|
|
{
|
|
this.SuspendLayout ();
|
|
this.Clear ();
|
|
IEnumerable<IChatMessage> chatMessages = Backend.GetChatMessages ();
|
|
bool firstline = true;
|
|
lock (Backend) {
|
|
foreach (IChatMessage message in chatMessages) {
|
|
if (firstline) {
|
|
firstline = false;
|
|
} else {
|
|
this.AppendText ("\n");
|
|
}
|
|
if (message.IsSenderPlayer ()) {
|
|
this.SelectionFont = SenderFont;
|
|
} else {
|
|
this.SelectionFont = IregularSenderFont;
|
|
}
|
|
this.AppendText (message.GetSender ());
|
|
this.AppendText (": ");
|
|
this.SelectionFont = MessageFont;
|
|
this.AppendText (message.GetMessage ());
|
|
}
|
|
}
|
|
this.ResumeLayout ();
|
|
}
|
|
}
|
|
}
|
|
|