private void frmTemplateBrowser_Load(object sender, EventArgs e) { _overlord = new Overlord(); _overlord.LoadCustomizationTemplates(); var dt = new DataTable(); using (var reader = ObjectReader.Create(_overlord.Templates)) dt.Load(reader); dt.Columns["Display"].SetOrdinal(0); dt.Columns["Name"].SetOrdinal(1); dt.Columns["Gender"].SetOrdinal(2); dt.Columns["Race"].SetOrdinal(3); dt.Columns["Language"].SetOrdinal(4); dt.Columns["ArchetypeName"].SetOrdinal(5); dt.Columns["CharacterTemplate"].SetOrdinal(6); dt.Columns["ArmorTemplate"].SetOrdinal(7); dt.Columns["Veteran"].SetOrdinal(8); dt.Columns["CanUseOnCivilian"].SetOrdinal(9); dt.Columns["SpecializedType"].SetOrdinal(10); dt.Columns["SetNames"].SetOrdinal(11); dt.Columns["Tech"].SetOrdinal(12); dt.Columns["PartType"].SetOrdinal(13); dt.Columns["Origin"].SetOrdinal(14); templateBs.DataSource = dt; dgvTemplates.DataSource = templateBs; dgvTemplates.Columns["Index"].Visible = false; dgvTemplates.Columns["PartTypeLocalized"].Visible = false; ApplyFilter(); }
/// <summary> /// Keeping this around in case I support more mods that have helmets. It parses all the extracted XComHelmetContent files in a directory and generates a /// text file that has custom information on which helmets block things like hair and facial props /// </summary> /// <param name="rawHelmetFilesRootDir">The top level directory of the extracted files from the XCOM Editor</param> /// <param name="outputFilePath">The consolidated output text file location</param> static void ParseHelmetInfo(string rawHelmetFilesRootDir, string outputFilePath) { var overlord = new Overlord(); overlord.LoadCustomizationTemplates(); var files = new DirectoryInfo(rawHelmetFilesRootDir).GetFiles("*", SearchOption.AllDirectories); var sb = new StringBuilder(); foreach (var file in files) { var lines = File.ReadAllLines(file.FullName).Where(l => !string.IsNullOrEmpty(l)).Select(l => l.Trim().Replace("\"", "").Split('=')).Where(l => l.Length > 1).ToList(); string arcName = $"{file.Directory.Name}.{lines.First(l => l[0] == "Name")[1]}"; bool hideHair = !lines.Any(l => l[0] == "FallbackHairIndex"); bool hideUpper = lines.Any(l => l[0] == "bHideUpperFacialProps"); bool hideLower = lines.Any(l => l[0] == "bHideLowerFacialProps"); bool hideFacialHair = lines.Any(l => l[0] == "bHideFacialHair"); var matchingTemplate = overlord.Templates.First(t => t.ArchetypeName?.Equals(arcName, StringComparison.OrdinalIgnoreCase) ?? false); sb.AppendLine($"{matchingTemplate.Name}={(hideHair ? "" : "!")}HideHair,{(hideUpper ? "" : "!")}HideUpperFaceProps,{(hideLower ? "" : "!")}HideLowerFaceProps,{(hideFacialHair ? "" : "!")}HideFacialHair"); } File.WriteAllText(outputFilePath, sb.ToString()); }