diff --git a/PCK-Studio/Extensions/PckFileDataExtensions.cs b/PCK-Studio/Extensions/PckFileDataExtensions.cs index 95896208..cdc5a5fd 100644 --- a/PCK-Studio/Extensions/PckFileDataExtensions.cs +++ b/PCK-Studio/Extensions/PckFileDataExtensions.cs @@ -20,34 +20,34 @@ namespace PckStudio.Extensions { private const string MipMap = "MipMapLevel"; - internal static Image GetTexture(this PckFileData file) + internal static Image GetTexture(this PckAsset file) { - if (file.Filetype != PckFileType.SkinFile && - file.Filetype != PckFileType.CapeFile && - file.Filetype != PckFileType.TextureFile) + if (file.Type != PckAssetType.SkinFile && + file.Type != PckAssetType.CapeFile && + file.Type != PckAssetType.TextureFile) { throw new Exception("File is not suitable to contain image data."); } return file.GetDeserializedData(ImageDeserializer.DefaultDeserializer); } - internal static T GetDeserializedData(this PckFileData file, IPckDeserializer deserializer) + internal static T GetDeserializedData(this PckAsset file, IPckDeserializer deserializer) { return deserializer.Deserialize(file); } - internal static T GetData(this PckFileData file, IDataFormatReader formatReader) where T : class + internal static T GetData(this PckAsset file, IDataFormatReader formatReader) where T : class { using var ms = new MemoryStream(file.Data); return formatReader.FromStream(ms); } - internal static void SetSerializedData(this PckFileData file, T obj, IPckSerializer serializer) + internal static void SetSerializedData(this PckAsset file, T obj, IPckSerializer serializer) { serializer.Serialize(obj, ref file); } - internal static void SetData(this PckFileData file, IDataFormatWriter formatWriter) + internal static void SetData(this PckAsset file, IDataFormatWriter formatWriter) { using (var stream = new MemoryStream()) { @@ -56,18 +56,18 @@ namespace PckStudio.Extensions } } - internal static void SetTexture(this PckFileData file, Image image) + internal static void SetTexture(this PckAsset file, Image image) { - if (file.Filetype != PckFileType.SkinFile && - file.Filetype != PckFileType.CapeFile && - file.Filetype != PckFileType.TextureFile) + if (file.Type != PckAssetType.SkinFile && + file.Type != PckAssetType.CapeFile && + file.Type != PckAssetType.TextureFile) { throw new Exception("File is not suitable to contain image data."); } file.SetSerializedData(image, ImageSerializer.DefaultSerializer); } - internal static bool IsMipmappedFile(this PckFileData file) + internal static bool IsMipmappedFile(this PckAsset file) { // We only want to test the file name itself. ex: "terrainMipMapLevel2" string name = Path.GetFileNameWithoutExtension(file.Filename); @@ -82,7 +82,7 @@ namespace PckStudio.Extensions return true; } - internal static string GetNormalPath(this PckFileData file) + internal static string GetNormalPath(this PckAsset file) { if (!file.IsMipmappedFile()) return file.Filename; diff --git a/PCK-Studio/Extensions/PckFileExtensions.cs b/PCK-Studio/Extensions/PckFileExtensions.cs index 45eca6a9..869b30d6 100644 --- a/PCK-Studio/Extensions/PckFileExtensions.cs +++ b/PCK-Studio/Extensions/PckFileExtensions.cs @@ -11,7 +11,7 @@ namespace PckStudio.Extensions { internal static class PckFileExtensions { - internal static PckFileData CreateNewFileIf(this PckFile pck, bool condition, string filename, PckFileType filetype, IDataFormatWriter writer) + internal static PckAsset CreateNewFileIf(this PckFile pck, bool condition, string filename, PckAssetType filetype, IDataFormatWriter writer) { if (condition) { @@ -20,7 +20,7 @@ namespace PckStudio.Extensions return null; } - internal static PckFileData CreateNewFile(this PckFile pck, string filename, PckFileType filetype, IDataFormatWriter writer) + internal static PckAsset CreateNewFile(this PckFile pck, string filename, PckAssetType filetype, IDataFormatWriter writer) { var file = pck.CreateNewFile(filename, filetype); file.SetData(writer); diff --git a/PCK-Studio/Forms/Additional-Popups/AddFilePrompt.cs b/PCK-Studio/Forms/Additional-Popups/AddFilePrompt.cs index 9e4bb343..69960382 100644 --- a/PCK-Studio/Forms/Additional-Popups/AddFilePrompt.cs +++ b/PCK-Studio/Forms/Additional-Popups/AddFilePrompt.cs @@ -12,7 +12,7 @@ namespace PckStudio.Popups /// otherwise /// public string Filepath => DialogResult == DialogResult.OK ? InputTextBox.Text : string.Empty; - public PckFileType Filetype => (PckFileType)(FileTypeComboBox.SelectedIndex + (FileTypeComboBox.SelectedIndex >= 3 ? 1 : 0)); + public PckAssetType Filetype => (PckAssetType)(FileTypeComboBox.SelectedIndex + (FileTypeComboBox.SelectedIndex >= 3 ? 1 : 0)); public AddFilePrompt(string initialText) : this(initialText, -1) { } diff --git a/PCK-Studio/Forms/Editor/AudioEditor.cs b/PCK-Studio/Forms/Editor/AudioEditor.cs index 7658640e..2ed23b7b 100644 --- a/PCK-Studio/Forms/Editor/AudioEditor.cs +++ b/PCK-Studio/Forms/Editor/AudioEditor.cs @@ -29,7 +29,7 @@ namespace PckStudio.Forms.Editor { public string defaultType = "yes"; PckAudioFile audioFile = null; - PckFileData audioPCK; + PckAsset audioPCK; bool _isLittleEndian = false; MainForm parent = null; @@ -63,7 +63,7 @@ namespace PckStudio.Forms.Editor return (PckAudioFile.AudioCategory.EAudioType)Categories.IndexOf(category); } - public AudioEditor(PckFileData file, bool isLittleEndian) + public AudioEditor(PckAsset file, bool isLittleEndian) { InitializeComponent(); diff --git a/PCK-Studio/Forms/Editor/BehaviourEditor.cs b/PCK-Studio/Forms/Editor/BehaviourEditor.cs index 057de695..0dcf8099 100644 --- a/PCK-Studio/Forms/Editor/BehaviourEditor.cs +++ b/PCK-Studio/Forms/Editor/BehaviourEditor.cs @@ -21,7 +21,7 @@ namespace PckStudio.Forms.Editor public partial class BehaviourEditor : MetroForm { // Behaviours File Format research by Miku and MattNL - private readonly PckFileData _file; + private readonly PckAsset _file; BehaviourFile behaviourFile; private readonly List BehaviourData = Entities.BehaviourInfos; @@ -54,7 +54,7 @@ namespace PckStudio.Forms.Editor treeView1.EndUpdate(); } - public BehaviourEditor(PckFileData file) + public BehaviourEditor(PckAsset file) { InitializeComponent(); diff --git a/PCK-Studio/Forms/Editor/COLEditor.cs b/PCK-Studio/Forms/Editor/COLEditor.cs index 78a222c3..8d82aa14 100644 --- a/PCK-Studio/Forms/Editor/COLEditor.cs +++ b/PCK-Studio/Forms/Editor/COLEditor.cs @@ -19,14 +19,14 @@ namespace PckStudio.Forms.Editor ColorContainer colourfile; string clipboard_color = "#FFFFFF"; - private readonly PckFileData _file; + private readonly PckAsset _file; List colorCache = new List(); List waterCache = new List(); List underwaterCache = new List(); List fogCache = new List(); - public COLEditor(PckFileData file) + public COLEditor(PckAsset file) { InitializeComponent(); diff --git a/PCK-Studio/Forms/Editor/LOCEditor.cs b/PCK-Studio/Forms/Editor/LOCEditor.cs index 56d5a607..78ac8b1c 100644 --- a/PCK-Studio/Forms/Editor/LOCEditor.cs +++ b/PCK-Studio/Forms/Editor/LOCEditor.cs @@ -19,9 +19,9 @@ namespace PckStudio.Forms.Editor { DataTable tbl; LOCFile currentLoc; - PckFileData _file; + PckAsset _file; - public LOCEditor(PckFileData file) + public LOCEditor(PckAsset file) { InitializeComponent(); _file = file; diff --git a/PCK-Studio/Forms/Editor/MaterialsEditor.cs b/PCK-Studio/Forms/Editor/MaterialsEditor.cs index 75fbd5eb..2129b393 100644 --- a/PCK-Studio/Forms/Editor/MaterialsEditor.cs +++ b/PCK-Studio/Forms/Editor/MaterialsEditor.cs @@ -19,7 +19,7 @@ namespace PckStudio.Forms.Editor public partial class MaterialsEditor : MetroForm { // Materials File Format research by PhoenixARC - private readonly PckFileData _file; + private readonly PckAsset _file; MaterialContainer materialFile; private readonly List MaterialData = Entities.BehaviourInfos; @@ -64,7 +64,7 @@ namespace PckStudio.Forms.Editor treeView1.EndUpdate(); } - public MaterialsEditor(PckFileData file) + public MaterialsEditor(PckAsset file) { InitializeComponent(); _file = file; diff --git a/PCK-Studio/Forms/Editor/TextureAtlasEditor.cs b/PCK-Studio/Forms/Editor/TextureAtlasEditor.cs index 5c6ad3e6..ec5b8f2c 100644 --- a/PCK-Studio/Forms/Editor/TextureAtlasEditor.cs +++ b/PCK-Studio/Forms/Editor/TextureAtlasEditor.cs @@ -170,7 +170,7 @@ namespace PckStudio.Forms.Editor private bool AcquireColorTable(PckFile pckFile) { - if (pckFile.TryGetFile("colours.col", PckFileType.ColourTableFile, out var colFile) && + if (pckFile.TryGetFile("colours.col", PckAssetType.ColourTableFile, out var colFile) && colFile.Size > 0) { using var ms = new MemoryStream(colFile.Data); @@ -243,11 +243,11 @@ namespace PckStudio.Forms.Editor if (animationButton.Enabled = _atlasType == "blocks" || _atlasType == "items") { - PckFileData animationFile; + PckAsset animationFile; bool hasAnimation = - _pckFile.TryGetValue($"res/textures/{_atlasType}/{dataTile.Tile.InternalName}.png", PckFileType.TextureFile, out animationFile) || - _pckFile.TryGetValue($"res/textures/{_atlasType}/{dataTile.Tile.InternalName}.tga", PckFileType.TextureFile, out animationFile); + _pckFile.TryGetValue($"res/textures/{_atlasType}/{dataTile.Tile.InternalName}.png", PckAssetType.TextureFile, out animationFile) || + _pckFile.TryGetValue($"res/textures/{_atlasType}/{dataTile.Tile.InternalName}.tga", PckAssetType.TextureFile, out animationFile); animationButton.Text = hasAnimation ? "Edit Animation" : "Create Animation"; if (playAnimationsToolStripMenuItem.Checked && @@ -535,7 +535,7 @@ namespace PckStudio.Forms.Editor { var file = _pckFile.GetOrCreate( $"res/textures/{_atlasType}/{_selectedTile.Tile.InternalName}.png", - PckFileType.TextureFile + PckAssetType.TextureFile ); var animation = file.GetDeserializedData(AnimationDeserializer.DefaultDeserializer); diff --git a/PCK-Studio/Forms/Skins-And-Textures/AddNewSkin.cs b/PCK-Studio/Forms/Skins-And-Textures/AddNewSkin.cs index 10dc4771..911d09b4 100644 --- a/PCK-Studio/Forms/Skins-And-Textures/AddNewSkin.cs +++ b/PCK-Studio/Forms/Skins-And-Textures/AddNewSkin.cs @@ -17,13 +17,13 @@ namespace PckStudio.Popups { public partial class AddNewSkin : MetroFramework.Forms.MetroForm { - public PckFileData SkinFile => skin; - public PckFileData CapeFile => cape; + public PckAsset SkinFile => skin; + public PckAsset CapeFile => cape; public bool HasCape => cape is not null; private LOCFile currentLoc; - private PckFileData skin = new PckFileData("dlcskinXYXYXYXY", PckFileType.SkinFile); - private PckFileData cape; + private PckAsset skin = new PckAsset("dlcskinXYXYXYXY", PckAssetType.SkinFile); + private PckAsset cape; private SkinANIM anim = new SkinANIM(); private Random rng = new Random(); @@ -226,7 +226,7 @@ namespace PckStudio.Popups return; } capePictureBox.Image = Image.FromFile(ofd.FileName); - cape ??= new PckFileData("dlccapeXYXYXYXY", PckFileType.CapeFile); + cape ??= new PckAsset("dlccapeXYXYXYXY", PckAssetType.CapeFile); cape.SetData(File.ReadAllBytes(ofd.FileName)); contextMenuCape.Items[0].Text = "Replace"; capeLabel.Visible = false; diff --git a/PCK-Studio/Forms/Skins-And-Textures/AdvancedOptions.cs b/PCK-Studio/Forms/Skins-And-Textures/AdvancedOptions.cs index 19d39a3f..ab5f6864 100644 --- a/PCK-Studio/Forms/Skins-And-Textures/AdvancedOptions.cs +++ b/PCK-Studio/Forms/Skins-And-Textures/AdvancedOptions.cs @@ -44,12 +44,12 @@ namespace PckStudio.Popups MessageBox.Show(this, "Please select a filetype before applying"); } - private void applyBulkProperties(IReadOnlyCollection files, int index) + private void applyBulkProperties(IReadOnlyCollection files, int index) { - foreach (PckFileData file in files) + foreach (PckAsset file in files) { - if (file.Filetype == PckFileType.TexturePackInfoFile || - file.Filetype == PckFileType.SkinDataFile) + if (file.Type == PckAssetType.TexturePackInfoFile || + file.Type == PckAssetType.SkinDataFile) { try { @@ -65,15 +65,15 @@ namespace PckStudio.Popups } } - if (index == -1 || (Enum.IsDefined(typeof(PckFileType), index) && (int)file.Filetype == index)) + if (index == -1 || (Enum.IsDefined(typeof(PckAssetType), index) && (int)file.Type == index)) { file.AddProperty(propertyKeyTextBox.Text, propertyValueTextBox.Text); } } - if (Enum.IsDefined(typeof(PckFileType), index)) + if (Enum.IsDefined(typeof(PckAssetType), index)) { - MessageBox.Show(this, $"Data added to {(PckFileType)index} entries"); + MessageBox.Show(this, $"Data added to {(PckAssetType)index} entries"); return; } MessageBox.Show(this, "Data added to all entries"); diff --git a/PCK-Studio/Forms/Skins-And-Textures/generateModel.cs b/PCK-Studio/Forms/Skins-And-Textures/generateModel.cs index 82df00a6..840a06c2 100644 --- a/PCK-Studio/Forms/Skins-And-Textures/generateModel.cs +++ b/PCK-Studio/Forms/Skins-And-Textures/generateModel.cs @@ -39,7 +39,7 @@ namespace PckStudio.Forms left, } - private PckFileData _file; + private PckAsset _file; private SkinANIM _ANIM; private static Color _backgroundColor = Color.FromArgb(0xff, 0x50, 0x50, 0x50); @@ -126,7 +126,7 @@ namespace PckStudio.Forms } } - public generateModel(PckFileData file) + public generateModel(PckAsset file) { MessageBox.Show(this, "This feature is now considered deprecated and will no longer recieve updates. A better alternative is currently under development. Use at your own risk.", "Deprecated Feature", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); InitializeComponent(); @@ -149,7 +149,7 @@ namespace PckStudio.Forms return sWhitespace.Replace(input, replacement); } - private void LoadData(PckFileData file) + private void LoadData(PckAsset file) { comboParent.Enabled = file.GetMultipleProperties("BOX").All(kv => { var box = SkinBOX.FromString(kv.Value); diff --git a/PCK-Studio/Interfaces/IPckDeserializer.cs b/PCK-Studio/Interfaces/IPckDeserializer.cs index 611acb82..6d5a361e 100644 --- a/PCK-Studio/Interfaces/IPckDeserializer.cs +++ b/PCK-Studio/Interfaces/IPckDeserializer.cs @@ -9,6 +9,6 @@ namespace PckStudio.Interfaces { internal interface IPckDeserializer { - public T Deserialize(PckFileData file); + public T Deserialize(PckAsset file); } } \ No newline at end of file diff --git a/PCK-Studio/Interfaces/IPckSerializer.cs b/PCK-Studio/Interfaces/IPckSerializer.cs index 5ea89e0f..0b20f8d5 100644 --- a/PCK-Studio/Interfaces/IPckSerializer.cs +++ b/PCK-Studio/Interfaces/IPckSerializer.cs @@ -9,6 +9,6 @@ namespace PckStudio.Interfaces { internal interface IPckSerializer { - public void Serialize(T obj, ref PckFileData file); + public void Serialize(T obj, ref PckAsset file); } } diff --git a/PCK-Studio/Internal/Deserializer/AnimationDeserializer.cs b/PCK-Studio/Internal/Deserializer/AnimationDeserializer.cs index 04f23dc0..e5d8f94e 100644 --- a/PCK-Studio/Internal/Deserializer/AnimationDeserializer.cs +++ b/PCK-Studio/Internal/Deserializer/AnimationDeserializer.cs @@ -16,7 +16,7 @@ namespace PckStudio.Internal.Deserializer { public static readonly AnimationDeserializer DefaultDeserializer = new AnimationDeserializer(); - public Animation Deserialize(PckFileData file) + public Animation Deserialize(PckAsset file) { _ = file ?? throw new ArgumentNullException(nameof(file)); if (file.Size > 0) diff --git a/PCK-Studio/Internal/Deserializer/ImageDeserializer.cs b/PCK-Studio/Internal/Deserializer/ImageDeserializer.cs index 4747fb96..0201e437 100644 --- a/PCK-Studio/Internal/Deserializer/ImageDeserializer.cs +++ b/PCK-Studio/Internal/Deserializer/ImageDeserializer.cs @@ -18,7 +18,7 @@ namespace PckStudio.Internal.Deserializer public static readonly ImageDeserializer DefaultDeserializer = new ImageDeserializer(); private static Image EmptyImage = new Bitmap(1, 1, PixelFormat.Format32bppArgb); - public Image Deserialize(PckFileData file) + public Image Deserialize(PckAsset file) { using var stream = new MemoryStream(file.Data); try diff --git a/PCK-Studio/Internal/PckNodeSorter.cs b/PCK-Studio/Internal/PckNodeSorter.cs index 03cfd111..640db7d7 100644 --- a/PCK-Studio/Internal/PckNodeSorter.cs +++ b/PCK-Studio/Internal/PckNodeSorter.cs @@ -15,8 +15,8 @@ namespace PckStudio.Internal private bool CheckForSkinAndCapeFiles(TreeNode node) { - return node.TryGetTagData(out PckFileData file) && - (file.Filetype == PckFileType.SkinFile || file.Filetype == PckFileType.CapeFile); + return node.TryGetTagData(out PckAsset file) && + (file.Type == PckAssetType.SkinFile || file.Type == PckAssetType.CapeFile); } public int Compare(object x, object y) @@ -39,9 +39,9 @@ namespace PckStudio.Internal private int InternalCompare(TreeNode first, TreeNode second) { - if (first.IsTagOfType() && !second.IsTagOfType()) + if (first.IsTagOfType() && !second.IsTagOfType()) return -1; - if (!first.IsTagOfType() && second.IsTagOfType()) + if (!first.IsTagOfType() && second.IsTagOfType()) return 1; if (CheckForSkinAndCapeFiles(first)) diff --git a/PCK-Studio/Internal/Serializer/AnimationSerializer.cs b/PCK-Studio/Internal/Serializer/AnimationSerializer.cs index 39febbb4..55bb59d8 100644 --- a/PCK-Studio/Internal/Serializer/AnimationSerializer.cs +++ b/PCK-Studio/Internal/Serializer/AnimationSerializer.cs @@ -17,7 +17,7 @@ namespace PckStudio.Internal.Serializer { public static readonly AnimationSerializer DefaultSerializer = new AnimationSerializer(); - public void Serialize(Animation animation, ref PckFileData file) + public void Serialize(Animation animation, ref PckAsset file) { string anim = animation.BuildAnim(); file.SetProperty("ANIM", anim); diff --git a/PCK-Studio/Internal/Serializer/ImageSerializer.cs b/PCK-Studio/Internal/Serializer/ImageSerializer.cs index 5cf3f0ea..04e041fa 100644 --- a/PCK-Studio/Internal/Serializer/ImageSerializer.cs +++ b/PCK-Studio/Internal/Serializer/ImageSerializer.cs @@ -17,7 +17,7 @@ namespace PckStudio.Internal.Serializer { public static readonly ImageSerializer DefaultSerializer = new ImageSerializer(); - public void Serialize(Image obj, ref PckFileData file) + public void Serialize(Image obj, ref PckAsset file) { var stream = new MemoryStream(); try diff --git a/PCK-Studio/MainForm.cs b/PCK-Studio/MainForm.cs index d83e34d1..63373246 100644 --- a/PCK-Studio/MainForm.cs +++ b/PCK-Studio/MainForm.cs @@ -64,24 +64,24 @@ namespace PckStudio bool isSelectingTab = false; - readonly Dictionary> pckFileTypeHandler; + readonly Dictionary> pckFileTypeHandler; public MainForm() { InitializeComponent(); - skinToolStripMenuItem1.Click += (sender, e) => SetFileType(PckFileType.SkinFile); - capeToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.CapeFile); - textureToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.TextureFile); - languagesFileLOCToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.LocalisationFile); - gameRulesFileGRFToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.GameRulesFile); - audioPCKFileToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.AudioFile); - coloursCOLFileToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.ColourTableFile); - gameRulesHeaderGRHToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.GameRulesHeader); - skinsPCKToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.SkinDataFile); - modelsFileBINToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.ModelsFile); - behavioursFileBINToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.BehavioursFile); - entityMaterialsFileBINToolStripMenuItem.Click += (sender, e) => SetFileType(PckFileType.MaterialFile); + skinToolStripMenuItem1.Click += (sender, e) => SetFileType(PckAssetType.SkinFile); + capeToolStripMenuItem.Click += (sender, e) => SetFileType(PckAssetType.CapeFile); + textureToolStripMenuItem.Click += (sender, e) => SetFileType(PckAssetType.TextureFile); + languagesFileLOCToolStripMenuItem.Click += (sender, e) => SetFileType(PckAssetType.LocalisationFile); + gameRulesFileGRFToolStripMenuItem.Click += (sender, e) => SetFileType(PckAssetType.GameRulesFile); + audioPCKFileToolStripMenuItem.Click += (sender, e) => SetFileType(PckAssetType.AudioFile); + coloursCOLFileToolStripMenuItem.Click += (sender, e) => SetFileType(PckAssetType.ColourTableFile); + gameRulesHeaderGRHToolStripMenuItem.Click += (sender, e) => SetFileType(PckAssetType.GameRulesHeader); + skinsPCKToolStripMenuItem.Click += (sender, e) => SetFileType(PckAssetType.SkinDataFile); + modelsFileBINToolStripMenuItem.Click += (sender, e) => SetFileType(PckAssetType.ModelsFile); + behavioursFileBINToolStripMenuItem.Click += (sender, e) => SetFileType(PckAssetType.BehavioursFile); + entityMaterialsFileBINToolStripMenuItem.Click += (sender, e) => SetFileType(PckAssetType.MaterialFile); treeViewMain.TreeViewNodeSorter = new PckNodeSorter(); @@ -92,31 +92,31 @@ namespace PckStudio labelVersion.Text = $"{Application.ProductName}: {Application.ProductVersion}"; ChangelogRichTextBox.Text = Resources.CHANGELOG; - pckFileTypeHandler = new Dictionary>(15) + pckFileTypeHandler = new Dictionary>(15) { - [PckFileType.SkinFile] = HandleSkinFile, - [PckFileType.CapeFile] = null, - [PckFileType.TextureFile] = HandleTextureFile, - [PckFileType.UIDataFile] = _ => throw new NotSupportedException("unused in-game"), - [PckFileType.InfoFile] = null, - [PckFileType.TexturePackInfoFile] = null, // HandleInnerPckFile, - [PckFileType.LocalisationFile] = HandleLocalisationFile, - [PckFileType.GameRulesFile] = HandleGameRuleFile, - [PckFileType.AudioFile] = HandleAudioFile, - [PckFileType.ColourTableFile] = HandleColourFile, - [PckFileType.GameRulesHeader] = HandleGameRuleFile, - [PckFileType.SkinDataFile] = null, // HandleInnerPckFile, - [PckFileType.ModelsFile] = null, //HandleModelsFile, // Note: Uncomment when implemented - [PckFileType.BehavioursFile] = HandleBehavioursFile, - [PckFileType.MaterialFile] = HandleMaterialFile, + [PckAssetType.SkinFile] = HandleSkinFile, + [PckAssetType.CapeFile] = null, + [PckAssetType.TextureFile] = HandleTextureFile, + [PckAssetType.UIDataFile] = _ => throw new NotSupportedException("unused in-game"), + [PckAssetType.InfoFile] = null, + [PckAssetType.TexturePackInfoFile] = null, // HandleInnerPckFile, + [PckAssetType.LocalisationFile] = HandleLocalisationFile, + [PckAssetType.GameRulesFile] = HandleGameRuleFile, + [PckAssetType.AudioFile] = HandleAudioFile, + [PckAssetType.ColourTableFile] = HandleColourFile, + [PckAssetType.GameRulesHeader] = HandleGameRuleFile, + [PckAssetType.SkinDataFile] = null, // HandleInnerPckFile, + [PckAssetType.ModelsFile] = null, //HandleModelsFile, // Note: Uncomment when implemented + [PckAssetType.BehavioursFile] = HandleBehavioursFile, + [PckAssetType.MaterialFile] = HandleMaterialFile, }; } // TODO: decide on how to handle embedded pck files - private void HandleInnerPckFile(PckFileData file) + private void HandleInnerPckFile(PckAsset file) { if (Settings.Default.LoadSubPcks && - (file.Filetype == PckFileType.SkinDataFile || file.Filetype == PckFileType.TexturePackInfoFile) && + (file.Type == PckAssetType.SkinDataFile || file.Type == PckAssetType.TexturePackInfoFile) && file.Size > 0 && treeViewMain.SelectedNode.Nodes.Count == 0) { try @@ -302,7 +302,7 @@ namespace PckStudio private void CheckForPasswordAndRemove() { - if (currentPCK.TryGetFile("0", PckFileType.InfoFile, out PckFileData file)) + if (currentPCK.TryGetFile("0", PckAssetType.InfoFile, out PckAsset file)) { file.RemoveProperties("LOCK"); } @@ -407,14 +407,14 @@ namespace PckStudio private void BuildPckTreeView(TreeNodeCollection root, PckFile pckFile) { - foreach (PckFileData file in pckFile.GetFiles()) + foreach (PckAsset file in pckFile.GetFiles()) { // fix any file paths that may be incorrect //if (file.Filename.StartsWith(parentPath)) // file.Filename = file.Filename.Remove(0, parentPath.Length); TreeNode node = BuildNodeTreeBySeperator(root, file.Filename, '/'); node.Tag = file; - SetNodeIcon(node, file.Filetype); + SetNodeIcon(node, file.Type); }; } @@ -427,7 +427,7 @@ namespace PckStudio treeViewMain.Nodes.Clear(); BuildPckTreeView(treeViewMain.Nodes, currentPCK); - if (isTemplateFile && currentPCK.HasFile("Skins.pck", PckFileType.SkinDataFile)) + if (isTemplateFile && currentPCK.HasFile("Skins.pck", PckAssetType.SkinDataFile)) { TreeNode skinsNode = treeViewMain.Nodes.Find("Skins.pck", false).FirstOrDefault(); TreeNode folderNode = CreateNode("Skins"); @@ -446,9 +446,9 @@ namespace PckStudio } } - private void HandleTextureFile(PckFileData file) + private void HandleTextureFile(PckAsset file) { - _ = file.IsMipmappedFile() && currentPCK.TryGetValue(file.GetNormalPath(), PckFileType.TextureFile, out file); + _ = file.IsMipmappedFile() && currentPCK.TryGetValue(file.GetNormalPath(), PckAssetType.TextureFile, out file); if (file.Size <= 0) { @@ -556,7 +556,7 @@ namespace PckStudio } } - private void HandleGameRuleFile(PckFileData file) + private void HandleGameRuleFile(PckAsset file) { const string use_deflate = "PS3"; const string use_xmem = "Xbox 360"; @@ -587,7 +587,7 @@ namespace PckStudio } } - private void HandleAudioFile(PckFileData file) + private void HandleAudioFile(PckAsset file) { try { @@ -607,20 +607,20 @@ namespace PckStudio } } - private void HandleLocalisationFile(PckFileData file) + private void HandleLocalisationFile(PckAsset file) { using LOCEditor locedit = new LOCEditor(file); wasModified = locedit.ShowDialog(this) == DialogResult.OK; UpdateRichPresence(); } - private void HandleColourFile(PckFileData file) + private void HandleColourFile(PckAsset file) { using COLEditor diag = new COLEditor(file); wasModified = diag.ShowDialog(this) == DialogResult.OK; } - public void HandleSkinFile(PckFileData file) + public void HandleSkinFile(PckAsset file) { if (file.HasProperty("BOX")) { @@ -639,18 +639,18 @@ namespace PckStudio skinViewer.ShowDialog(this); } - public void HandleModelsFile(PckFileData file) + public void HandleModelsFile(PckAsset file) { MessageBox.Show(this, "Models.bin support has not been implemented. You can use the Spark Editor for the time being to edit these files.", "Not implemented yet."); } - public void HandleBehavioursFile(PckFileData file) + public void HandleBehavioursFile(PckAsset file) { using BehaviourEditor edit = new BehaviourEditor(file); wasModified = edit.ShowDialog(this) == DialogResult.OK; } - public void HandleMaterialFile(PckFileData file) + public void HandleMaterialFile(PckAsset file) { using MaterialsEditor edit = new MaterialsEditor(file); wasModified = edit.ShowDialog(this) == DialogResult.OK; @@ -663,7 +663,7 @@ namespace PckStudio buttonEdit.Visible = false; previewPictureBox.Image = Resources.NoImageFound; viewFileInfoToolStripMenuItem.Visible = false; - if (e.Node.TryGetTagData(out PckFileData file)) + if (e.Node.TryGetTagData(out PckAsset file)) { viewFileInfoToolStripMenuItem.Visible = true; if (file.HasProperty("BOX")) @@ -678,11 +678,11 @@ namespace PckStudio buttonEdit.Visible = true; } - switch (file.Filetype) + switch (file.Type) { - case PckFileType.SkinFile: - case PckFileType.CapeFile: - case PckFileType.TextureFile: + case PckAssetType.SkinFile: + case PckAssetType.CapeFile: + case PckAssetType.TextureFile: { Image img = file.GetTexture(); @@ -706,7 +706,7 @@ namespace PckStudio if ((file.Filename.StartsWith(ResourceLocation.GetPathFromCategory(ResourceCategory.ItemAnimation)) || file.Filename.StartsWith(ResourceLocation.GetPathFromCategory(ResourceCategory.BlockAnimation))) && - file.Filetype == PckFileType.TextureFile + file.Type == PckAssetType.TextureFile && !file.IsMipmappedFile()) { buttonEdit.Text = "EDIT TILE ANIMATION"; @@ -715,22 +715,22 @@ namespace PckStudio } break; - case PckFileType.LocalisationFile: + case PckAssetType.LocalisationFile: buttonEdit.Text = "EDIT LOC"; buttonEdit.Visible = true; break; - case PckFileType.AudioFile: + case PckAssetType.AudioFile: buttonEdit.Text = "EDIT MUSIC CUES"; buttonEdit.Visible = true; break; - case PckFileType.ColourTableFile when file.Filename == "colours.col": + case PckAssetType.ColourTableFile when file.Filename == "colours.col": buttonEdit.Text = "EDIT COLORS"; buttonEdit.Visible = true; break; - case PckFileType.BehavioursFile when file.Filename == "behaviours.bin": + case PckAssetType.BehavioursFile when file.Filename == "behaviours.bin": buttonEdit.Text = "EDIT BEHAVIOURS"; buttonEdit.Visible = true; break; @@ -741,7 +741,7 @@ namespace PckStudio } } - private void extractFile(string outFilePath, PckFileData file) + private void extractFile(string outFilePath, PckAsset file) { File.WriteAllBytes(outFilePath, file.Data); if (file.PropertyCount > 0) @@ -754,7 +754,7 @@ namespace PckStudio } } - private void extractFolderFile(string outPath, PckFileData file) + private void extractFolderFile(string outPath, PckAsset file) { TreeNode node = treeViewMain.SelectedNode; @@ -779,7 +779,7 @@ namespace PckStudio { GetAllChildNodes(node.Nodes).ForEach(fileNode => { - if (fileNode.TryGetTagData(out PckFileData file)) + if (fileNode.TryGetTagData(out PckAsset file)) { extractFolderFile(outPath, file); } @@ -788,7 +788,7 @@ namespace PckStudio } else { - foreach (PckFileData _file in currentPCK.GetFiles()) + foreach (PckAsset _file in currentPCK.GetFiles()) { if (_file.Filename.StartsWith(selectedFolder)) { @@ -816,7 +816,7 @@ namespace PckStudio if (dialog.ShowDialog(Handle) == true) extractFolder(dialog.ResultPath); } - else if (node.TryGetTagData(out PckFileData file)) + else if (node.TryGetTagData(out PckAsset file)) { using SaveFileDialog exFile = new SaveFileDialog(); exFile.FileName = Path.GetFileName(file.Filename); @@ -862,16 +862,16 @@ namespace PckStudio private void replaceToolStripMenuItem_Click(object sender, EventArgs e) { - if (treeViewMain.SelectedNode.Tag is PckFileData file) + if (treeViewMain.SelectedNode.Tag is PckAsset file) { using var ofd = new OpenFileDialog(); // Suddenly, and randomly, this started throwing an exception because it wasn't formatted correctly? So now it's formatted correctly and now displays the file type name in the dialog. string extra_extensions = ""; - switch (file.Filetype) + switch (file.Type) { - case PckFileType.TextureFile: + case PckAssetType.TextureFile: if (Path.GetExtension(file.Filename) == ".png") extra_extensions = ";*.tga"; else if (Path.GetExtension(file.Filename) == ".tga") extra_extensions = ";*.png"; break; @@ -879,7 +879,7 @@ namespace PckStudio string fileExt = Path.GetExtension(file.Filename); - ofd.Filter = $"{file.Filetype} (*{fileExt}{extra_extensions})|*{fileExt}{extra_extensions}"; + ofd.Filter = $"{file.Type} (*{fileExt}{extra_extensions})|*{fileExt}{extra_extensions}"; if (ofd.ShowDialog(this) == DialogResult.OK) { string newFileExt = Path.GetExtension(ofd.FileName); @@ -899,12 +899,12 @@ namespace PckStudio /// /// File to remove /// True if the remove should be canceled, otherwise False - private bool BeforeFileRemove(PckFileData file) + private bool BeforeFileRemove(PckAsset file) { string itemPath = ResourceLocation.GetPathFromCategory(ResourceCategory.ItemAnimation); // warn the user about deleting compass.png and clock.png - if (file.Filetype == PckFileType.TextureFile && + if (file.Type == PckAssetType.TextureFile && (file.Filename == itemPath + "/compass.png" || file.Filename == itemPath + "/clock.png")) { if (MessageBox.Show(this, "Are you sure want to delete this file? If \"compass.png\" or \"clock.png\" are missing, your game will crash upon loading this pack.", "Warning", @@ -913,7 +913,7 @@ namespace PckStudio } // remove loc key if its a skin/cape - if (file.Filetype == PckFileType.SkinFile || file.Filetype == PckFileType.CapeFile) + if (file.Type == PckAssetType.SkinFile || file.Type == PckAssetType.CapeFile) { if (TryGetLocFile(out LOCFile locFile)) { @@ -935,7 +935,7 @@ namespace PckStudio string path = node.FullPath; - if (node.TryGetTagData(out PckFileData file)) + if (node.TryGetTagData(out PckAsset file)) { if (!BeforeFileRemove(file) && currentPCK.RemoveFile(file)) { @@ -960,7 +960,7 @@ namespace PckStudio if (node == null) return; string path = node.FullPath; - bool isFile = node.TryGetTagData(out var file); + bool isFile = node.TryGetTagData(out var file); using TextPrompt diag = new TextPrompt(isFile ? file.Filename : Path.GetFileName(node.FullPath)); @@ -968,7 +968,7 @@ namespace PckStudio { if (isFile) { - if (currentPCK.Contains(diag.NewText, file.Filetype)) + if (currentPCK.Contains(diag.NewText, file.Type)) { MessageBox.Show(this, $"{diag.NewText} already exists", "File already exists"); return; @@ -980,7 +980,7 @@ namespace PckStudio node.Text = diag.NewText; foreach (TreeNode childNode in GetAllChildNodes(node.Nodes)) { - if (childNode.Tag is PckFileData folderFile) + if (childNode.Tag is PckAsset folderFile) { if (folderFile.Filename == diag.NewText) continue; folderFile.Filename = childNode.FullPath; @@ -1000,14 +1000,14 @@ namespace PckStudio using AddNewSkin add = new AddNewSkin(locFile); if (add.ShowDialog(this) == DialogResult.OK) { - if (currentPCK.HasFile("Skins.pck", PckFileType.SkinDataFile)) // Prioritize Skins.pck + if (currentPCK.HasFile("Skins.pck", PckAssetType.SkinDataFile)) // Prioritize Skins.pck { TreeNode subPCK = treeViewMain.Nodes.Find("Skins.pck", false).FirstOrDefault(); if (subPCK.Nodes.ContainsKey("Skins")) add.SkinFile.Filename = add.SkinFile.Filename.Insert(0, "Skins/"); add.SkinFile.Filename = add.SkinFile.Filename.Insert(0, "Skins.pck/"); TreeNode newNode = new TreeNode(Path.GetFileName(add.SkinFile.Filename)); newNode.Tag = add.SkinFile; - SetNodeIcon(newNode, PckFileType.SkinFile); + SetNodeIcon(newNode, PckAssetType.SkinFile); subPCK.Nodes.Add(newNode); RebuildSubPCK(newNode.FullPath); } @@ -1018,14 +1018,14 @@ namespace PckStudio } if (add.HasCape) { - if (currentPCK.HasFile("Skins.pck", PckFileType.SkinDataFile)) // Prioritize Skins.pck + if (currentPCK.HasFile("Skins.pck", PckAssetType.SkinDataFile)) // Prioritize Skins.pck { TreeNode subPCK = treeViewMain.Nodes.Find("Skins.pck", false).FirstOrDefault(); if (subPCK.Nodes.ContainsKey("Skins")) add.CapeFile.Filename = add.CapeFile.Filename.Insert(0, "Skins/"); add.CapeFile.Filename = add.CapeFile.Filename.Insert(0, "Skins.pck/"); TreeNode newNode = new TreeNode(Path.GetFileName(add.CapeFile.Filename)); newNode.Tag = add.CapeFile; - SetNodeIcon(newNode, PckFileType.SkinFile); + SetNodeIcon(newNode, PckAssetType.SkinFile); subPCK.Nodes.Add(newNode); RebuildSubPCK(newNode.FullPath); } @@ -1042,20 +1042,20 @@ namespace PckStudio } } - private static PckFileData CreateNewAudioFile(bool isLittle) + private static PckAsset CreateNewAudioFile(bool isLittle) { PckAudioFile audioPck = new PckAudioFile(); audioPck.AddCategory(PckAudioFile.AudioCategory.EAudioType.Overworld); audioPck.AddCategory(PckAudioFile.AudioCategory.EAudioType.Nether); audioPck.AddCategory(PckAudioFile.AudioCategory.EAudioType.End); - PckFileData pckFileData = new PckFileData("audio.pck", PckFileType.AudioFile); + PckAsset pckFileData = new PckAsset("audio.pck", PckAssetType.AudioFile); pckFileData.SetData(new PckAudioFileWriter(audioPck, isLittle ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian)); return pckFileData; } private void audiopckToolStripMenuItem_Click(object sender, EventArgs e) { - if (currentPCK.Contains(PckFileType.AudioFile)) + if (currentPCK.Contains(PckAssetType.AudioFile)) { // the chance of this happening is really really slim but just in case MessageBox.Show(this, "There is already an audio file in this PCK!", "Can't create audio.pck"); @@ -1067,7 +1067,7 @@ namespace PckStudio return; } - PckFileData file = CreateNewAudioFile(LittleEndianCheckBox.Checked); + PckAsset file = CreateNewAudioFile(LittleEndianCheckBox.Checked); AudioEditor diag = new AudioEditor(file, LittleEndianCheckBox.Checked); if (diag.ShowDialog(this) == DialogResult.OK) { @@ -1085,7 +1085,7 @@ namespace PckStudio string animationFilepath = $"{ResourceLocation.GetPathFromCategory(diag.Category)}/{diag.SelectedTile}.png"; - if (currentPCK.Contains(animationFilepath, PckFileType.TextureFile)) + if (currentPCK.Contains(animationFilepath, PckAssetType.TextureFile)) { MessageBox.Show(this, $"{diag.SelectedTile} is already present.", "File already present"); return; @@ -1095,7 +1095,7 @@ namespace PckStudio if (animationEditor.ShowDialog() == DialogResult.OK) { wasModified = true; - PckFileData file = currentPCK.CreateNewFile(animationFilepath, PckFileType.TextureFile); + PckAsset file = currentPCK.CreateNewFile(animationFilepath, PckAssetType.TextureFile); file.SetSerializedData(animationEditor.Result, AnimationSerializer.DefaultSerializer); BuildMainTreeView(); ReloadMetaTreeView(); @@ -1141,9 +1141,9 @@ namespace PckStudio foreach (string node in s) { TreeNode parent = treeViewMain.Nodes.Find(node, true)[0]; - if (parent.TryGetTagData(out PckFileData f) && - (f.Filetype is PckFileType.TexturePackInfoFile || - f.Filetype is PckFileType.SkinDataFile)) + if (parent.TryGetTagData(out PckAsset f) && + (f.Type is PckAssetType.TexturePackInfoFile || + f.Type is PckAssetType.SkinDataFile)) return parent; } @@ -1161,7 +1161,7 @@ namespace PckStudio Debug.WriteLine(parent.Name); if (parent == null) return; - PckFileData parent_file = parent.Tag as PckFileData; + PckAsset parent_file = parent.Tag as PckAsset; PckFile parent_file_pck = new PckFileReader( LittleEndianCheckBox.Checked ? @@ -1169,19 +1169,19 @@ namespace PckStudio OMI.Endianness.BigEndian ).FromStream(new MemoryStream(parent_file.Data)); - if (parent_file.Filetype is PckFileType.TexturePackInfoFile || parent_file.Filetype is PckFileType.SkinDataFile) + if (parent_file.Type is PckAssetType.TexturePackInfoFile || parent_file.Type is PckAssetType.SkinDataFile) { Debug.WriteLine("Rebuilding " + parent_file.Filename); - PckFile newPCKFile = new PckFile(3, parent_file.Filetype is PckFileType.SkinDataFile); + PckFile newPCKFile = new PckFile(3, parent_file.Type is PckAssetType.SkinDataFile); bool hasSkinsFolder = false; // add original pck files to prevent data loss - foreach (PckFileData _fd in parent_file_pck.GetFiles()) + foreach (PckAsset _fd in parent_file_pck.GetFiles()) { - PckFileData new_file = newPCKFile.CreateNewFile(_fd.Filename, _fd.Filetype); + PckAsset new_file = newPCKFile.CreateNewFile(_fd.Filename, _fd.Type); // check for skins folder so files are placed consistently in final pck - if (_fd.Filename.StartsWith("Skins/") && parent_file.Filetype is PckFileType.SkinDataFile) hasSkinsFolder = true; + if (_fd.Filename.StartsWith("Skins/") && parent_file.Type is PckAssetType.SkinDataFile) hasSkinsFolder = true; foreach (var prop in _fd.GetProperties()) new_file.AddProperty(prop); new_file.SetData(_fd.Data); @@ -1189,11 +1189,11 @@ namespace PckStudio foreach (TreeNode node in GetAllChildNodes(parent.Nodes)) { - if (node.Tag is PckFileData node_file) + if (node.Tag is PckAsset node_file) { - PckFileData new_file = newPCKFile.CreateNewFile( + PckAsset new_file = newPCKFile.CreateNewFile( (hasSkinsFolder ? "Skins/" : String.Empty) - + node_file.Filename.Replace(parent_file.Filename + "/", String.Empty), node_file.Filetype); + + node_file.Filename.Replace(parent_file.Filename + "/", String.Empty), node_file.Type); foreach (var prop in node_file.GetProperties()) new_file.AddProperty(prop); new_file.SetData(node_file.Data); @@ -1214,14 +1214,14 @@ namespace PckStudio private void treeViewMain_DoubleClick(object sender, EventArgs e) { - if (treeViewMain.SelectedNode.TryGetTagData(out PckFileData file)) + if (treeViewMain.SelectedNode.TryGetTagData(out PckAsset file)) { if (file.Size <= 0) { Trace.WriteLine($"'{file.Filename}' has no data attached.", category: nameof(treeViewMain_DoubleClick)); return; } - pckFileTypeHandler[file.Filetype]?.Invoke(file); + pckFileTypeHandler[file.Type]?.Invoke(file); } } @@ -1237,13 +1237,13 @@ namespace PckStudio private void treeMeta_DoubleClick(object sender, EventArgs e) { if (treeMeta.SelectedNode is TreeNode subnode && subnode.Tag is KeyValuePair property && - treeViewMain.SelectedNode is TreeNode node && node.Tag is PckFileData file) + treeViewMain.SelectedNode is TreeNode node && node.Tag is PckAsset file) { if (file.HasProperty(property.Key)) { switch (property.Key) { - case "ANIM" when file.Filetype == PckFileType.SkinFile: + case "ANIM" when file.Type == PckAssetType.SkinFile: try { using ANIMEditor diag = new ANIMEditor(property.Value); @@ -1264,7 +1264,7 @@ namespace PckStudio } break; - case "BOX" when file.Filetype == PckFileType.SkinFile: + case "BOX" when file.Type == PckAssetType.SkinFile: try { using BoxEditor diag = new BoxEditor(property.Value, IsSubPCKNode(treeViewMain.SelectedNode.FullPath)); @@ -1307,7 +1307,7 @@ namespace PckStudio private void cloneFileToolStripMenuItem_Click(object sender, EventArgs e) { TreeNode node = treeViewMain.SelectedNode; - if (node == null || !node.IsTagOfType()) + if (node == null || !node.IsTagOfType()) return; string path = node.FullPath; @@ -1317,11 +1317,11 @@ namespace PckStudio if (diag.ShowDialog(this) == DialogResult.OK) { - if (node.Tag is PckFileData file) + if (node.Tag is PckAsset file) { TreeNode newNode = new TreeNode(); newNode.Text = Path.GetFileName(diag.NewText); - var newFile = new PckFileData(diag.NewText, file.Filetype); + var newFile = new PckAsset(diag.NewText, file.Type); foreach (var property in file.GetProperties()) { newFile.AddProperty(property); @@ -1356,7 +1356,7 @@ namespace PckStudio private void deleteEntryToolStripMenuItem_Click(object sender, EventArgs e) { if (treeMeta.SelectedNode is TreeNode t && t.Tag is KeyValuePair property && - treeViewMain.SelectedNode is TreeNode main && main.Tag is PckFileData file && + treeViewMain.SelectedNode is TreeNode main && main.Tag is PckAsset file && file.RemoveProperty(property)) { treeMeta.SelectedNode.Remove(); @@ -1369,7 +1369,7 @@ namespace PckStudio { treeMeta.Nodes.Clear(); if (treeViewMain.SelectedNode is TreeNode node && - node.Tag is PckFileData file) + node.Tag is PckAsset file) { foreach (var property in file.GetProperties()) { @@ -1381,7 +1381,7 @@ namespace PckStudio private void addEntryToolStripMenuItem_Click_1(object sender, EventArgs e) { if (treeViewMain.SelectedNode is TreeNode t && - t.Tag is PckFileData file) + t.Tag is PckAsset file) { using AddPropertyPrompt addProperty = new AddPropertyPrompt(); if (addProperty.ShowDialog(this) == DialogResult.OK) @@ -1405,7 +1405,7 @@ namespace PckStudio if (e.Button != MouseButtons.Left || e.Item is not TreeNode node) return; - if ((node.TryGetTagData(out PckFileData file) && currentPCK.Contains(file.Filename, file.Filetype)) || node.Parent is TreeNode) + if ((node.TryGetTagData(out PckAsset file) && currentPCK.Contains(file.Filename, file.Type)) || node.Parent is TreeNode) { treeViewMain.DoDragDrop(node, DragDropEffects.Move); } @@ -1415,7 +1415,7 @@ namespace PckStudio { Point dragLocation = new Point(e.X, e.Y); TreeNode node = treeViewMain.GetNodeAt(treeViewMain.PointToClient(dragLocation)); - treeViewMain.SelectedNode = node.IsTagOfType() ? null : node; + treeViewMain.SelectedNode = node.IsTagOfType() ? null : node; } private void treeViewMain_DragEnter(object sender, DragEventArgs e) @@ -1448,7 +1448,7 @@ namespace PckStudio if (targetNode is null) return; - bool isTargetPckFile = targetNode.IsTagOfType(); + bool isTargetPckFile = targetNode.IsTagOfType(); if (e.Data.GetData(dataFormat) is not TreeNode draggedNode) { @@ -1483,7 +1483,7 @@ namespace PckStudio Debug.WriteLine($"Target drop location is {(isTargetPckFile ? "file" : "folder")}."); // Retrieve the node that was dragged. - if (draggedNode.TryGetTagData(out PckFileData draggedFile) && + if (draggedNode.TryGetTagData(out PckAsset draggedFile) && targetNode.FullPath != draggedFile.Filename) { Debug.WriteLine(draggedFile.Filename + " was droped onto " + targetNode.FullPath); @@ -1498,7 +1498,7 @@ namespace PckStudio } else { - List pckFiles = GetEndingNodes(draggedNode.Nodes).Where(t => t.IsTagOfType()).Select(t => t.Tag as PckFileData).ToList(); + List pckFiles = GetEndingNodes(draggedNode.Nodes).Where(t => t.IsTagOfType()).Select(t => t.Tag as PckAsset).ToList(); string oldPath = draggedNode.FullPath; string newPath = Path.Combine(isTargetPckFile ? Path.GetDirectoryName(targetNode.FullPath) : targetNode.FullPath, draggedNode.Text).Replace('\\', '/'); foreach (var pckFile in pckFiles) @@ -1554,15 +1554,15 @@ namespace PckStudio { var pack = new PckFile(3); - PckFileData zeroFile = pack.CreateNewFile("0", PckFileType.InfoFile); + PckAsset zeroFile = pack.CreateNewFile("0", PckAssetType.InfoFile); zeroFile.AddProperty("PACKID", packId); zeroFile.AddProperty("PACKVERSION", packVersion); var locFile = new LOCFile(); locFile.InitializeDefault(packName); - pack.CreateNewFile("localisation.loc", PckFileType.LocalisationFile, new LOCFileWriter(locFile, 2)); + pack.CreateNewFile("localisation.loc", PckAssetType.LocalisationFile, new LOCFileWriter(locFile, 2)); - pack.CreateNewFileIf(createSkinsPCK, "Skins.pck", PckFileType.SkinDataFile, new PckFileWriter(new PckFile(3, true), + pack.CreateNewFileIf(createSkinsPCK, "Skins.pck", PckAssetType.SkinDataFile, new PckFileWriter(new PckFile(3, true), LittleEndianCheckBox.Checked ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian)); @@ -1576,13 +1576,13 @@ namespace PckStudio PckFile infoPCK = new PckFile(3); - PckFileData icon = infoPCK.CreateNewFile("icon.png", PckFileType.TextureFile); + PckAsset icon = infoPCK.CreateNewFile("icon.png", PckAssetType.TextureFile); icon.SetTexture(Resources.TexturePackIcon); - PckFileData comparison = infoPCK.CreateNewFile("comparison.png", PckFileType.TextureFile); + PckAsset comparison = infoPCK.CreateNewFile("comparison.png", PckAssetType.TextureFile); comparison.SetTexture(Resources.Comparison); - PckFileData texturepackInfo = pack.CreateNewFile($"{res}/{res}Info.pck", PckFileType.TexturePackInfoFile); + PckAsset texturepackInfo = pack.CreateNewFile($"{res}/{res}Info.pck", PckAssetType.TexturePackInfoFile); texturepackInfo.AddProperty("PACKID", "0"); texturepackInfo.AddProperty("DATAPATH", $"{res}Data.pck"); @@ -1594,7 +1594,7 @@ namespace PckStudio private PckFile InitializeMashUpPack(int packId, int packVersion, string packName, string res) { PckFile pack = InitializeTexturePack(packId, packVersion, packName, res, true); - PckFileData gameRuleFile = pack.CreateNewFile("GameRules.grf", PckFileType.GameRulesFile); + PckAsset gameRuleFile = pack.CreateNewFile("GameRules.grf", PckAssetType.GameRulesFile); GameRuleFile grfFile = new GameRuleFile(); grfFile.AddRule("MapOptions", new KeyValuePair("seed", "0"), @@ -1733,7 +1733,7 @@ namespace PckStudio if (contents.ShowDialog(this) == DialogResult.OK && Directory.Exists(contents.SelectedPath)) { string filepath = treeViewMain.SelectedNode?.FullPath ?? ""; - if (treeViewMain.SelectedNode is not null && treeViewMain.SelectedNode.IsTagOfType()) + if (treeViewMain.SelectedNode is not null && treeViewMain.SelectedNode.IsTagOfType()) filepath = treeViewMain.SelectedNode.Parent?.FullPath ?? ""; foreach (var fullfilename in Directory.GetFiles(contents.SelectedPath, "dlc*.png")) @@ -1743,12 +1743,12 @@ namespace PckStudio if (!filename.StartsWith("dlcskin") && !filename.StartsWith("dlccape")) continue; // sets file type based on wether its a cape or skin - PckFileType pckfiletype = filename.StartsWith("dlccape", StringComparison.OrdinalIgnoreCase) - ? PckFileType.CapeFile - : PckFileType.SkinFile; + PckAssetType pckfiletype = filename.StartsWith("dlccape", StringComparison.OrdinalIgnoreCase) + ? PckAssetType.CapeFile + : PckAssetType.SkinFile; string pckfilepath = Path.Combine(filepath, filename); - PckFileData newFile = currentPCK.CreateNewFile(pckfilepath, pckfiletype); + PckAsset newFile = currentPCK.CreateNewFile(pckfilepath, pckfiletype); byte[] filedata = File.ReadAllBytes(fullfilename); newFile.SetData(filedata); @@ -1774,8 +1774,8 @@ namespace PckStudio private bool TryGetLocFile(out LOCFile locFile) { - if (!currentPCK.TryGetFile("localisation.loc", PckFileType.LocalisationFile, out PckFileData locdata) && - !currentPCK.TryGetFile("languages.loc", PckFileType.LocalisationFile, out locdata)) + if (!currentPCK.TryGetFile("localisation.loc", PckAssetType.LocalisationFile, out PckAsset locdata) && + !currentPCK.TryGetFile("languages.loc", PckAssetType.LocalisationFile, out locdata)) { locFile = null; return false; @@ -1800,8 +1800,8 @@ namespace PckStudio private bool TrySetLocFile(in LOCFile locFile) { - if (!currentPCK.TryGetFile("localisation.loc", PckFileType.LocalisationFile, out PckFileData locdata) && - !currentPCK.TryGetFile("languages.loc", PckFileType.LocalisationFile, out locdata)) + if (!currentPCK.TryGetFile("localisation.loc", PckAssetType.LocalisationFile, out PckAsset locdata) && + !currentPCK.TryGetFile("languages.loc", PckAssetType.LocalisationFile, out locdata)) { return false; } @@ -1831,7 +1831,7 @@ namespace PckStudio { string skinNameImport = Path.GetFileName(contents.FileName); byte[] data = File.ReadAllBytes(contents.FileName); - PckFileData mfNew = currentPCK.CreateNewFile(skinNameImport, PckFileType.SkinFile); + PckAsset mfNew = currentPCK.CreateNewFile(skinNameImport, PckAssetType.SkinFile); mfNew.SetData(data); string propertyFile = Path.GetFileNameWithoutExtension(contents.FileName) + ".txt"; if (File.Exists(propertyFile)) @@ -1889,9 +1889,9 @@ namespace PckStudio TreeNodeCollection nodeCollection = treeViewMain.Nodes; if (treeViewMain.SelectedNode is TreeNode node) { - if (node.Tag is PckFileData fd && - (fd.Filetype != PckFileType.TexturePackInfoFile && - fd.Filetype != PckFileType.SkinDataFile)) + if (node.Tag is PckAsset fd && + (fd.Type != PckAssetType.TexturePackInfoFile && + fd.Type != PckAssetType.SkinDataFile)) { if (node.Parent is TreeNode parentNode) { @@ -2026,66 +2026,66 @@ namespace PckStudio SaveTemplate(); } - private void SetNodeIcon(TreeNode node, PckFileType type) + private void SetNodeIcon(TreeNode node, PckAssetType type) { switch (type) { - case PckFileType.AudioFile: + case PckAssetType.AudioFile: node.ImageIndex = 1; node.SelectedImageIndex = 1; break; - case PckFileType.LocalisationFile: + case PckAssetType.LocalisationFile: node.ImageIndex = 3; node.SelectedImageIndex = 3; break; - case PckFileType.TexturePackInfoFile: + case PckAssetType.TexturePackInfoFile: goto default; node.ImageIndex = 4; node.SelectedImageIndex = 4; break; - case PckFileType.ColourTableFile: + case PckAssetType.ColourTableFile: node.ImageIndex = 6; node.SelectedImageIndex = 6; break; - case PckFileType.ModelsFile: + case PckAssetType.ModelsFile: goto default; node.ImageIndex = 8; node.SelectedImageIndex = 8; break; - case PckFileType.SkinDataFile: + case PckAssetType.SkinDataFile: goto default; node.ImageIndex = 7; node.SelectedImageIndex = 7; break; - case PckFileType.GameRulesFile: + case PckAssetType.GameRulesFile: node.ImageIndex = 9; node.SelectedImageIndex = 9; break; - case PckFileType.GameRulesHeader: + case PckAssetType.GameRulesHeader: node.ImageIndex = 10; node.SelectedImageIndex = 10; break; - case PckFileType.InfoFile: + case PckAssetType.InfoFile: node.ImageIndex = 11; node.SelectedImageIndex = 11; break; - case PckFileType.SkinFile: + case PckAssetType.SkinFile: node.ImageIndex = 12; node.SelectedImageIndex = 12; break; - case PckFileType.CapeFile: + case PckAssetType.CapeFile: node.ImageIndex = 13; node.SelectedImageIndex = 13; break; - case PckFileType.TextureFile: + case PckAssetType.TextureFile: node.ImageIndex = 14; node.SelectedImageIndex = 14; break; - case PckFileType.BehavioursFile: + case PckAssetType.BehavioursFile: node.ImageIndex = 15; node.SelectedImageIndex = 15; break; - case PckFileType.MaterialFile: + case PckAssetType.MaterialFile: node.ImageIndex = 16; node.SelectedImageIndex = 16; break; @@ -2096,12 +2096,12 @@ namespace PckStudio } } - private void SetFileType(PckFileType type) + private void SetFileType(PckAssetType type) { - if (treeViewMain.SelectedNode.TryGetTagData(out PckFileData file)) + if (treeViewMain.SelectedNode.TryGetTagData(out PckAsset file)) { - Debug.WriteLine($"Setting {file.Filetype} to {type}"); - file.Filetype = type; + Debug.WriteLine($"Setting {file.Type} to {type}"); + file.Type = type; SetNodeIcon(treeViewMain.SelectedNode, type); RebuildSubPCK(treeViewMain.SelectedNode.FullPath); } @@ -2118,12 +2118,12 @@ namespace PckStudio renamePrompt.LabelText = "Path"; if (renamePrompt.ShowDialog(this) == DialogResult.OK && !string.IsNullOrEmpty(renamePrompt.NewText)) { - if (currentPCK.Contains(renamePrompt.NewText, PckFileType.TextureFile)) + if (currentPCK.Contains(renamePrompt.NewText, PckAssetType.TextureFile)) { MessageBox.Show(this, $"'{renamePrompt.NewText}' already exists.", "Import failed", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } - PckFileData file = currentPCK.CreateNewFile(renamePrompt.NewText, PckFileType.TextureFile, () => File.ReadAllBytes(fileDialog.FileName)); + PckAsset file = currentPCK.CreateNewFile(renamePrompt.NewText, PckAssetType.TextureFile, () => File.ReadAllBytes(fileDialog.FileName)); BuildMainTreeView(); wasModified = true; } @@ -2132,11 +2132,11 @@ namespace PckStudio private void viewFileInfoToolStripMenuItem_Click(object sender, EventArgs e) { - if (treeViewMain.SelectedNode.Tag is PckFileData file) + if (treeViewMain.SelectedNode.Tag is PckAsset file) { MessageBox.Show(this, "File path: " + file.Filename + - "\nAssigned File type: " + (int)file.Filetype + " (" + file.Filetype + ")" + + "\nAssigned File type: " + (int)file.Type + " (" + file.Type + ")" + "\nFile size: " + file.Size + "\nProperties count: " + file.PropertyCount , Path.GetFileName(file.Filename) + " file info"); @@ -2145,7 +2145,7 @@ namespace PckStudio private void generateMipMapTextureToolStripMenuItem_Click(object sender, EventArgs e) { - if (treeViewMain.SelectedNode.Tag is PckFileData file && file.Filetype == PckFileType.TextureFile) + if (treeViewMain.SelectedNode.Tag is PckAsset file && file.Type == PckAssetType.TextureFile) { string textureDirectory = Path.GetDirectoryName(file.Filename); string textureName = Path.GetFileNameWithoutExtension(file.Filename); @@ -2168,9 +2168,9 @@ namespace PckStudio { string mippedPath = $"{textureDirectory}/{textureName}MipMapLevel{i}{textureExtension}"; Debug.WriteLine(mippedPath); - if (currentPCK.HasFile(mippedPath, PckFileType.TextureFile)) - currentPCK.RemoveFile(currentPCK.GetFile(mippedPath, PckFileType.TextureFile)); - PckFileData MipMappedFile = new PckFileData(mippedPath, PckFileType.TextureFile); + if (currentPCK.HasFile(mippedPath, PckAssetType.TextureFile)) + currentPCK.RemoveFile(currentPCK.GetFile(mippedPath, PckAssetType.TextureFile)); + PckAsset MipMappedFile = new PckAsset(mippedPath, PckAssetType.TextureFile); Image originalTexture = file.GetTexture(); @@ -2198,12 +2198,12 @@ namespace PckStudio private void colourscolToolStripMenuItem_Click(object sender, EventArgs e) { - if (currentPCK.TryGetFile("colours.col", PckFileType.ColourTableFile, out _)) + if (currentPCK.TryGetFile("colours.col", PckAssetType.ColourTableFile, out _)) { MessageBox.Show(this, "A color table file already exists in this PCK and a new one cannot be created.", "Operation aborted"); return; } - PckFileData newColorFile = currentPCK.CreateNewFile("colours.col", PckFileType.ColourTableFile); + PckAsset newColorFile = currentPCK.CreateNewFile("colours.col", PckAssetType.ColourTableFile); newColorFile.SetData(Resources.tu69colours); BuildMainTreeView(); } @@ -2215,8 +2215,8 @@ namespace PckStudio private void as3DSTextureFileToolStripMenuItem_Click(object sender, EventArgs e) { - if (treeViewMain.SelectedNode.TryGetTagData(out PckFileData file) && - file.Filetype == PckFileType.SkinFile) + if (treeViewMain.SelectedNode.TryGetTagData(out PckAsset file) && + file.Type == PckAssetType.SkinFile) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "3DS Texture|*.3dst"; @@ -2232,7 +2232,7 @@ namespace PckStudio private void addMultipleEntriesToolStripMenuItem1_Click(object sender, EventArgs e) { - if (treeViewMain.SelectedNode.TryGetTagData(out PckFileData file)) + if (treeViewMain.SelectedNode.TryGetTagData(out PckAsset file)) { using (var input = new MultiTextPrompt()) { @@ -2255,8 +2255,8 @@ namespace PckStudio private void correctSkinDecimalsToolStripMenuItem_Click(object sender, EventArgs e) { - if (treeViewMain.SelectedNode.TryGetTagData(out PckFileData file) && - file.Filetype == PckFileType.SkinFile) + if (treeViewMain.SelectedNode.TryGetTagData(out PckAsset file) && + file.Type == PckAssetType.SkinFile) { foreach (KeyValuePair p in file.GetProperties().ToList()) { @@ -2271,13 +2271,13 @@ namespace PckStudio private void CreateSkinsPCKToolStripMenuItem1_Click(object sender, EventArgs e) { - if (currentPCK.TryGetFile("Skins.pck", PckFileType.SkinDataFile, out _)) + if (currentPCK.TryGetFile("Skins.pck", PckAssetType.SkinDataFile, out _)) { MessageBox.Show(this, "A Skins.pck file already exists in this PCK and a new one cannot be created.", "Operation aborted"); return; } - currentPCK.CreateNewFile("Skins.pck", PckFileType.SkinDataFile, new PckFileWriter(new PckFile(3, true), + currentPCK.CreateNewFile("Skins.pck", PckAssetType.SkinDataFile, new PckFileWriter(new PckFile(3, true), LittleEndianCheckBox.Checked ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian)); BuildMainTreeView(); @@ -2291,7 +2291,7 @@ namespace PckStudio private void editAllEntriesToolStripMenuItem_Click(object sender, EventArgs e) { - if (treeViewMain.SelectedNode.TryGetTagData(out PckFileData file)) + if (treeViewMain.SelectedNode.TryGetTagData(out PckAsset file)) { string[] props = file.GetProperties().Select(p => p.Key + " " + p.Value).ToArray(); using (var input = new MultiTextPrompt(props)) @@ -2332,7 +2332,7 @@ namespace PckStudio MessageBox.Show(this, $"'{diag.Filepath}' of type {diag.Filetype} already exists.", "Import failed", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } - PckFileData file = currentPCK.CreateNewFile(diag.Filepath, diag.Filetype, () => File.ReadAllBytes(ofd.FileName)); + PckAsset file = currentPCK.CreateNewFile(diag.Filepath, diag.Filetype, () => File.ReadAllBytes(ofd.FileName)); RebuildSubPCK(treeViewMain.SelectedNode.FullPath); @@ -2345,24 +2345,24 @@ namespace PckStudio private void behavioursbinToolStripMenuItem_Click(object sender, EventArgs e) { - if (currentPCK.TryGetFile("behaviours.bin", PckFileType.BehavioursFile, out _)) + if (currentPCK.TryGetFile("behaviours.bin", PckAssetType.BehavioursFile, out _)) { MessageBox.Show(this, "A behaviours file already exists in this PCK and a new one cannot be created.", "Operation aborted"); return; } - currentPCK.CreateNewFile("behaviours.bin", PckFileType.BehavioursFile, BehaviourResources.BehaviourFileInitializer); + currentPCK.CreateNewFile("behaviours.bin", PckAssetType.BehavioursFile, BehaviourResources.BehaviourFileInitializer); BuildMainTreeView(); } private void entityMaterialsbinToolStripMenuItem_Click(object sender, EventArgs e) { - if (currentPCK.TryGetFile("entityMaterials.bin", PckFileType.MaterialFile, out _)) + if (currentPCK.TryGetFile("entityMaterials.bin", PckAssetType.MaterialFile, out _)) { MessageBox.Show(this, "A behaviours file already exists in this PCK and a new one cannot be created.", "Operation aborted"); return; } - currentPCK.CreateNewFile("entityMaterials.bin", PckFileType.MaterialFile, MaterialResources.MaterialsFileInitializer); + currentPCK.CreateNewFile("entityMaterials.bin", PckAssetType.MaterialFile, MaterialResources.MaterialsFileInitializer); BuildMainTreeView(); } @@ -2427,7 +2427,7 @@ namespace PckStudio private void addBOXEntryToolStripMenuItem1_Click(object sender, EventArgs e) { - if (treeViewMain.SelectedNode is TreeNode t && t.Tag is PckFileData file) + if (treeViewMain.SelectedNode is TreeNode t && t.Tag is PckAsset file) { using BoxEditor diag = new BoxEditor(SkinBOX.Empty, IsSubPCKNode(treeViewMain.SelectedNode.FullPath)); if (diag.ShowDialog(this) == DialogResult.OK) @@ -2443,7 +2443,7 @@ namespace PckStudio private void addANIMEntryToolStripMenuItem1_Click(object sender, EventArgs e) { - if (treeViewMain.SelectedNode.TryGetTagData(out PckFileData file)) + if (treeViewMain.SelectedNode.TryGetTagData(out PckAsset file)) { using ANIMEditor diag = new ANIMEditor(SkinANIM.Empty); if (diag.ShowDialog(this) == DialogResult.OK) @@ -2470,20 +2470,20 @@ namespace PckStudio [Obsolete] // the move functions are to eventually be removed in favor of drag and drop private void moveFile(int amount) { - if (treeViewMain.SelectedNode is not TreeNode t || t.Tag is not PckFileData) + if (treeViewMain.SelectedNode is not TreeNode t || t.Tag is not PckAsset) return; - PckFileData file = t.Tag as PckFileData; + PckAsset file = t.Tag as PckAsset; string path = t.FullPath; // skin and cape files only - if (!(file.Filetype == PckFileType.SkinFile || file.Filetype == PckFileType.CapeFile)) return; + if (!(file.Type == PckAssetType.SkinFile || file.Type == PckAssetType.CapeFile)) return; PckFile pck = currentPCK; bool IsSubPCK = IsSubPCKNode(path); if (IsSubPCK) { - using (var stream = new MemoryStream((GetSubPCK(path).Tag as PckFileData).Data)) + using (var stream = new MemoryStream((GetSubPCK(path).Tag as PckAsset).Data)) { var reader = new PckFileReader(LittleEndianCheckBox.Checked ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian); pck = reader.FromStream(stream); @@ -2504,7 +2504,7 @@ namespace PckStudio { var writer = new PckFileWriter(pck, LittleEndianCheckBox.Checked ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian); writer.WriteToStream(stream); - (GetSubPCK(path).Tag as PckFileData).SetData(stream.ToArray()); + (GetSubPCK(path).Tag as PckAsset).SetData(stream.ToArray()); } } BuildMainTreeView(); @@ -2529,14 +2529,14 @@ namespace PckStudio { try { - if (treeViewMain.SelectedNode.Tag is PckFileData file && (file.Filetype is PckFileType.AudioFile || file.Filetype is PckFileType.SkinDataFile || file.Filetype is PckFileType.TexturePackInfoFile)) + if (treeViewMain.SelectedNode.Tag is PckAsset file && (file.Type is PckAssetType.AudioFile || file.Type is PckAssetType.SkinDataFile || file.Type is PckAssetType.TexturePackInfoFile)) { - IDataFormatReader reader = file.Filetype is PckFileType.AudioFile + IDataFormatReader reader = file.Type is PckAssetType.AudioFile ? new PckAudioFileReader(endianness == OMI.Endianness.BigEndian ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian) : new PckFileReader(endianness == OMI.Endianness.BigEndian ? OMI.Endianness.LittleEndian : OMI.Endianness.BigEndian); object pck = reader.FromStream(new MemoryStream(file.Data)); - IDataFormatWriter writer = file.Filetype is PckFileType.AudioFile + IDataFormatWriter writer = file.Type is PckAssetType.AudioFile ? new PckAudioFileWriter((PckAudioFile)pck, endianness) : new PckFileWriter((PckFile)pck, endianness); file.SetData(writer); @@ -2561,7 +2561,7 @@ namespace PckStudio private void SetModelVersion(int version) { - if (treeViewMain.SelectedNode.Tag is PckFileData file && file.Filetype is PckFileType.ModelsFile) + if (treeViewMain.SelectedNode.Tag is PckAsset file && file.Type is PckAssetType.ModelsFile) { try { diff --git a/Vendor/OMI-Lib b/Vendor/OMI-Lib index a3505bbf..06839b53 160000 --- a/Vendor/OMI-Lib +++ b/Vendor/OMI-Lib @@ -1 +1 @@ -Subproject commit a3505bbf31e9bc6f3380b7d8df3bc7741d0355f0 +Subproject commit 06839b53671c1280087633cdcf9eacab8aed46d6