Esempio n. 1
0
        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());
        }