89 lines
2.5 KiB
C#
89 lines
2.5 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Collections;
|
|
using Server;
|
|
|
|
namespace Knives.Chat3
|
|
{
|
|
public enum MsgType { Normal, Invite, System }
|
|
|
|
public class Message
|
|
{
|
|
public static bool CanMessage(Mobile from, Mobile to)
|
|
{
|
|
if (from.AccessLevel > to.AccessLevel)
|
|
return true;
|
|
|
|
Data df = Data.GetData(from);
|
|
Data dt = Data.GetData(to);
|
|
|
|
if (df.Banned || dt.Banned)
|
|
return false;
|
|
if (df.FriendsOnly && !df.Friends.Contains(to))
|
|
return false;
|
|
if (dt.FriendsOnly && !dt.Friends.Contains(from))
|
|
return false;
|
|
if (df.Ignores.Contains(to))
|
|
return false;
|
|
if (dt.Ignores.Contains(from))
|
|
return false;
|
|
if (dt.Messages.Count >= Data.MaxMsgs)
|
|
return false;
|
|
|
|
return true;
|
|
}
|
|
|
|
private Mobile c_From;
|
|
private string c_Msg, c_Subject;
|
|
private MsgType c_Type;
|
|
private DateTime c_Received;
|
|
private bool c_Read;
|
|
|
|
public Mobile From { get { return c_From; } }
|
|
public string Msg { get { return c_Msg; } }
|
|
public string Subject { get { return c_Subject; } }
|
|
public MsgType Type { get { return c_Type; } }
|
|
public DateTime Received { get { return c_Received; } }
|
|
public bool Read { get { return c_Read; } set { c_Read = value; } }
|
|
|
|
public Message()
|
|
{
|
|
c_Msg = "";
|
|
c_Subject = "";
|
|
}
|
|
|
|
public Message(Mobile from, string sub, string msg, MsgType type)
|
|
{
|
|
c_From = from;
|
|
c_Msg = msg;
|
|
c_Subject = sub;
|
|
c_Type = type;
|
|
|
|
c_Received = DateTime.Now;
|
|
}
|
|
|
|
public void Save(GenericWriter writer)
|
|
{
|
|
writer.Write(0); // Version
|
|
|
|
writer.Write(c_From);
|
|
writer.Write(c_Msg);
|
|
writer.Write(c_Subject);
|
|
writer.Write((int)c_Type);
|
|
writer.Write(c_Received);
|
|
writer.Write(c_Read);
|
|
}
|
|
|
|
public void Load(GenericReader reader)
|
|
{
|
|
int version = reader.ReadInt();
|
|
|
|
c_From = reader.ReadMobile();
|
|
c_Msg = reader.ReadString();
|
|
c_Subject = reader.ReadString();
|
|
c_Type = (MsgType)reader.ReadInt();
|
|
c_Received = reader.ReadDateTime();
|
|
c_Read = reader.ReadBool();
|
|
}
|
|
}
|
|
} |