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;
        }
Esempio n. 2
0
        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();
        }