You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
2.9 KiB
137 lines
2.9 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Runtime.Serialization;
|
|
using System.Text;
|
|
|
|
namespace Mapper
|
|
{
|
|
[DataContract]
|
|
public class Exit
|
|
{
|
|
public Exit(uint entry)
|
|
{
|
|
Entry = entry;
|
|
MinLevel = 0;
|
|
MaxLevel = 210;
|
|
Cost = 1;
|
|
}
|
|
|
|
[DataMember]
|
|
public readonly uint Entry;
|
|
|
|
[DataMember]
|
|
public int MinLevel
|
|
{
|
|
get;
|
|
internal set;
|
|
}
|
|
|
|
[DataMember]
|
|
public int MaxLevel
|
|
{
|
|
get;
|
|
internal set;
|
|
}
|
|
|
|
public Room From
|
|
{
|
|
get;
|
|
internal set;
|
|
}
|
|
|
|
public Room To
|
|
{
|
|
get
|
|
{
|
|
return _to;
|
|
}
|
|
internal set
|
|
{
|
|
_to = value;
|
|
ToRoom = value != null ? value.Entry : uint.MaxValue;
|
|
}
|
|
}
|
|
|
|
private Room _to;
|
|
|
|
[DataMember]
|
|
internal uint ToRoom;
|
|
|
|
[DataMember]
|
|
public string Command
|
|
{
|
|
get;
|
|
internal set;
|
|
}
|
|
|
|
[DataMember]
|
|
public string DoorCommand
|
|
{
|
|
get;
|
|
internal set;
|
|
}
|
|
|
|
[DataMember]
|
|
internal List<string> IFlags = null;
|
|
|
|
public IEnumerable<string> Flags
|
|
{
|
|
get
|
|
{
|
|
return IFlags;
|
|
}
|
|
}
|
|
|
|
[DataMember]
|
|
public uint Cost
|
|
{
|
|
get;
|
|
internal set;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Check if exit has a flag.
|
|
/// </summary>
|
|
/// <param name="flag">Flag to check for.</param>
|
|
/// <returns></returns>
|
|
public bool HasFlag(string flag)
|
|
{
|
|
return IFlags != null && IFlags.Contains(flag.ToLower().Trim());
|
|
}
|
|
|
|
/// <summary>
|
|
/// Add a flag to exit.
|
|
/// </summary>
|
|
/// <param name="flag">Flag to add.</param>
|
|
public void AddFlag(string flag)
|
|
{
|
|
flag = flag != null ? flag.ToLower().Trim() : "";
|
|
if(flag == "portal")
|
|
return;
|
|
if(IFlags == null)
|
|
IFlags = new List<string>();
|
|
if(!string.IsNullOrEmpty(flag) && !IFlags.Contains(flag))
|
|
IFlags.Add(flag);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Remove a flag from exit.
|
|
/// </summary>
|
|
/// <param name="flag">Flag to remove.</param>
|
|
/// <returns></returns>
|
|
public bool RemoveFlag(string flag)
|
|
{
|
|
flag = flag != null ? flag.ToLower().Trim() : "";
|
|
if(flag == "portal")
|
|
return false;
|
|
if(IFlags != null && IFlags.Contains(flag))
|
|
{
|
|
IFlags.Remove(flag);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
}
|