Exemple #1
0
    public void DecodeNative()
    {
        for (int i = 0; i < 100; i++)
        {
            var outputFileName = Path.Combine(_outputDirectory, $"Native.{i}.bmp");

            var image = new IndexedImage(_arranger);
            image.ExportImage(outputFileName, new ImageSharpFileAdapter());
        }
    }
Exemple #2
0
    public void ScatteredArranger_Reversibility_CanReverse(ScatteredArranger arranger, string imageFileName)
    {
        var exportedImageFileName = $"test.png";

        var indexedImage = new IndexedImage(arranger);

        indexedImage.ImportImage(imageFileName, new ImageSharpFileAdapter(), ColorMatchStrategy.Exact);
        indexedImage.ExportImage(exportedImageFileName, new ImageSharpFileAdapter());

        using var expected = Image <Rgba32> .Load <Rgba32>(imageFileName);

        using var actual = Image <Rgba32> .Load <Rgba32>(exportedImageFileName);

        ImageRgba32Assert.AreEqual(expected, actual);
    }
Exemple #3
0
    public static bool ExportArranger(ProjectTree projectTree, string arrangerKey, string projectRoot, bool forceOverwrite)
    {
        if (!projectTree.TryGetNode(arrangerKey, out var node))
        {
            Console.WriteLine($"Exporting '{arrangerKey}'...Resource key not found in project");
            return(false);
        }

        var relativeFile   = Path.Combine(projectTree.CreatePaths(node).ToArray());
        var exportFileName = Path.Combine(projectRoot, $"{relativeFile}.png");

        var arranger = node.Item as ScatteredArranger;

        Console.Write($"Exporting '{arrangerKey}' to '{exportFileName}'...");

        if (!Directory.Exists(Path.GetDirectoryName(exportFileName)))
        {
            Directory.CreateDirectory(Path.GetDirectoryName(exportFileName));
        }

        if (File.Exists(exportFileName) && forceOverwrite == false)
        {
            Console.WriteLine($"File already exists and was skipped to not overwrite it");
            return(false);
        }

        if (arranger.ColorType == PixelColorType.Indexed)
        {
            var image = new IndexedImage(arranger);
            image.ExportImage(exportFileName, new ImageSharpFileAdapter());
        }
        else if (arranger.ColorType == PixelColorType.Direct)
        {
            var image = new DirectImage(arranger);
            image.ExportImage(exportFileName, new ImageSharpFileAdapter());
        }

        Console.WriteLine("Completed successfully");
        return(true);
    }
Exemple #4
0
    public static async Task <int> Main(string[] args)
    {
        if (args.Length != 3)
        {
            var executableName = Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().Location);
            Console.WriteLine($"{executableName} <Import|Export> <Directory> <ff5.smc>");
            return(-1);
        }

        var configContents = await File.ReadAllTextAsync("config.json");

        var jsonOptions = new JsonSerializerOptions()
        {
            PropertyNameCaseInsensitive = true
        };

        jsonOptions.Converters.Add(new HexadecimalJsonConverter());
        var config = JsonSerializer.Deserialize <Config>(configContents, jsonOptions);

        AppAction action;

        if (string.Equals(args[0], "Import", StringComparison.OrdinalIgnoreCase))
        {
            action = AppAction.Import;
        }
        else if (string.Equals(args[0], "Export", StringComparison.OrdinalIgnoreCase))
        {
            action = AppAction.Export;
        }
        else
        {
            Console.WriteLine($"Unrecognized action {args[0]}");
            return(-2);
        }

        if (!Directory.Exists(args[1]) && action == AppAction.Import)
        {
            Console.WriteLine($"Directory '{args[1]}' does not exist so there are no files to import");
            return(-3);
        }

        if (!Directory.Exists(args[1]) && action == AppAction.Export)
        {
            var info = Directory.CreateDirectory(args[1]);
            if (info.Exists)
            {
                Console.WriteLine($"Created '{args[1]}'");
            }
        }

        if (!File.Exists(args[2]))
        {
            Console.WriteLine($"File '{args[2]}' does not exist");
        }

        if (action == AppAction.Import)
        {
        }
        else if (action == AppAction.Export)
        {
            var serializer = new MonsterSerializer();
            var monsters   = await serializer.DeserializeMonsters(args[2]);

            int i = 0;
            foreach (var monster in monsters)
            {
                var sprite = await serializer.DeserializeSprite(args[2], monster);

                var image = new IndexedImage(sprite.Arranger);
                image.Render();
                var path = Path.Combine(args[1], $"Enemy{i:D3}.png");
                image.ExportImage(path, new ImageSharpFileAdapter());
                sprite.DataFile.Dispose();
                i++;
            }
        }

        return(0);
    }