예제 #1
0
        /// <summary>
        /// Initializes the statically held instance of the PlayerParam class.
        /// </summary>
        /// <returns>True iff initialization successful.</returns>
        public static bool Initialize()
        {
            Instance = new PlayerParam();


            string configDirectory = ConfigDirectory;
            string environmentalVariableConfigDirectory = System.Environment.GetEnvironmentVariable("RCSS_CONF_DIR");

            if (environmentalVariableConfigDirectory != null)
            {
                configDirectory = environmentalVariableConfigDirectory;
            }
            System.IO.FileInfo filePath;

            System.IO.DirectoryInfo configPath;
            try
            {
                configPath = new System.IO.DirectoryInfo(Utilities.tildeExpand(configDirectory));
                if (configPath.Exists)
                {
                    filePath = new System.IO.FileInfo(configPath.FullName + System.IO.Path.DirectorySeparatorChar + PlayerConfigName);
                }
                else
                {
                    configPath.Create();
                    filePath = new System.IO.FileInfo(configPath.FullName + System.IO.Path.DirectorySeparatorChar + PlayerConfigName);
                }
            }
            catch (System.Exception excption)
            {
                Console.Error.WriteLine(" Exception caught! " + excption.Message
                                        + System.Environment.NewLine + "Could not read config directory '"
                                        + Utilities.tildeExpand(configDirectory) + "'"
                                        + excption.StackTrace);
                return(false);
            }


            if (!Instance.parseCreateConf(filePath))
            {
                Console.Error.WriteLine("could not parse configuration file '"
                                        + filePath.FullName);
                return(false);
            }


            return(true);
        }
예제 #2
0
        /// <summary>
        /// Parses or creates a configuration file.
        /// </summary>
        /// <param name="configFileName">The information of the file to parse or create.</param>
        /// <returns>True iff succesfully parsed or created config file.</returns>
        private bool parseCreateConf(System.IO.FileInfo configFileName)
        {
            string path = configFileName.FullName;

            System.Xml.Serialization.XmlSerializer serialize = new System.Xml.Serialization.XmlSerializer(typeof(PlayerParam));


            if (!configFileName.Exists)
            {
                System.IO.Stream newConfigFile = new System.IO.FileStream(configFileName.FullName, System.IO.FileMode.CreateNew, System.IO.FileAccess.Write);


                serialize.Serialize(newConfigFile, this);
                newConfigFile.Close();
                return(true);
            }
            else
            {
                System.IO.StreamReader oldConfigFile = new System.IO.StreamReader(configFileName.FullName);
                Instance = (PlayerParam)serialize.Deserialize(oldConfigFile);
                oldConfigFile.Close();
                return(true);
            }
        }
예제 #3
0
        /// <summary>
        /// Initalizes the server paramters (including Player Parameters, CVSSaver Parameters, and command lines).
        /// </summary>
        /// <param name="args">Arguments from the command line.</param>
        /// <returns>Returns true after successful intialization.</returns>
        public static bool Initialize(string[] args)
        {
            Instance = new ServerParam();


            string configDirectory = CONF_DIR;

            string environmentalVariableConfDirectory = System.Environment.GetEnvironmentVariable("RCSS_CONF_DIR");

            if (environmentalVariableConfDirectory != null)
            {
                configDirectory = environmentalVariableConfDirectory;
            }

            System.IO.DirectoryInfo configPath;

            try
            {
                configPath = new System.IO.DirectoryInfo(Utilities.tildeExpand(configDirectory));

                if (!configPath.Exists)
                {
                    configPath.Create();
                    if (!configPath.Exists)
                    {
                        Console.Error.WriteLine("Could not read or create the config directory '"
                                                + configPath.FullName + "'");

                        return(false);
                    }
                }
            }
            catch (System.Exception exception)
            {
                Console.Error.WriteLine("Exception caught! " + exception.Message
                                        + System.Environment.NewLine + "Could not read or create config directory '"
                                        + Utilities.tildeExpand(configDirectory) + "' in " + exception.TargetSite);
                return(false);
            }

            System.IO.FileInfo filePath = new System.IO.FileInfo(configPath.FullName + System.IO.Path.DirectorySeparatorChar + SERVER_CONF);


            if (!Instance.parseCreateConf(filePath))
            {
                Console.Error.WriteLine("could not create or parse configuration file '"
                                        + filePath.ToString() + "'");
                return(false);
            }



            if (!PlayerParam.Initialize())
            {
                return(false);
            }



            return(true);
        }