ALFA.ResourceManager.AddModuleHaks C# (CSharp) Метод

AddModuleHaks() приватный Метод

This routine scans module.ifo for haks to add to the hak list.
private AddModuleHaks ( GFFFile ModuleIfo, string HomeDirectory, string InstallDirectory ) : void
ModuleIfo GFFFile Supplies the module.ifo GFF reader.
HomeDirectory string Supplies the NWN2 home directory.
InstallDirectory string Supplies the NWN2 install directory.
Результат void
        private void AddModuleHaks(GFFFile ModuleIfo, string HomeDirectory, string InstallDirectory)
        {
            string[] SearchDirs = new string[] { HomeDirectory, InstallDirectory };
            GFFList HakList = ModuleIfo.TopLevelStruct.GetListSafe("Mod_HakList");
            List<string> HakFiles = new List<string>();

            if (HakList.StructList.Count == 0)
            {
                string Hak = ModuleIfo.TopLevelStruct.GetExoStringSafe("Mod_Hak").Value;

                if (!String.IsNullOrEmpty(Hak))
                {
                    HakFiles.Add(Hak);
                }
            }
            else
            {
                foreach (GFFStruct HakStruct in HakList.StructList)
                {
                    string Hak = HakStruct.GetExoStringSafe("Mod_Hak").Value;

                    if (String.IsNullOrEmpty(Hak))
                        continue;

                    HakFiles.Add(Hak);
                }
            }

            foreach (string Hak in HakFiles)
            {
                bool Added = false;

                foreach (string DirName in SearchDirs)
                {
                    string HakFileName = String.Format("{0}\\hak\\{1}.hak", DirName, Hak);

                    if (!File.Exists(HakFileName))
                        continue;

                    Repositories.Add(new ALFAERFResourceRepository(HakFileName));
                    Added = true;
                    break;
                }

                if (!Added)
                    throw new ApplicationException("Couldn't locate hak " + Hak);
            }
        }