using AssetStudio; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace AssetStudioGUI { public partial class ExportOptions : Form { public ExportOptions() { InitializeComponent(); assetGroupOptions.SelectedIndex = Properties.Settings.Default.assetGroupOption; restoreExtensionName.Checked = Properties.Settings.Default.restoreExtensionName; converttexture.Checked = Properties.Settings.Default.convertTexture; convertAudio.Checked = Properties.Settings.Default.convertAudio; var str = Properties.Settings.Default.convertType.ToString(); foreach (Control c in panel1.Controls) { if (c.Text == str) { ((RadioButton)c).Checked = true; break; } } openAfterExport.Checked = Properties.Settings.Default.openAfterExport; eulerFilter.Checked = Properties.Settings.Default.eulerFilter; filterPrecision.Value = Properties.Settings.Default.filterPrecision; exportAllNodes.Checked = Properties.Settings.Default.exportAllNodes; exportSkins.Checked = Properties.Settings.Default.exportSkins; exportAnimations.Checked = Properties.Settings.Default.exportAnimations; exportBlendShape.Checked = Properties.Settings.Default.exportBlendShape; castToBone.Checked = Properties.Settings.Default.castToBone; exportAllUvsAsDiffuseMaps.Checked = Properties.Settings.Default.exportAllUvsAsDiffuseMaps; exportUV0UV1.Checked = Properties.Settings.Default.exportUV0UV1; boneSize.Value = Properties.Settings.Default.boneSize; scaleFactor.Value = Properties.Settings.Default.scaleFactor; fbxVersion.SelectedIndex = Properties.Settings.Default.fbxVersion; fbxFormat.SelectedIndex = Properties.Settings.Default.fbxFormat; collectAnimations.Checked = Properties.Settings.Default.collectAnimations; encrypted.Checked = Properties.Settings.Default.encrypted; key.Value = Properties.Settings.Default.key; exportableTypes.Items.AddRange(Studio.assetsManager.ExportableTypes.Keys.Select(x => x.ToString()).ToArray()); var types = JsonConvert.DeserializeObject>(Properties.Settings.Default.exportableTypes); foreach (var exportable in types) { var idx = exportableTypes.Items.IndexOf(exportable.Key.ToString()); if (idx != -1) exportableTypes.SetItemChecked(idx, exportable.Value); } } private void OKbutton_Click(object sender, EventArgs e) { var types = new Dictionary(); for (int i = 0; i < exportableTypes.Items.Count; i++) { var type = Enum.Parse(exportableTypes.Items[i].ToString()); var state = exportableTypes.GetItemChecked(i); types.Add(type, state); } Properties.Settings.Default.exportableTypes = JsonConvert.SerializeObject(types); Properties.Settings.Default.assetGroupOption = assetGroupOptions.SelectedIndex; Properties.Settings.Default.restoreExtensionName = restoreExtensionName.Checked; Properties.Settings.Default.convertTexture = converttexture.Checked; Properties.Settings.Default.convertAudio = convertAudio.Checked; foreach (Control c in panel1.Controls) { if (((RadioButton)c).Checked) { Properties.Settings.Default.convertType = (ImageFormat)Enum.Parse(typeof(ImageFormat), c.Text); break; } } Properties.Settings.Default.openAfterExport = openAfterExport.Checked; Properties.Settings.Default.eulerFilter = eulerFilter.Checked; Properties.Settings.Default.filterPrecision = filterPrecision.Value; Properties.Settings.Default.exportAllNodes = exportAllNodes.Checked; Properties.Settings.Default.exportSkins = exportSkins.Checked; Properties.Settings.Default.exportAnimations = exportAnimations.Checked; Properties.Settings.Default.exportBlendShape = exportBlendShape.Checked; Properties.Settings.Default.castToBone = castToBone.Checked; Properties.Settings.Default.exportAllUvsAsDiffuseMaps = exportAllUvsAsDiffuseMaps.Checked; Properties.Settings.Default.exportUV0UV1 = exportUV0UV1.Checked; Properties.Settings.Default.boneSize = boneSize.Value; Properties.Settings.Default.scaleFactor = scaleFactor.Value; Properties.Settings.Default.fbxVersion = fbxVersion.SelectedIndex; Properties.Settings.Default.fbxFormat = fbxFormat.SelectedIndex; Properties.Settings.Default.collectAnimations = collectAnimations.Checked; Properties.Settings.Default.encrypted = encrypted.Checked; Properties.Settings.Default.key = (byte)key.Value; Properties.Settings.Default.Save(); MiHoYoBinData.Key = (byte)key.Value; MiHoYoBinData.Encrypted = encrypted.Checked; DialogResult = DialogResult.OK; Close(); } private void Cancel_Click(object sender, EventArgs e) { DialogResult = DialogResult.Cancel; Close(); } } }