fCraft.Config.Save C# (CSharp) Method

Save() public method

public Save ( string configFileName ) : bool
configFileName string
return bool
        public bool Save( string configFileName ) {
            XDocument file = new XDocument();

            XElement config = new XElement( ConfigRootName );
            config.Add( new XAttribute( "version", ConfigVersion ) );

            foreach( KeyValuePair<string, string> pair in settings ) {
                config.Add( new XElement( pair.Key, pair.Value ) );
            }

            XElement consoleOptions = new XElement( "ConsoleOptions" );
            for( int i = 0; i < logger.consoleOptions.Length; i++ ) {
                if( logger.consoleOptions[i] ) {
                    consoleOptions.Add( new XElement( ((LogType)i).ToString() ) );
                }
            }
            config.Add( consoleOptions );

            XElement logFileOptions = new XElement( "LogFileOptions" );
            for( int i = 0; i < logger.logFileOptions.Length; i++ ) {
                if( logger.logFileOptions[i] ) {
                    logFileOptions.Add( new XElement( ((LogType)i).ToString() ) );
                }
            }
            config.Add( logFileOptions );

            XElement classesTag = new XElement( "Classes" );
            foreach( PlayerClass playerClass in classes.classes.Values ) {
                XElement classTag = new XElement( "PlayerClass" );
                classTag.Add( new XAttribute( "name", playerClass.name ) );
                classTag.Add( new XAttribute( "rank", playerClass.rank ) );
                classTag.Add( new XAttribute( "color", Color.GetName( playerClass.color ) ) );
                if( playerClass.prefix.Length > 0 ) classTag.Add( new XAttribute( "prefix", playerClass.prefix ) );
                if( playerClass.spamKickThreshold > 0 ) classTag.Add( new XAttribute( "spamKickAt", playerClass.spamKickThreshold ) );
                if( playerClass.spamBanThreshold > 0 ) classTag.Add( new XAttribute( "spamBanAt", playerClass.spamBanThreshold ) );
                if( playerClass.idleKickTimer > 0 ) classTag.Add( new XAttribute( "idleKickAfter", playerClass.idleKickTimer ) );
                if( playerClass.reservedSlot ) classTag.Add( new XAttribute( "reserveSlot", playerClass.reservedSlot ) );
                XElement temp;
                for( int i = 0; i < Enum.GetValues(typeof(Permissions)).Length; i++ ) {
                    if( playerClass.permissions[i] ) {
                        temp = new XElement( ((Permissions)i).ToString() );
                        if( i == (int)Permissions.Ban && playerClass.maxBan!=null ) {
                            temp.Add( new XAttribute( "max", playerClass.maxBan.name ) );
                        } else if( i == (int)Permissions.Kick && playerClass.maxKick != null ) {
                            temp.Add( new XAttribute( "max", playerClass.maxKick.name ) );
                        } else if( i == (int)Permissions.Promote && playerClass.maxPromote != null ) {
                            temp.Add( new XAttribute( "max", playerClass.maxPromote.name ) );
                        } else if( i == (int)Permissions.Demote && playerClass.maxDemote != null ) {
                            temp.Add( new XAttribute( "max", playerClass.maxDemote.name ) );
                        }
                        classTag.Add( temp );
                    }
                }
                classesTag.Add( classTag );
            }
            config.Add( classesTag );


            file.Add( config );
            // save the settings
            try {
                file.Save( configFileName );
                return true;
            } catch( Exception ex ) {
                Log( "Config.Load: Fatal error while saving config file {0}: {1}", LogType.FatalError, configFileName, ex.Message );
                return false;
            }
        }