136 lines
4.0 KiB
C#
136 lines
4.0 KiB
C#
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
|
|
|
|
}
|
|
} |