98 lines
2.4 KiB
C#
98 lines
2.4 KiB
C#
using System;
|
|
using Server;
|
|
using Server.Network;
|
|
using Server.Accounting;
|
|
|
|
namespace Server.Misc
|
|
{
|
|
public class Profile
|
|
{
|
|
public static void Initialize()
|
|
{
|
|
EventSink.ProfileRequest += new ProfileRequestEventHandler( EventSink_ProfileRequest );
|
|
EventSink.ChangeProfileRequest += new ChangeProfileRequestEventHandler( EventSink_ChangeProfileRequest );
|
|
}
|
|
|
|
public static void EventSink_ChangeProfileRequest( ChangeProfileRequestEventArgs e )
|
|
{
|
|
Mobile from = e.Beholder;
|
|
|
|
if ( from.ProfileLocked )
|
|
from.SendMessage( "Your profile is locked. You may not change it." );
|
|
else
|
|
from.Profile = e.Text;
|
|
}
|
|
|
|
public static void EventSink_ProfileRequest( ProfileRequestEventArgs e )
|
|
{
|
|
Mobile beholder = e.Beholder;
|
|
Mobile beheld = e.Beheld;
|
|
|
|
if ( !beheld.Player )
|
|
return;
|
|
|
|
if ( beholder.Map != beheld.Map || !beholder.InRange( beheld, 12 ) || !beholder.CanSee( beheld ) )
|
|
return;
|
|
|
|
string header = Titles.ComputeTitle( beholder, beheld );
|
|
|
|
string footer = "";
|
|
|
|
if ( beheld.ProfileLocked )
|
|
{
|
|
if ( beholder == beheld )
|
|
footer = "Your profile has been locked.";
|
|
else if ( beholder.AccessLevel >= AccessLevel.Counselor )
|
|
footer = "This profile has been locked.";
|
|
}
|
|
|
|
if ( footer.Length == 0 && beholder == beheld )
|
|
footer = GetAccountDuration( beheld );
|
|
|
|
string body = beheld.Profile;
|
|
|
|
if ( body == null || body.Length <= 0 )
|
|
body = "";
|
|
|
|
beholder.Send( new DisplayProfile( beholder != beheld || !beheld.ProfileLocked, beheld, header, body, footer ) );
|
|
}
|
|
|
|
private static string GetAccountDuration( Mobile m )
|
|
{
|
|
Account a = m.Account as Account;
|
|
|
|
if ( a == null )
|
|
return "";
|
|
|
|
TimeSpan ts = DateTime.Now - a.Created;
|
|
|
|
string v;
|
|
|
|
if ( Format( ts.TotalDays, "This account is {0} day{1} old.", out v ) )
|
|
return v;
|
|
|
|
if ( Format( ts.TotalHours, "This account is {0} hour{1} old.", out v ) )
|
|
return v;
|
|
|
|
if ( Format( ts.TotalMinutes, "This account is {0} minute{1} old.", out v ) )
|
|
return v;
|
|
|
|
if ( Format( ts.TotalSeconds, "This account is {0} second{1} old.", out v ) )
|
|
return v;
|
|
|
|
return "";
|
|
}
|
|
|
|
public static bool Format( double value, string format, out string op )
|
|
{
|
|
if ( value >= 1.0 )
|
|
{
|
|
op = String.Format( format, (int)value, (int)value != 1 ? "s" : "" );
|
|
return true;
|
|
}
|
|
|
|
op = null;
|
|
return false;
|
|
}
|
|
}
|
|
}
|