private void SendMeta(UserBase user, string target, bool super, List<string> allFlags, IDictionary<string, object> allProperties)
{
List<string> flags;
if (super)
{
flags = allFlags;
}
else
{
flags = new List<string>();
for (int i = 0; i < allFlags.Count; i++)
{
switch (allFlags[i])
{
case "Arena":
case "DisableForward":
case "FreeTarget":
case "InviteOnly":
case "LockTopic":
case "LongLists":
case "Moderated":
case "NoActions":
case "NoColors":
case "NoCtcps":
case "NoExternal":
case "OpModerated":
case "Permanent":
case "Private":
case "RegisteredOnly":
case "Secret":
flags.Add(flags[i]);
continue;
default:
if (allFlags[i][0] == ':')
{
flags.Add(flags[i]);
}
continue;
}
}
}
user.SendNumeric(Numerics.RPL_METAFLAGS, target, string.Join(" ", flags));
foreach (KeyValuePair<string, object> kv in allProperties)
{
if (!super)
{
switch (kv.Key)
{
case "JoinThrottle":
case "Limit":
case "Forward":
case "Created":
case "Founder":
break;
default:
if (kv.Key[0] == ':')
{
break;
}
continue;
}
}
user.SendNumeric(Numerics.RPL_METAPROPERTY, target, kv.Key, "=", kv.Value);
}
}