private void OnTextureLoad(object sender, TextureTranslationEventArgs e) { string textureName = e.Name; if (lastFoundTexture != textureName) { lastFoundTexture = textureName; Logger.WriteLine(ResourceType.Textures, LogLevel.Minor, $"FindTexture::{textureName}"); } var replacement = Memory.GetTexture(textureName); TextureResource resource = null; switch (replacement.TextureType) { case TextureType.PNG: resource = new TextureResource(1, 1, TextureFormat.ARGB32, File.ReadAllBytes(replacement.FilePath)); break; case TextureType.TEX: resource = TexUtils.ReadTexture(File.ReadAllBytes(replacement.FilePath), textureName); break; case TextureType.None: default: if (e.OriginalTexture != null) Logger.DumpTexture(DumpType.TexSprites, e, true, CurrentLevel); return; } if (lastLoadedTexture != textureName) Logger.WriteLine(ResourceType.Textures, $"Texture::{textureName}"); lastLoadedTexture = textureName; e.Data = resource; }
static void Main(string[] args) { //This is needed to conform to a single standard for decimal numbers CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; try { if (args.Length > 0) { var settings = Arguments.GetArguments(args); Console.WriteLine($"\nInput: {settings.InputPath}\nOutput: {settings.OutPath}"); switch (settings.Mode) { case Mode.Convert: if (!string.IsNullOrEmpty(settings.NsbmdPath)) { TexUtils.Replace(settings.NsbmdPath, settings.OutPath, settings.InputPath); } else { TexUtils.Create(settings.OutPath, settings.InputPath); } Console.WriteLine("Success!"); break; case Mode.Extract: throw new NotImplementedException(); } return; } } catch (Exception e) { Console.WriteLine("\nError: " + e.Message); Console.WriteLine(); } DisplayHelp(); }