fCraft.ZoneCommands.ZoneEditHandler C# (CSharp) Method

ZoneEditHandler() private static method

private static ZoneEditHandler ( Player player, Command cmd ) : void
player Player
cmd Command
return void
        private static void ZoneEditHandler( Player player, Command cmd )
        {
            bool changesWereMade = false;
            string zoneName = cmd.Next();
            if ( zoneName == null ) {
                player.Message( "No zone name specified. See &H/Help ZEdit" );
                return;
            }

            Zone zone = player.WorldMap.Zones.Find( zoneName );
            if ( zone == null ) {
                player.MessageNoZone( zoneName );
                return;
            }

            string name;
            while ( ( name = cmd.Next() ) != null ) {
                if ( name.StartsWith( "+" ) ) {
                    if ( name.Length == 1 ) {
                        CdZoneEdit.PrintUsage( player );
                        break;
                    }
                    PlayerInfo info = PlayerDB.FindPlayerInfoOrPrintMatches( player, name.Substring( 1 ) );
                    if ( info == null )
                        return;

                    // prevent players from whitelisting themselves to bypass protection
                    if ( !player.Info.Rank.AllowSecurityCircumvention && player.Info == info ) {
                        if ( !zone.Controller.Check( info ) ) {
                            player.Message( "You must be {0}+&S to add yourself to this zone's whitelist.",
                                            zone.Controller.MinRank.ClassyName );
                            continue;
                        }
                    }

                    switch ( zone.Controller.Include( info ) ) {
                        case PermissionOverride.Deny:
                            player.Message( "{0}&S is no longer excluded from zone {1}",
                                            info.ClassyName, zone.ClassyName );
                            changesWereMade = true;
                            break;

                        case PermissionOverride.None:
                            player.Message( "{0}&S is now included in zone {1}",
                                            info.ClassyName, zone.ClassyName );
                            changesWereMade = true;
                            break;

                        case PermissionOverride.Allow:
                            player.Message( "{0}&S is already included in zone {1}",
                                            info.ClassyName, zone.ClassyName );
                            break;
                    }
                } else if ( name.StartsWith( "-" ) ) {
                    if ( name.Length == 1 ) {
                        CdZoneEdit.PrintUsage( player );
                        break;
                    }
                    PlayerInfo info = PlayerDB.FindPlayerInfoOrPrintMatches( player, name.Substring( 1 ) );
                    if ( info == null )
                        return;

                    switch ( zone.Controller.Exclude( info ) ) {
                        case PermissionOverride.Deny:
                            player.Message( "{0}&S is already excluded from zone {1}",
                                            info.ClassyName, zone.ClassyName );
                            break;

                        case PermissionOverride.None:
                            player.Message( "{0}&S is now excluded from zone {1}",
                                            info.ClassyName, zone.ClassyName );
                            changesWereMade = true;
                            break;

                        case PermissionOverride.Allow:
                            player.Message( "{0}&S is no longer included in zone {1}",
                                            info.ClassyName, zone.ClassyName );
                            changesWereMade = true;
                            break;
                    }
                } else if ( name.ToLower().StartsWith( "msg=" ) ) {
                    zone.Message = name.Substring( 4 ) + " " + ( cmd.NextAll() ?? "" );
                    changesWereMade = true;
                    player.Message( "Zedit: Custom denied messaged changed to '" + zone.Message + "'" );
                    break;
                } else {
                    Rank minRank = RankManager.FindRank( name );

                    if ( minRank != null ) {
                        // prevent players from lowering rank so bypass protection
                        if ( !player.Info.Rank.AllowSecurityCircumvention &&
                            zone.Controller.MinRank > player.Info.Rank && minRank <= player.Info.Rank ) {
                            player.Message( "You are not allowed to lower the zone's rank." );
                            continue;
                        }

                        if ( zone.Controller.MinRank != minRank ) {
                            zone.Controller.MinRank = minRank;
                            player.Message( "Permission for zone \"{0}\" changed to {1}+",
                                            zone.Name,
                                            minRank.ClassyName );
                            changesWereMade = true;
                        }
                    } else {
                        player.MessageNoRank( name );
                    }
                }
            }
            if ( changesWereMade )
                zone.Edit( player.Info );
            else
                player.Message( "No changes were made to the zone." );
        }