示例#1
0
        private static void MergeSprites(ISpriteMerger merger, string a, string b)
        {
            try
            {
                Bitmap merged = merger.Merge(a, b);
                string file   = string.Format("merged {0}.png", DateTime.Now.ToString("MM-dd h.mm.ss"));
                merged.Save(file);
                Console.WriteLine("Saved image to {0}", file);

                //Propt to work with the saved image
                if (PromptWorking())
                {
                    // Prompt clothing to generate
                    Type generatorType = SelectGenerator(typeof(HatGenerator), typeof(MaskedHatGenerator), typeof(HidingHatGenerator), typeof(SleeveGenerator), typeof(PantsGenerator), typeof(HidingPantsGenerator), typeof(BackGenerator));

                    // Generate clothing
                    IClothingGenerator generator = (IClothingGenerator)Activator.CreateInstance(generatorType);
                    GenerateClothing(generator, merged);
                }
                else
                {
                    WaitAndExit("Saved image to {0}", file);
                }
            }
            catch (Exception exc)
            {
                WaitAndExit("Failed to merge sprites: {0}", exc.Message);
            }
        }
示例#2
0
        static void Main(string[] args)
        {
            writer = new ConsoleWriter(ConsoleColor.Cyan);
            writer.WriteLine("= Outfit Generator");
            Console.WriteLine();

            writer.WriteLine("Select the desired generator:");

            if (args.Length > 2)
            {
                WaitAndExit($"Invalid number of parameters: {args.Length}. Expected 1 for outfit generation or 2 for sprite merging.");
                return;
            }

            // Read images.
            Bitmap[] images = new Bitmap[args.Length];
            try
            {
                for (int i = 0; i < args.Length; i++)
                {
                    images[i] = new Bitmap(args[i]);
                }
            }
            catch (Exception exc)
            {
                WaitAndExit("Couldn't read image file: {0}", exc.Message);
                return;
            }

            // Prompt generator/merge type.
            Type generatorType;

            switch (args.Length)
            {
            case 0:
                WaitAndExit("Please drag and drop a valid image on the application (not this window).");
                break;

            case 1:
                // Prompt clothing to generate
                generatorType = SelectGenerator(typeof(HatGenerator), typeof(MaskedHatGenerator), typeof(HidingHatGenerator), typeof(SleeveGenerator), typeof(PantsGenerator), typeof(HidingPantsGenerator), typeof(BackGenerator));

                // Generate clothing
                IClothingGenerator generator = (IClothingGenerator)Activator.CreateInstance(generatorType);
                GenerateClothing(generator, images[0]);
                break;

            case 2:
                // Prompt sprites to merge
                generatorType = SelectGenerator(typeof(ChestPantsMerger), typeof(SleevesMerger));

                // Merge sprites
                ISpriteMerger merger = (ISpriteMerger)Activator.CreateInstance(generatorType);
                MergeSprites(merger, args[0], args[1]);
                break;
            }
        }