Exemplo n.º 1
0
 static bool ValidColor(char c)
 {
     return(Colors.IsStandard(c) || Colors.IsDefined(c));
 }
Exemplo n.º 2
0
        static void ParseProperty(string key, string value, ref Group temp)
        {
            string raw = value; // for prefix we need to keep space

            value = value.Trim();

            if (key.CaselessEq("rankname"))
            {
                if (temp != null)
                {
                    AddGroup(ref temp);
                }
                value = value.Replace(" ", "");

                if (value.CaselessEq("op"))
                {
                    Logger.Log(LogType.Warning, "Cannot have a rank named \"{0}\", this rank is hard-coded.", value);
                }
                else if (Group.Find(value) == null)
                {
                    temp      = new Group();
                    temp.Name = value;
                }
                else
                {
                    Logger.Log(LogType.Warning, "Cannot add the rank {0} twice", value);
                }
                return;
            }
            if (temp == null)
            {
                return;
            }

            switch (key.ToLower())
            {
            case "permission":
                int perm;

                if (!int.TryParse(value, out perm))
                {
                    Logger.Log(LogType.Warning, "Invalid permission: " + value);
                    temp = null;
                }
                if (perm > 120 || perm < -50)
                {
                    Logger.Log(LogType.Warning, "Permission must be between -50 and 120 for ranks");
                    temp = null;
                }
                else if (Group.Find((LevelPermission)perm) == null)
                {
                    temp.Permission = (LevelPermission)perm;
                }
                else
                {
                    Logger.Log(LogType.Warning, "Cannot have 2 ranks set at permission level " + value);
                    temp = null;
                } break;

            case "limit":
                temp.DrawLimit = int.Parse(value);
                break;

            case "maxundo":
                temp.MaxUndo = int.Parse(value);
                break;

            case "genvolume":
                temp.GenVolume = int.Parse(value);
                break;

            case "afkkicked":
                temp.AfkKicked = bool.Parse(value);
                break;

            case "afkkickminutes":
                temp.AfkKickMinutes = int.Parse(value);
                break;

            case "color":
                char col;
                char.TryParse(value, out col);

                if (Colors.IsDefined(col))
                {
                    temp.Color = "&" + col;
                }
                else
                {
                    Logger.Log(LogType.Warning, "Invalid color code: " + value);
                    temp = null;
                } break;

            case "filename":
                if (value.Contains("\\") || value.Contains("/"))
                {
                    Logger.Log(LogType.Warning, "Invalid filename: " + value);
                    temp = null;
                }
                else
                {
                    temp.filename = value;
                } break;

            case "motd":
                temp.MOTD = value;
                break;

            case "osmaps":
                temp.OverseerMaps = byte.Parse(value);
                break;

            case "prefix":
                if (!String.IsNullOrEmpty(value))
                {
                    temp.Prefix = raw.TrimStart();
                }

                if (Colors.Strip(temp.Prefix).Length > 3)
                {
                    Logger.Log(LogType.Warning, "Prefixes may only consist of color codes and three letters");
                    temp.Prefix = temp.Prefix.Substring(0, 3);
                }
                break;

            case "copyslots":
                temp.CopySlots = byte.Parse(value);
                break;
            }
        }