コード例 #1
0
ファイル: Config.cs プロジェクト: BackupTheBerlios/sunuo-svn
        private void Load()
        {
            document = new XmlDocument();
            m_DataDirectories = new ArrayList();

            if (Exists) {
                XmlTextReader reader = new XmlTextReader(filename);
                try {
                    document.Load(reader);
                } finally {
                    reader.Close();
                }
            } else {
                document.AppendChild(document.CreateElement("sunuo-config"));
            }

            // section "global"
            XmlElement global = GetConfiguration("global");
            if (global != null) {
                foreach (XmlNode node in global.ChildNodes) {
                    if (node.NodeType != XmlNodeType.Element)
                        continue;

                    XmlElement el = (XmlElement)node;

                    switch (node.Name) {
                    case "server-name":
                        serverName = el.InnerText;
                        break;

                    case "multi-threading":
                        m_Features[node.Name]
                            = Parser.ParseBool(el.GetAttribute("value"), true);
                        break;

                    case "feature":
                        m_Features[el.GetAttribute("name")]
                            = Parser.ParseBool(el.GetAttribute("value"), true);
                        break;

                    default:
                        log.WarnFormat("Invalid element global/{0}", node.Name);
                        break;
                    }
                }
            }

            // section "locations"
            XmlElement locations = GetConfiguration("locations");
            foreach (XmlNode node in locations.ChildNodes) {
                XmlElement el = node as XmlElement;
                if (el != null) {
                    string path = el.InnerText;
                    switch (el.Name) {
                    case "config-dir":
                        m_ConfigDirectory = path;
                        break;

                    case "save-dir":
                        m_SaveDirectory = path;
                        break;

                    case "backup-dir":
                        m_BackupDirectory = path;
                        break;

                    case "data-path":
                        if (Directory.Exists(path))
                            m_DataDirectories.Add(path);
                        break;

                    case "log-dir":
                        m_LogDirectory = path;
                        break;

                    case "cache-dir":
                        m_CacheDirectory = path;
                        break;

                    default:
                        log.WarnFormat("Ignoring unknown location tag in {0}: {1}",
                                       filename, el.Name);
                        break;
                    }
                }
            }

            // section "libraries"
            XmlElement librariesEl = GetConfiguration("libraries");
            foreach (XmlElement el in librariesEl.GetElementsByTagName("library")) {
                string name = el.GetAttribute("name");
                if (name == null || name == "") {
                    log.Warn("library element without name attribute");
                    continue;
                }

                name = name.ToLower();

                Library libConfig = (Library)libraryConfig[name];
                if (libConfig == null)
                    libraryConfig[name] = libConfig = new Library(name);

                libConfig.Load(el);
            }

            if (!libraryConfig.ContainsKey("legacy"))
                libraryConfig["legacy"] = new Library("legacy");

            // section "network"
            XmlElement networkEl = GetConfiguration("network");
            m_Network = networkEl == null
                ? new Network()
                : new Network(networkEl);

            // section "login"
            XmlElement loginEl = GetConfiguration("login");
            loginConfig = loginEl == null
                ? new Login()
                : new Login(loginEl);

            // section "server-list"
            XmlElement serverListEl = GetConfiguration("server-list");
            if (serverListEl != null)
                gameServers = new GameServerList(serverListEl);
        }
コード例 #2
0
        private void Load()
        {
            document          = new XmlDocument();
            m_DataDirectories = new ArrayList();

            if (Exists)
            {
                XmlTextReader reader = new XmlTextReader(filename);
                try {
                    document.Load(reader);
                } finally {
                    reader.Close();
                }
            }
            else
            {
                document.AppendChild(document.CreateElement("sunuo-config"));
            }

            // section "global"
            XmlElement global = GetConfiguration("global");

            if (global != null)
            {
                foreach (XmlNode node in global.ChildNodes)
                {
                    if (node.NodeType != XmlNodeType.Element)
                    {
                        continue;
                    }

                    XmlElement el = (XmlElement)node;

                    switch (node.Name)
                    {
                    case "server-name":
                        serverName = el.InnerText;
                        break;

                    case "multi-threading":
                        m_Features[node.Name]
                            = Parser.ParseBool(el.GetAttribute("value"));
                        break;

                    case "feature":
                        m_Features[el.GetAttribute("name")]
                            = Parser.ParseBool(el.GetAttribute("value"));
                        break;

                    default:
                        log.Warn(String.Format("Invalid element global/{0}",
                                               node.Name));
                        break;
                    }
                }
            }

            // section "locations"
            XmlElement locations = GetConfiguration("locations");

            foreach (XmlNode node in locations.ChildNodes)
            {
                XmlElement el = node as XmlElement;
                if (el != null)
                {
                    string path = el.InnerText;
                    switch (el.Name)
                    {
                    case "config-dir":
                        m_ConfigDirectory = path;
                        break;

                    case "save-dir":
                        m_SaveDirectory = path;
                        break;

                    case "backup-dir":
                        m_BackupDirectory = path;
                        break;

                    case "data-path":
                        if (Directory.Exists(path))
                        {
                            m_DataDirectories.Add(path);
                        }
                        break;

                    default:
                        log.Warn(String.Format("Ignoring unknown location tag in {0}: {1}",
                                               filename, el.Name));
                        break;
                    }
                }
            }

            // section "libraries"
            XmlElement librariesEl = GetConfiguration("libraries");

            foreach (XmlElement el in librariesEl.GetElementsByTagName("library"))
            {
                string name = el.GetAttribute("name");
                if (name == null || name == "")
                {
                    log.Warn("library element without name attribute");
                    continue;
                }

                name = name.ToLower();

                Library libConfig = (Library)libraryConfig[name];
                if (libConfig == null)
                {
                    libraryConfig[name] = libConfig = new Library(name);
                }

                libConfig.Load(el);
            }

            if (!libraryConfig.ContainsKey("legacy"))
            {
                libraryConfig["legacy"] = new Library("legacy");
            }

            // section "login"
            XmlElement loginEl = GetConfiguration("login");

            loginConfig = loginEl == null
                                ? new Login()
                                : new Login(loginEl);

            // section "server-list"
            XmlElement serverListEl = GetConfiguration("server-list");

            if (serverListEl != null)
            {
                gameServers = new GameServerList(serverListEl);
            }
        }