diff --git a/PCK-Studio/Extensions/PckFileExtensions.cs b/PCK-Studio/Extensions/PckFileExtensions.cs new file mode 100644 index 00000000..ea9ab279 --- /dev/null +++ b/PCK-Studio/Extensions/PckFileExtensions.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using OMI.Formats.Pck; + +namespace PckStudio.Extensions +{ + internal static class PckFileExtensions + { + private const string MipMap = "MipMapLevel"; + + internal static bool IsMipmappedFile(this PckFile.FileData file) + { + // We only want to test the file name itself. ex: "terrainMipMapLevel2" + string name = Path.GetFileNameWithoutExtension(file.Filename); + + // check if last character is a digit (0-9). If not return false + if (!char.IsDigit(name[name.Length - 1])) + return false; + + // If string does not end with MipMapLevel, then it's not MipMapped + if (!name.Remove(name.Length - 1, 1).EndsWith(MipMap)) + return false; + return true; + } + + internal static string GetNormalPath(this PckFile.FileData file) + { + if (!file.IsMipmappedFile()) + return file.Filename; + string ext = Path.GetExtension(file.Filename); + return file.Filename.Remove(file.Filename.Length - (MipMap.Length + 1) - ext.Length) + ext; + } + + } +} diff --git a/PCK-Studio/MainForm.cs b/PCK-Studio/MainForm.cs index 648f9af2..956f1e1a 100644 --- a/PCK-Studio/MainForm.cs +++ b/PCK-Studio/MainForm.cs @@ -17,7 +17,6 @@ using OMI.Workers.Language; using PckStudio.Properties; using PckStudio.Classes.FileTypes; -using PckStudio.Classes.Utils; using PckStudio.Classes.Utils.ARC; using PckStudio.Forms; using PckStudio.Forms.Utilities; @@ -29,6 +28,7 @@ using PckStudio.Classes.IO.PCK; using PckStudio.Classes.IO._3DST; using PckStudio.Internal; using PckStudio.Features; +using PckStudio.Extensions; using PckStudio.Popups; namespace PckStudio @@ -344,29 +344,13 @@ namespace PckStudio } } - bool IsFilePathMipMapped(string filepath) - { - // We only want to test the file name itself. ex: "terrainMipMapLevel2" - string name = Path.GetFileNameWithoutExtension(filepath); - // check if last character is a digit (0-9). If not return false - if (!char.IsDigit(name[name.Length - 1])) return false; - // If string does not end with MipMapLevel, then it's not MipMapped - if (!name.Remove(name.Length - 1, 1).EndsWith("MipMapLevel")) return false; - return true; - } - private void HandleTextureFile(PckFile.FileData file) { if (!(file.Filename.StartsWith("res/textures/blocks/") || file.Filename.StartsWith("res/textures/items/"))) return; - if (IsFilePathMipMapped(file.Filename) && - currentPCK.Files.Find(pckfile => - // todo write cleaner ? - pckfile.Filename.Equals( - file.Filename.Remove(file.Filename.Length - 12 - Path.GetExtension(file.Filename).Length) - + Path.GetExtension(file.Filename))) - is PckFile.FileData originalAnimationFile) + if (file.IsMipmappedFile() && + currentPCK.Files.Find(pckfile => pckfile.Filename.Equals(file.GetNormalPath())) is PckFile.FileData originalAnimationFile) { file = originalAnimationFile; } @@ -531,7 +515,7 @@ namespace PckStudio if ((file.Filename.StartsWith("res/textures/blocks/") || file.Filename.StartsWith("res/textures/items/")) && file.Filetype == PckFile.FileData.FileType.TextureFile - && !IsFilePathMipMapped(file.Filename)) + && !file.IsMipmappedFile()) { buttonEdit.Text = "EDIT TILE ANIMATION"; buttonEdit.Visible = true; @@ -1959,7 +1943,8 @@ namespace PckStudio string textureDirectory = Path.GetDirectoryName(file.Filename); string textureName = Path.GetFileNameWithoutExtension(file.Filename); - if (IsFilePathMipMapped(textureName)) return; + if (file.IsMipmappedFile()) + return; string textureExtension = Path.GetExtension(file.Filename); diff --git a/PCK-Studio/PckStudio.csproj b/PCK-Studio/PckStudio.csproj index f44013f1..2cd89afd 100644 --- a/PCK-Studio/PckStudio.csproj +++ b/PCK-Studio/PckStudio.csproj @@ -176,6 +176,7 @@ +