using System; using System.Collections; using Server; using Knives.Utils; namespace Knives.Chat3 { public class MessageGump : GumpPlus { public static void SendTo(Mobile m, Message msg) { new MessageGump(m, msg); } #region Class Definitions private Message c_Message; public Data GetData { get { return Data.GetData(Owner); } } #endregion #region Constructors public MessageGump(Mobile m, Message msg) : base(m, 200, 400) { c_Message = msg; if (GetData.Messages.Contains(msg)) { if (!msg.Read && Data.GetData(msg.From).ReadReceipt && msg.From.AccessLevel >= m.AccessLevel) msg.From.SendMessage(Data.GetData(msg.From).SystemC, m.Name + " " + General.Local(197) + " " + msg.Subject); msg.Read = true; } NewGump(); } #endregion #region Methods protected override void BuildGump() { AddBackground(0, 0, 300, 200, 0x1400); int y = 10; AddHtml(10, y, 280, 21, HTML.White + c_Message.Subject, false, false); AddHtml(15, y += 18, 150, 21, HTML.White + General.Local(60) + " " + c_Message.From.Name, false, false); AddHtml(10, y += 20, 280, 200 - y - 40, HTML.White + c_Message.Msg, true, true); if (GetData.Messages.Contains(c_Message)) { if (c_Message.Type == MsgType.Normal) { if (Message.CanMessage(Owner, c_Message.From)) AddButton(200, 170, 0xFA5, 0xFA6, "Reply", new TimerCallback(Reply)); AddButton(140, 170, 0xFB1, 0xFB2, "Delete", new TimerCallback(Delete)); AddButton(80, 170, 0xFA2, 0xFA3, "Ignore", new TimerCallback(Ignore)); } else if (c_Message.Type == MsgType.Invite) { AddButton(200, 170, 0xFA8, 0xFA9, "Accept", new TimerCallback(Accept)); AddButton(140, 170, 0xFB1, 0xFB2, "Deny", new TimerCallback(Deny)); AddButton(80, 170, 0xFA2, 0xFA3, "Ignore", new TimerCallback(Ignore)); } } } #endregion #region Responses private void Reply() { if (Message.CanMessage(Owner, c_Message.From)) SendMessageGump.SendTo(Owner, c_Message.From, c_Message); } private void Delete() { GetData.DeleteMessage(c_Message); General.RefreshGump(Owner, typeof(MailGump)); General.RefreshGump(Owner, typeof(FriendsGump)); } private void Ignore() { GetData.Ignores.Add(c_Message.From); Owner.SendMessage(GetData.SystemC, General.Local(68) + " " + c_Message.From.Name); Deny(); } private void Accept() { c_Message.From.SendMessage(Data.GetData(c_Message.From).SystemC, Owner.Name + " " + General.Local(87)); GetData.AddFriend(c_Message.From); Data.GetData(c_Message.From).AddFriend(Owner); GetData.Messages.Remove(c_Message); if (Owner.HasGump(typeof(FriendsGump))) General.RefreshGump(Owner, typeof(FriendsGump)); else FriendsGump.SendTo(Owner, true); General.RefreshGump(Owner, typeof(MailGump)); } private void Deny() { c_Message.From.SendMessage(Data.GetData(c_Message.From).SystemC, Owner.Name + " " + General.Local(88)); Owner.SendMessage(GetData.SystemC, General.Local(89) + " " + c_Message.From.Name); GetData.Messages.Remove(c_Message); if (Owner.HasGump(typeof(FriendsGump))) General.RefreshGump(Owner, typeof(FriendsGump)); else FriendsGump.SendTo(Owner, true); General.RefreshGump(Owner, typeof(MailGump)); } #endregion } }