/// <summary> /// Generates the title image for the mission. /// </summary> /// <param name="mission">The misison which requires a title image.</param> /// <returns>The mission title image, as an array of bytes for a JPEG file.</returns> private byte[] GetTitleImage(DCSMission mission) { byte[] imageBytes; using (ImageMaker imgMaker = new ImageMaker()) { imgMaker.TextOverlay.Text = mission.MissionName; imgMaker.TextOverlay.Alignment = ContentAlignment.BottomCenter; List <ImageMakerLayer> layers = new List <ImageMakerLayer>(); string[] theaterImages = Directory.GetFiles($"{BRPaths.INCLUDE_JPG}Theaters\\", $"{mission.Theater}*.jpg"); if (theaterImages.Length == 0) { layers.Add(new ImageMakerLayer("_default.jpg")); } else { layers.Add(new ImageMakerLayer("Theaters\\" + Path.GetFileName(Toolbox.RandomFrom(theaterImages)))); } layers.Add(new ImageMakerLayer($"Flags\\{GeneratorTools.RemoveAfterComma(mission.Coalitions[(int)mission.CoalitionPlayer])}.png", ContentAlignment.TopLeft, 8, 8, 0, .5)); imageBytes = imgMaker.GetImageBytes(layers.ToArray()); } return(imageBytes); }
private void CreateImageFiles(CampaignTemplate campaignTemplate, string campaignFilePath) { string baseFileName = Path.Combine(Path.GetDirectoryName(campaignFilePath), Path.GetFileNameWithoutExtension(campaignFilePath)); string allyFlagName = GeneratorTools.RemoveAfterComma(campaignTemplate.GetCoalition(campaignTemplate.PlayerCoalition)); string enemyFlagName = GeneratorTools.RemoveAfterComma(campaignTemplate.GetCoalition((Coalition)(1 - (int)campaignTemplate.PlayerCoalition))); using (ImageMaker imgMaker = new ImageMaker()) { string theaterImage; string[] theaterImages = Directory.GetFiles($"{BRPaths.INCLUDE_JPG}Theaters\\", $"{campaignTemplate.ContextTheaterID}*.jpg"); if (theaterImages.Length == 0) { theaterImage = "_default.jpg"; } else { theaterImage = "Theaters\\" + Path.GetFileName(Toolbox.RandomFrom(theaterImages)); } // Print the name of the campaign over the campaign "title picture" imgMaker.TextOverlay.Text = Path.GetFileNameWithoutExtension(campaignFilePath); imgMaker.TextOverlay.Alignment = ContentAlignment.TopCenter; File.WriteAllBytes($"{baseFileName}_Title.jpg", imgMaker.GetImageBytes( new ImageMakerLayer(theaterImage), new ImageMakerLayer($"Flags\\{enemyFlagName}.png", ContentAlignment.MiddleCenter, -32, -32), new ImageMakerLayer($"Flags\\{allyFlagName}.png", ContentAlignment.MiddleCenter, 32, 32))); // Reset background and text overlay imgMaker.BackgroundColor = Color.Black; imgMaker.TextOverlay.Text = ""; File.WriteAllBytes($"{baseFileName}_Success.jpg", imgMaker.GetImageBytes("Sky.jpg", $"Flags\\{allyFlagName}.png")); File.WriteAllBytes($"{baseFileName}_Failure.jpg", imgMaker.GetImageBytes("Fire.jpg", $"Flags\\{allyFlagName}.png", "Burning.png")); } }