Files
abysmal-isle/Scripts/Services/Town Cryer/TownCrierGreetingEntry.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

155 lines
4.6 KiB
C#

using System;
using Server;
namespace Server.Services.TownCryer
{
[PropertyObject]
public class TownCryerGreetingEntry : IComparable<TownCryerGreetingEntry>
{
[CommandProperty(AccessLevel.Administrator)]
public TextDefinition Title { get; set; }
[CommandProperty(AccessLevel.Administrator)]
public TextDefinition Body1 { get; set; }
[CommandProperty(AccessLevel.Administrator)]
public string Body2 { get; set; }
[CommandProperty(AccessLevel.Administrator)]
public string Body3 { get; set; }
[CommandProperty(AccessLevel.Administrator)]
public DateTime Created { get; set; }
[CommandProperty(AccessLevel.Administrator)]
public DateTime Expires { get; set; }
[CommandProperty(AccessLevel.Administrator)]
public string Link { get; set; }
[CommandProperty(AccessLevel.Administrator)]
public string LinkText { get; set; }
[CommandProperty(AccessLevel.Administrator)]
public bool PreLoaded { get; set; }
[CommandProperty(AccessLevel.Administrator)]
public bool CanEdit { get; private set; }
[CommandProperty(AccessLevel.Administrator)]
public bool Expired { get { return Expires != DateTime.MinValue && Expires < DateTime.Now; } }
[CommandProperty(AccessLevel.Administrator)]
public bool Saves { get { return !PreLoaded && Expires != DateTime.MinValue; } }
public TownCryerGreetingEntry(TextDefinition body)
: this(null, body, null, null, -1)
{
}
public TownCryerGreetingEntry(TextDefinition title, TextDefinition body, string link, string linkText)
: this(title, body, null, null, -1, link, linkText)
{
}
public TownCryerGreetingEntry(TextDefinition title, TextDefinition body, string body2, string link, string linkText)
: this(title, body, body2, null, -1, link, linkText)
{
}
public TownCryerGreetingEntry(TextDefinition title, TextDefinition body, int expires, string link, string linkText)
: this(title, body, null, null, expires, link, linkText)
{
}
public TownCryerGreetingEntry(TextDefinition title, TextDefinition body, string body2, string body3, int expires = -1, string link = null, string linkText = null, bool canEdit = false)
{
Title = title;
Body1 = body;
Body2 = body2;
Body3 = body3;
Created = DateTime.Now;
Link = link;
LinkText = linkText;
if (expires > 0)
{
Expires = DateTime.Now + TimeSpan.FromDays(expires);
}
CanEdit = canEdit;
}
public int CompareTo(TownCryerGreetingEntry two)
{
if ((CanEdit || PreLoaded) && !two.CanEdit && !two.PreLoaded)
{
return -1;
}
if ((two.CanEdit || two.PreLoaded) && !CanEdit && !PreLoaded)
{
return 1;
}
if ((CanEdit || PreLoaded) && (two.CanEdit || two.PreLoaded))
{
if (Created > two.Created)
{
return -1;
}
else if (two.Created > Created)
{
return 1;
}
}
return 0;
}
public TownCryerGreetingEntry(GenericReader reader)
{
int version = reader.ReadInt();
switch (version)
{
case 1:
CanEdit = reader.ReadBool();
Body2 = reader.ReadString();
Body3 = reader.ReadString();
goto case 0;
case 0:
Title = TextDefinition.Deserialize(reader);
Body1 = TextDefinition.Deserialize(reader);
Created = reader.ReadDateTime();
Expires = reader.ReadDateTime();
Link = reader.ReadString();
LinkText = reader.ReadString();
break;
}
}
public void Serialize(GenericWriter writer)
{
writer.Write(1);
writer.Write(CanEdit);
writer.Write(Body2);
writer.Write(Body3);
TextDefinition.Serialize(writer, Title);
TextDefinition.Serialize(writer, Body1);
writer.Write(Created);
writer.Write(Expires);
writer.Write(Link);
writer.Write(LinkText);
}
}
}