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);
}
}