fCraft.PlayerClass.IsValidPrefix C# (CSharp) Method

IsValidPrefix() public static method

public static IsValidPrefix ( string val ) : bool
val string
return bool
        public static bool IsValidPrefix( string val ) {
            if( val.Length == 0 ) return true;
            if( val.Length > 1 ) return false;
            return val[0] > ' ' && val[0] != '&' && val[0] != '`' && val[0] != '^' && val[0] <= '}';
        }

Usage Example

Beispiel #1
0
        bool DefineClass(XElement el)
        {
            PlayerClass playerClass = new PlayerClass();

            // read required attributes
            XAttribute attr = el.Attribute("name");

            if (attr == null)
            {
                Log("Config.DefineClass: Class definition with no name was ignored.", LogType.Warning);
                return(false);
            }
            if (!PlayerClass.IsValidClassName(attr.Value.Trim()))
            {
                Log("Config.DefineClass: Invalid name specified for class \"{0}\". Class name can only contain letters, digits, and underscores.",
                    LogType.Warning, playerClass.name);
                return(false);
            }
            playerClass.name = attr.Value.Trim();

            if (classes.classes.ContainsKey(playerClass.name))
            {
                Log("Config.DefineClass: Duplicate class definition for \"{0}\" was ignored.", LogType.Warning, playerClass.name);
                return(true);
            }


            if ((attr = el.Attribute("rank")) == null)
            {
                Log("Config.DefineClass: No rank specified for {0}. Class definition was ignored.", LogType.Warning, playerClass.name);
                return(false);
            }
            if (!Byte.TryParse(attr.Value, out playerClass.rank))
            {
                Log("Config.DefineClass: Cannot parse rank for {0}. Class definition was ignored.", LogType.Warning, playerClass.name);
                return(false);
            }

            attr = el.Attribute("color");
            if (attr == null || Color.Parse(attr.Value) == null)
            {
                playerClass.color = "";
            }
            else
            {
                playerClass.color = Color.Parse(attr.Value);
            }

            // read optional attributes
            if ((attr = el.Attribute("prefix")) != null)
            {
                if (PlayerClass.IsValidPrefix(attr.Value))
                {
                    playerClass.prefix = attr.Value;
                }
                else
                {
                    Log("Config.DefineClass: Invalid prefix specified for {0}.", LogType.Warning, playerClass.name);
                    playerClass.prefix = "";
                }
            }

            if ((attr = el.Attribute("spamKickAt")) != null)
            {
                if (!Int32.TryParse(attr.Value, out playerClass.spamKickThreshold))
                {
                    Log("Config.DefineClass: Could not parse the value for spamKickAt for {0}. Assuming 0 (never).", LogType.Warning, playerClass.name);
                    playerClass.spamKickThreshold = 0;
                }
            }
            else
            {
                playerClass.spamKickThreshold = 0;
            }

            if ((attr = el.Attribute("spamBanAt")) != null)
            {
                if (!Int32.TryParse(attr.Value, out playerClass.spamBanThreshold))
                {
                    Log("Config.DefineClass: Could not parse the value for spamBanAt for {0}. Assuming 0 (never).", LogType.Warning, playerClass.name);
                    playerClass.spamBanThreshold = 0;
                }
            }
            else
            {
                playerClass.spamBanThreshold = 0;
            }

            if ((attr = el.Attribute("idleKickAfter")) != null)
            {
                if (!Int32.TryParse(attr.Value, out playerClass.idleKickTimer))
                {
                    Log("Config.DefineClass: Could not parse the value for idleKickAfter for {0}. Assuming 0 (never).", LogType.Warning, playerClass.name);
                    playerClass.idleKickTimer = 0;
                }
            }
            else
            {
                playerClass.idleKickTimer = 0;
            }

            if ((attr = el.Attribute("reserveSlot")) != null)
            {
                if (!Boolean.TryParse(attr.Value, out playerClass.reservedSlot))
                {
                    Log("Config.DefineClass: Could not parse the value for reserveSlot for {0}. Assuming \"false\".", LogType.Warning, playerClass.name);
                    playerClass.reservedSlot = false;
                }
            }
            else
            {
                playerClass.reservedSlot = false;
            }

            // read permissions
            XElement temp;

            for (int i = 0; i < Enum.GetValues(typeof(Permissions)).Length; i++)
            {
                string permission = ((Permissions)i).ToString();
                if ((temp = el.Element(permission)) != null)
                {
                    playerClass.permissions[i] = true;
                    if (i == (int)Permissions.Promote)
                    {
                        if ((attr = temp.Attribute("max")) != null)
                        {
                            playerClass.maxPromoteVal = attr.Value;
                        }
                        else
                        {
                            playerClass.maxPromoteVal = "";
                        }
                    }
                    else if (i == (int)Permissions.Demote)
                    {
                        if ((attr = temp.Attribute("max")) != null)
                        {
                            playerClass.maxDemoteVal = attr.Value;
                        }
                        else
                        {
                            playerClass.maxDemoteVal = "";
                        }
                    }
                    else if (i == (int)Permissions.Kick)
                    {
                        if ((attr = temp.Attribute("max")) != null)
                        {
                            playerClass.maxKickVal = attr.Value;
                        }
                        else
                        {
                            playerClass.maxKickVal = "";
                        }
                    }
                    else if (i == (int)Permissions.Ban)
                    {
                        if ((attr = temp.Attribute("max")) != null)
                        {
                            playerClass.maxBanVal = attr.Value;
                        }
                        else
                        {
                            playerClass.maxBanVal = "";
                        }
                    }
                }
            }

            // check for consistency in ban permissions
            if (!playerClass.Can(Permissions.Ban) &&
                (playerClass.Can(Permissions.BanAll) || playerClass.Can(Permissions.BanIP)))
            {
                Log("Class \"{0}\" is allowed to BanIP and/or BanAll but not allowed to Ban.\n" +
                    "Assuming that all ban permissions were ment to be off.", LogType.Warning, playerClass.name);
                playerClass.permissions[(int)Permissions.BanIP]  = false;
                playerClass.permissions[(int)Permissions.BanAll] = false;
            }

            classes.AddClass(playerClass);
            return(true);
        }