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); } }
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; } }