diff --git a/AssetStudio/Classes/Mesh.cs b/AssetStudio/Classes/Mesh.cs index dcfede4..30fb7d3 100644 --- a/AssetStudio/Classes/Mesh.cs +++ b/AssetStudio/Classes/Mesh.cs @@ -4,7 +4,7 @@ using System.Collections; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; -using static AssetStudio.CustomOptions.GameSpecificOptions.CustomMeshOptions; +using static AssetStudio.CustomOptions.GameSpecific.CustomMeshOptions; namespace AssetStudio { diff --git a/AssetStudio/CustomOptions/CustomBundleOptions.cs b/AssetStudio/CustomOptions/CustomBundleOptions.cs deleted file mode 100644 index 34ffabf..0000000 --- a/AssetStudio/CustomOptions/CustomBundleOptions.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace AssetStudio.CustomOptions -{ - public partial class GameSpecificOptions - { - public sealed class CustomBundleOptions - { - private CompressionType _customBlockCompression = CompressionType.Auto; - private CompressionType _customBlockInfoCompression = CompressionType.Auto; - - public CompressionType CustomBlockCompression - { - get => _customBlockCompression; - set => _customBlockCompression = SetOption(nameof(CustomBlockCompression), value, _customBlockCompression); - } - - public CompressionType CustomBlockInfoCompression - { - get => _customBlockInfoCompression; - set => _customBlockInfoCompression = SetOption(nameof(CustomBlockInfoCompression), value, _customBlockInfoCompression); - } - - public CustomBundleOptions() { } - } - } -} diff --git a/AssetStudio/CustomOptions/CustomMeshOptions.cs b/AssetStudio/CustomOptions/CustomMeshOptions.cs deleted file mode 100644 index c373084..0000000 --- a/AssetStudio/CustomOptions/CustomMeshOptions.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace AssetStudio.CustomOptions -{ - public partial class GameSpecificOptions - { - public sealed class CustomMeshOptions - { - public enum MeshParsingMode - { - Auto, - Tuanjie, - Unity, - } - - private MeshParsingMode _tuanjieMeshParsingMode; - - public MeshParsingMode TuanjieMeshParsingMode - { - get => _tuanjieMeshParsingMode; - set => _tuanjieMeshParsingMode = SetOption(nameof(TuanjieMeshParsingMode), value, _tuanjieMeshParsingMode); - } - - public CustomMeshOptions() { } - } - } -} diff --git a/AssetStudio/CustomOptions/CustomOption.cs b/AssetStudio/CustomOptions/CustomOption.cs new file mode 100644 index 0000000..02e56f5 --- /dev/null +++ b/AssetStudio/CustomOptions/CustomOption.cs @@ -0,0 +1,17 @@ +namespace AssetStudio.CustomOptions +{ + public abstract class CustomOption + { + protected static T SetOption(string option, T value, T curValue) + { + if (value.Equals(curValue)) + return curValue; + + var val = string.IsNullOrEmpty(value.ToString()) + ? "None" + : value.ToString(); + Logger.Info($"- {option}: {val}"); + return value; + } + } +} diff --git a/AssetStudio/CustomOptions/GameSpecific/CustomBundleOptions.cs b/AssetStudio/CustomOptions/GameSpecific/CustomBundleOptions.cs new file mode 100644 index 0000000..218c7d0 --- /dev/null +++ b/AssetStudio/CustomOptions/GameSpecific/CustomBundleOptions.cs @@ -0,0 +1,22 @@ +namespace AssetStudio.CustomOptions.GameSpecific +{ + public sealed class CustomBundleOptions : CustomOption + { + private CompressionType _customBlockCompression = CompressionType.Auto; + private CompressionType _customBlockInfoCompression = CompressionType.Auto; + + public CompressionType CustomBlockCompression + { + get => _customBlockCompression; + set => _customBlockCompression = SetOption(nameof(CustomBlockCompression), value, _customBlockCompression); + } + + public CompressionType CustomBlockInfoCompression + { + get => _customBlockInfoCompression; + set => _customBlockInfoCompression = SetOption(nameof(CustomBlockInfoCompression), value, _customBlockInfoCompression); + } + + public CustomBundleOptions() { } + } +} diff --git a/AssetStudio/CustomOptions/GameSpecific/CustomMeshOptions.cs b/AssetStudio/CustomOptions/GameSpecific/CustomMeshOptions.cs new file mode 100644 index 0000000..cbdb72b --- /dev/null +++ b/AssetStudio/CustomOptions/GameSpecific/CustomMeshOptions.cs @@ -0,0 +1,22 @@ +namespace AssetStudio.CustomOptions.GameSpecific +{ + public sealed class CustomMeshOptions : CustomOption + { + public enum MeshParsingMode + { + Auto, + Tuanjie, + Unity, + } + + private MeshParsingMode _tuanjieMeshParsingMode; + + public MeshParsingMode TuanjieMeshParsingMode + { + get => _tuanjieMeshParsingMode; + set => _tuanjieMeshParsingMode = SetOption(nameof(TuanjieMeshParsingMode), value, _tuanjieMeshParsingMode); + } + + public CustomMeshOptions() { } + } +} diff --git a/AssetStudio/CustomOptions/GameSpecificOptions.cs b/AssetStudio/CustomOptions/GameSpecificOptions.cs index a21f5f4..384dc5a 100644 --- a/AssetStudio/CustomOptions/GameSpecificOptions.cs +++ b/AssetStudio/CustomOptions/GameSpecificOptions.cs @@ -1,4 +1,5 @@ using AssetStudio.CustomOptions.Asmo; +using AssetStudio.CustomOptions.GameSpecific; using SevenZip; using System; using System.IO; @@ -8,7 +9,7 @@ using System.Text.Json.Serialization; namespace AssetStudio.CustomOptions { - public partial class GameSpecificOptions + public class GameSpecificOptions { private static JsonSerializerOptions jsonOptions; private static string fileName = "GameOptions"; @@ -106,17 +107,5 @@ namespace AssetStudio.CustomOptions Logger.Info($"- Specified Unity version: {_customUnityVer}"); } - - private static T SetOption(string option, T value, T curValue) - { - if (value.Equals(curValue)) - return curValue; - - var val = string.IsNullOrEmpty(value.ToString()) - ? "None" - : value.ToString(); - Logger.Info($"- {option}: {val}"); - return value; - } } } diff --git a/AssetStudioGUI/GameOptionsForm.cs b/AssetStudioGUI/GameOptionsForm.cs index d553b15..0a740fd 100644 --- a/AssetStudioGUI/GameOptionsForm.cs +++ b/AssetStudioGUI/GameOptionsForm.cs @@ -1,5 +1,6 @@ using AssetStudio; using AssetStudio.CustomOptions; +using AssetStudio.CustomOptions.GameSpecific; using System; using System.Linq; using System.Windows.Forms; @@ -55,7 +56,7 @@ namespace AssetStudioGUI _gameOptions.Bundles.CustomBlockInfoCompression = blockInfoCompression; var tMeshModeIndex = ((RadioButton)panel1.Controls.Cast().First(x => ((RadioButton)x).Checked)).TabIndex; - _gameOptions.Meshes.TuanjieMeshParsingMode = (GameSpecificOptions.CustomMeshOptions.MeshParsingMode)tMeshModeIndex; + _gameOptions.Meshes.TuanjieMeshParsingMode = (CustomMeshOptions.MeshParsingMode)tMeshModeIndex; } #region General