Files
abysmal-isle/Scripts/SubSystem/Knives Chat 3.0 Beta 6/Gumps/MessageGump.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

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