Files
abysmal-isle/Scripts/SubSystem/VitaNex/Core/Misc/ExpansionFlags.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

137 lines
3.1 KiB
C#

#region Header
// _,-'/-'/
// . __,-; ,'( '/
// \. `-.__`-._`:_,-._ _ , . ``
// `:-._,------' ` _,`--` -: `_ , ` ,' :
// `---..__,,--' (C) 2023 ` -'. -'
// # Vita-Nex [http://core.vita-nex.com] #
// {o)xxx|===============- # -===============|xxx(o}
// # #
#endregion
#region References
using System;
using Server;
#endregion
namespace VitaNex
{
[Flags]
public enum ExpansionFlags
{
None = 0x0,
T2A = 0x1,
UOR = 0x2,
UOTD = 0x4,
LBR = 0x8,
AOS = 0x10,
SE = 0x20,
ML = 0x40,
SA = 0x80,
HS = 0x100,
TOL = 0x200,
EJ = 0x400,
PreUOR = T2A,
PostUOR = UOR | UOTD | LBR | AOS | SE | ML | SA | HS | TOL | EJ,
PreAOS = T2A | UOR | UOTD | LBR,
PostAOS = AOS | SE | ML | SA | HS | TOL | EJ,
PreSE = T2A | UOR | UOTD | LBR | AOS,
PostSE = SE | ML | SA | HS | TOL | EJ,
PreML = T2A | UOR | UOTD | LBR | AOS | SE,
PostML = ML | SA | HS | TOL | EJ,
PreSA = T2A | UOR | UOTD | LBR | AOS | SE | ML,
PostSA = SA | HS | TOL | EJ,
PreHS = T2A | UOR | UOTD | LBR | AOS | SE | ML | SA,
PostHS = HS | TOL | EJ,
PreTOL = T2A | UOR | UOTD | LBR | AOS | SE | ML | SA | HS,
PostTOL = TOL | EJ,
PreEJ = T2A | UOR | UOTD | LBR | AOS | SE | ML | SA | HS | TOL,
PostEJ = EJ,
All = ~None
}
public interface IExpansionCheck
{
ExpansionFlags Expansions { get; }
}
public static class ExpansionFlagsExtension
{
public static bool CheckExpansion(this IExpansionCheck o)
{
return o != null && CheckExpansion(o.Expansions);
}
public static bool CheckExpansion(this IExpansionCheck o, Expansion ex)
{
return o != null && CheckExpansion(o.Expansions, ex);
}
public static string GetName(this ExpansionFlags flags)
{
return GetName(flags, ", ");
}
public static string GetName(this ExpansionFlags flags, string separator)
{
if (flags == ExpansionFlags.None)
{
return "None";
}
return String.Join(separator, flags.EnumerateValues<ExpansionFlags>(true).Not(s => s == ExpansionFlags.None));
}
public static bool CheckExpansion(this ExpansionFlags flags)
{
return CheckExpansion(flags, Core.Expansion);
}
public static bool CheckExpansion(this ExpansionFlags flags, Expansion ex)
{
if (flags == ExpansionFlags.None)
{
return true;
}
switch (ex)
{
case Expansion.T2A:
return flags.HasFlag(ExpansionFlags.T2A);
case Expansion.UOR:
return flags.HasFlag(ExpansionFlags.UOR);
case Expansion.UOTD:
return flags.HasFlag(ExpansionFlags.UOTD);
case Expansion.LBR:
return flags.HasFlag(ExpansionFlags.LBR);
case Expansion.AOS:
return flags.HasFlag(ExpansionFlags.AOS);
case Expansion.SE:
return flags.HasFlag(ExpansionFlags.SE);
case Expansion.ML:
return flags.HasFlag(ExpansionFlags.ML);
case Expansion.SA:
return flags.HasFlag(ExpansionFlags.SA);
case Expansion.HS:
return flags.HasFlag(ExpansionFlags.HS);
case Expansion.TOL:
return flags.HasFlag(ExpansionFlags.TOL);
case Expansion.EJ:
return flags.HasFlag(ExpansionFlags.EJ);
default:
return false;
}
}
}
}