109 lines
3 KiB
C#
109 lines
3 KiB
C#
using System;
|
|
|
|
namespace Server.Gumps
|
|
{
|
|
public abstract class PropertyException : Exception
|
|
{
|
|
protected Property m_Property;
|
|
|
|
public PropertyException(Property property, string message)
|
|
: base(message) =>
|
|
m_Property = property;
|
|
|
|
public Property Property => m_Property;
|
|
}
|
|
|
|
public abstract class BindingException : PropertyException
|
|
{
|
|
public BindingException(Property property, string message)
|
|
: base(property, message)
|
|
{
|
|
}
|
|
}
|
|
|
|
public sealed class NotYetBoundException : BindingException
|
|
{
|
|
public NotYetBoundException(Property property)
|
|
: base(property, "Property has not yet been bound.")
|
|
{
|
|
}
|
|
}
|
|
|
|
public sealed class AlreadyBoundException : BindingException
|
|
{
|
|
public AlreadyBoundException(Property property)
|
|
: base(property, "Property has already been bound.")
|
|
{
|
|
}
|
|
}
|
|
|
|
public sealed class UnknownPropertyException : BindingException
|
|
{
|
|
public UnknownPropertyException(Property property, string current)
|
|
: base(property, $"Property '{current}' not found.")
|
|
{
|
|
}
|
|
}
|
|
|
|
public sealed class ReadOnlyException : BindingException
|
|
{
|
|
public ReadOnlyException(Property property)
|
|
: base(property, "Property is read-only.")
|
|
{
|
|
}
|
|
}
|
|
|
|
public sealed class WriteOnlyException : BindingException
|
|
{
|
|
public WriteOnlyException(Property property)
|
|
: base(property, "Property is write-only.")
|
|
{
|
|
}
|
|
}
|
|
|
|
public abstract class AccessException : PropertyException
|
|
{
|
|
public AccessException(Property property, string message)
|
|
: base(property, message)
|
|
{
|
|
}
|
|
}
|
|
|
|
public sealed class InternalAccessException : AccessException
|
|
{
|
|
public InternalAccessException(Property property)
|
|
: base(property, "Property is internal.")
|
|
{
|
|
}
|
|
}
|
|
|
|
public abstract class ClearanceException : AccessException
|
|
{
|
|
public ClearanceException(Property property, AccessLevel playerAccess, AccessLevel neededAccess, string accessType)
|
|
: base(
|
|
property,
|
|
$"You must be at least {Mobile.GetAccessLevelName(neededAccess)} to {accessType} this property."
|
|
)
|
|
{
|
|
}
|
|
|
|
public AccessLevel PlayerAccess { get; set; }
|
|
public AccessLevel NeededAccess { get; set; }
|
|
}
|
|
|
|
public sealed class ReadAccessException : ClearanceException
|
|
{
|
|
public ReadAccessException(Property property, AccessLevel playerAccess, AccessLevel neededAccess)
|
|
: base(property, playerAccess, neededAccess, "read")
|
|
{
|
|
}
|
|
}
|
|
|
|
public sealed class WriteAccessException : ClearanceException
|
|
{
|
|
public WriteAccessException(Property property, AccessLevel playerAccess, AccessLevel neededAccess)
|
|
: base(property, playerAccess, neededAccess, "write")
|
|
{
|
|
}
|
|
}
|
|
}
|