/// <summary> /// This method performs demand loading of resource repositories. /// </summary> /// <param name="ModuleOnly">If true, only load the module core /// resources.</param> private void LoadResourceRepositories(bool ModuleOnly) { string HomeDirectory = SystemInfo.GetHomeDirectory(); string InstallDirectory = SystemInfo.GetGameInstallationDirectory(); string ModPath; string DataPath; // // Create a dummy resource manager to keep OEIShared happy. We do // not use it explicitly, but some OEIShared code uses // ResourceManager.Instance and hopes to get something back. // if (OEIShared.IO.ResourceManager.Instance == null) { new DummyOEIResourceManager(); } if (ModuleResourceName == null) { ModuleResourceName = SystemInfo.GetModuleResourceName(); } if (ModuleResourceName == null) { throw new ApplicationException("Cannot determine module resource name."); } Repositories = new List <ResourceRepository>(); ModPath = String.Format("{0}\\modules\\{1}.mod", HomeDirectory, ModuleResourceName); if (File.Exists(ModPath)) { Repositories.Add(new ALFAERFResourceRepository(ModPath)); } else { ModPath = String.Format("{0}\\modules\\{1}\\", HomeDirectory, ModuleResourceName); Repositories.Add(new DirectoryResourceRepository(ModPath)); } if (!ModuleOnly) { GFFFile ModuleIfo = OpenModuleIfo(); AddModuleHaks(ModuleIfo, HomeDirectory, InstallDirectory); AddModuleCampaign(ModuleIfo, HomeDirectory, InstallDirectory); foreach (string PathName in new string[] { HomeDirectory, InstallDirectory }) { string overrideFolder = String.Format("{0}\\override", PathName); if (Directory.Exists(overrideFolder)) { Repositories.Add(new DirectoryResourceRepository(overrideFolder)); } } DataPath = String.Format("{0}\\Data", InstallDirectory); foreach (string ZipPath in Directory.EnumerateFiles(DataPath, "*.zip")) { Repositories.Add(new ZIPResourceRepository(ZipPath)); } } // // Finally, populate all of the repositories, which may take time. // foreach (ResourceRepository Repository in Repositories) { Repository.PopulateRepository(); } }