diff --git a/SysBot.Pokemon.Discord/Commands/Bots/BotAvatar.cs b/SysBot.Pokemon.Discord/Commands/Bots/BotAvatar.cs index cc6fa4d5f..254fe39d2 100644 --- a/SysBot.Pokemon.Discord/Commands/Bots/BotAvatar.cs +++ b/SysBot.Pokemon.Discord/Commands/Bots/BotAvatar.cs @@ -38,7 +38,7 @@ public async Task SetAvatarAsync() using var httpClient = new HttpClient(); var imageBytes = await httpClient.GetByteArrayAsync(attachment.Url); - using var ms = new MemoryStream(imageBytes); + await using var ms = new MemoryStream(imageBytes); var image = new Image(ms); await Context.Client.CurrentUser.ModifyAsync(user => user.Avatar = image); diff --git a/SysBot.Pokemon.Discord/Commands/Bots/Pokepaste.cs b/SysBot.Pokemon.Discord/Commands/Bots/Pokepaste.cs index f363fc594..576fa0d32 100644 --- a/SysBot.Pokemon.Discord/Commands/Bots/Pokepaste.cs +++ b/SysBot.Pokemon.Discord/Commands/Bots/Pokepaste.cs @@ -21,16 +21,12 @@ public class Pokepaste : ModuleBase { private static System.Drawing.Image CombineImages(List images) { -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility int width = images.Sum(img => img.Width); #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility int height = images.Max(img => img.Height); #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility Bitmap combinedImage = new Bitmap(width, height); @@ -87,7 +83,7 @@ await Task.Run(async () => var pokemonImages = new List(); #pragma warning restore CA1416 // Validate platform compatibility - using var memoryStream = new MemoryStream(); + await using var memoryStream = new MemoryStream(); using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)) { foreach (var set in showdownSets) @@ -121,17 +117,13 @@ await Task.Run(async () => var speciesName = GameInfo.GetStrings("en").Species[set.Species]; var fileName = namer.GetName(pk); // Use GengarNamer to generate the file name var entry = archive.CreateEntry($"{fileName}.{pk.Extension}"); - using var entryStream = entry.Open(); + await using var entryStream = entry.Open(); await entryStream.WriteAsync(pk.Data.AsMemory(0, pk.Data.Length)).ConfigureAwait(false); string speciesImageUrl = AbstractTrade.PokeImg(pk, false, false); -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility var speciesImage = await Task.Run(() => System.Drawing.Image.FromStream(new HttpClient().GetStreamAsync(speciesImageUrl).Result)).ConfigureAwait(false); #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility pokemonImages.Add(speciesImage); #pragma warning restore CA1416 // Validate platform compatibility @@ -155,12 +147,10 @@ await Task.Run(async () => #pragma warning disable CA1416 // Validate platform compatibility combinedImage.Save($"{title}.png"); #pragma warning restore CA1416 // Validate platform compatibility - using (var imageStream = new MemoryStream()) + await using (var imageStream = new MemoryStream()) { -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility combinedImage.Save(imageStream, System.Drawing.Imaging.ImageFormat.Png); -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning restore CA1416 // Validate platform compatibility imageStream.Position = 0; diff --git a/SysBot.Pokemon.Discord/Commands/Bots/RemoteControlModule.cs b/SysBot.Pokemon.Discord/Commands/Bots/RemoteControlModule.cs index 5cd9e7b21..c1fe72cef 100644 --- a/SysBot.Pokemon.Discord/Commands/Bots/RemoteControlModule.cs +++ b/SysBot.Pokemon.Discord/Commands/Bots/RemoteControlModule.cs @@ -111,7 +111,7 @@ private async Task ClickAsyncImpl(SwitchButton button, BotSource b await ReplyAsync($"{b.Connection.Name} has performed: {button}").ConfigureAwait(false); } - private string GetRunningBotIP() + private static string GetRunningBotIP() { var r = SysCord.Runner; var runningBot = r.Bots.Find(x => x.IsRunning); @@ -130,7 +130,7 @@ private string GetRunningBotIP() private async Task SetScreen(bool on) { - string ip = GetRunningBotIP(); + string ip = RemoteControlModule.GetRunningBotIP(); var bot = GetBot(ip); if (bot == null) { diff --git a/SysBot.Pokemon.Discord/Commands/Bots/TradeModule.cs b/SysBot.Pokemon.Discord/Commands/Bots/TradeModule.cs index 5563ab27b..2b4ca85ab 100644 --- a/SysBot.Pokemon.Discord/Commands/Bots/TradeModule.cs +++ b/SysBot.Pokemon.Discord/Commands/Bots/TradeModule.cs @@ -773,7 +773,7 @@ public async Task BatchTradeZipAsync() } var zipBytes = await new HttpClient().GetByteArrayAsync(attachment.Url); - using var zipStream = new MemoryStream(zipBytes); + await using var zipStream = new MemoryStream(zipBytes); using var archive = new ZipArchive(zipStream, ZipArchiveMode.Read); var entries = archive.Entries.ToList(); @@ -791,7 +791,7 @@ public async Task BatchTradeZipAsync() foreach (var entry in entries) { - using var entryStream = entry.Open(); + await using var entryStream = entry.Open(); var pkBytes = await TradeModule.ReadAllBytesAsync(entryStream).ConfigureAwait(false); var pk = EntityFormat.GetFromBytes(pkBytes); @@ -809,7 +809,7 @@ public async Task BatchTradeZipAsync() private static async Task ReadAllBytesAsync(Stream stream) { - using var memoryStream = new MemoryStream(); + await using var memoryStream = new MemoryStream(); await stream.CopyToAsync(memoryStream).ConfigureAwait(false); return memoryStream.ToArray(); } diff --git a/SysBot.Pokemon.Discord/Commands/Bots/VGCPastes.cs b/SysBot.Pokemon.Discord/Commands/Bots/VGCPastes.cs index 9f80bf4e1..b2ee7631d 100644 --- a/SysBot.Pokemon.Discord/Commands/Bots/VGCPastes.cs +++ b/SysBot.Pokemon.Discord/Commands/Bots/VGCPastes.cs @@ -19,7 +19,7 @@ namespace SysBot.Pokemon.Discord { // Uses VGCPastes Repository Spreadsheet in which they keep track of all current teams // https://twitter.com/VGCPastes - private async Task DownloadSpreadsheetAsCsv() + private static async Task DownloadSpreadsheetAsCsv() { var GID = SysCord.Runner.Config.Trade.VGCPastesConfiguration.GID; var csvUrl = $"https://docs.google.com/spreadsheets/d/1axlwmzPA49rYkqXh7zHvAtSP-TKbM0ijGYBPRflLSWw/export?format=csv&gid={GID}"; @@ -32,7 +32,7 @@ private async Task DownloadSpreadsheetAsCsv() private async Task>> FetchSpreadsheetData() { - var csvData = await DownloadSpreadsheetAsCsv(); + var csvData = await VGCPastes.DownloadSpreadsheetAsCsv(); var rows = csvData.Split('\n'); var data = rows.Select(row => row.Split(',').Select(cell => cell.Trim('"')).ToList()).ToList(); return data; @@ -77,7 +77,7 @@ private async Task>> FetchSpreadsheetData() return pokePasteData; } - private (string PokePasteUrl, List RowData) SelectRandomPokePasteUrl(List> data, string? pokemonName = null) + private static (string PokePasteUrl, List RowData) SelectRandomPokePasteUrl(List> data, string? pokemonName = null) { var filteredData = data.Where(row => row.Count > 40 && Uri.IsWellFormedUriString(row[24]?.Trim('"'), UriKind.Absolute)); @@ -122,7 +122,7 @@ public async Task GenerateSpreadsheetTeamAsync(string? pokemonName = null) var spreadsheetData = await FetchSpreadsheetData(); // Use the adjusted method to select a random PokePaste URL (and row data) based on the Pokémon name - var (PokePasteUrl, selectedRow) = SelectRandomPokePasteUrl(spreadsheetData, pokemonName); + var (PokePasteUrl, selectedRow) = VGCPastes.SelectRandomPokePasteUrl(spreadsheetData, pokemonName); if (PokePasteUrl == null) { await ReplyAsync("Failed to find a valid PokePaste URL with the specified Pokémon."); @@ -155,7 +155,7 @@ public async Task GenerateSpreadsheetTeamAsync(string? pokemonName = null) #pragma warning disable CS8604 // Possible null reference argument. var sanitizedTeamDescription = SanitizeFileName(teamDescription); #pragma warning restore CS8604 // Possible null reference argument. - using var memoryStream = new MemoryStream(); + await using var memoryStream = new MemoryStream(); using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)) { foreach (var set in showdownSets) @@ -179,7 +179,7 @@ public async Task GenerateSpreadsheetTeamAsync(string? pokemonName = null) var speciesName = GameInfo.GetStrings("en").Species[set.Species]; var fileName = namer.GetName(pk); var entry = archive.CreateEntry($"{fileName}.{pk.Extension}"); - using var entryStream = entry.Open(); + await using var entryStream = entry.Open(); await entryStream.WriteAsync(pk.Data.AsMemory(0, pk.Data.Length)); string speciesImageUrl = AbstractTrade.PokeImg(pk, false, false); @@ -210,12 +210,10 @@ public async Task GenerateSpreadsheetTeamAsync(string? pokemonName = null) #pragma warning disable CA1416 // Validate platform compatibility combinedImage.Save("spreadsheetteam.png"); #pragma warning restore CA1416 // Validate platform compatibility - using (var imageStream = new MemoryStream()) + await using (var imageStream = new MemoryStream()) { -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility combinedImage.Save(imageStream, System.Drawing.Imaging.ImageFormat.Png); -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning restore CA1416 // Validate platform compatibility imageStream.Position = 0; @@ -287,16 +285,12 @@ private static List ParseShowdownSets(string pokePasteHtml) private static System.Drawing.Image CombineImages(List images) { -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility int width = images.Sum(img => img.Width); #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility int height = images.Max(img => img.Height); #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility Bitmap combinedImage = new Bitmap(width, height); diff --git a/SysBot.Pokemon.Discord/Commands/Management/BotModule.cs b/SysBot.Pokemon.Discord/Commands/Management/BotModule.cs index 0337b315c..e0e5886d1 100644 --- a/SysBot.Pokemon.Discord/Commands/Management/BotModule.cs +++ b/SysBot.Pokemon.Discord/Commands/Management/BotModule.cs @@ -39,14 +39,8 @@ private static string GetBotIPFromJsonConfig() var config = JObject.Parse(jsonData); // Access the IP address from the first bot in the Bots array -#pragma warning disable CS8602 // Dereference of a possibly null reference. -#pragma warning disable CS8602 // Dereference of a possibly null reference. -#pragma warning disable CS8602 // Dereference of a possibly null reference. #pragma warning disable CS8602 // Dereference of a possibly null reference. var ip = config["Bots"][0]["Connection"]["IP"].ToString(); -#pragma warning restore CS8602 // Dereference of a possibly null reference. -#pragma warning restore CS8602 // Dereference of a possibly null reference. -#pragma warning restore CS8602 // Dereference of a possibly null reference. #pragma warning restore CS8602 // Dereference of a possibly null reference. return ip; } diff --git a/SysBot.Pokemon.Discord/Commands/Management/OwnerModule.cs b/SysBot.Pokemon.Discord/Commands/Management/OwnerModule.cs index 63488bb99..a24e98148 100644 --- a/SysBot.Pokemon.Discord/Commands/Management/OwnerModule.cs +++ b/SysBot.Pokemon.Discord/Commands/Management/OwnerModule.cs @@ -263,7 +263,7 @@ public async Task RePeek() return; } - using MemoryStream ms = new(bytes); + await using MemoryStream ms = new(bytes); var img = "cap.jpg"; var embed = new EmbedBuilder { ImageUrl = $"attachment://{img}", Color = (DiscordColor?)Color.Purple } .WithFooter(new EmbedFooterBuilder { Text = "Here's your screenshot." }); @@ -320,20 +320,14 @@ public async Task RePeekGIF() return; } - using (var ms = new MemoryStream(bytes)) + await using (var ms = new MemoryStream(bytes)) { #pragma warning disable CA1416 // Validate platform compatibility using var bitmap = new Bitmap(ms); #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility var frame = bitmap.Clone(new Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.PixelFormat.Format32bppArgb); #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility gifFrames.Add(frame); #pragma warning restore CA1416 // Validate platform compatibility @@ -342,7 +336,7 @@ public async Task RePeekGIF() await Task.Delay(screenshotInterval).ConfigureAwait(false); } - using (var ms = new MemoryStream()) + await using (var ms = new MemoryStream()) { using (var gif = new AnimatedGifCreator(ms, 200)) { @@ -387,14 +381,8 @@ private static string GetBotIPFromJsonConfig() var jsonData = File.ReadAllText(TradeBot.ConfigPath); var config = JObject.Parse(jsonData); -#pragma warning disable CS8602 // Dereference of a possibly null reference. -#pragma warning disable CS8602 // Dereference of a possibly null reference. -#pragma warning disable CS8602 // Dereference of a possibly null reference. #pragma warning disable CS8602 // Dereference of a possibly null reference. var ip = config["Bots"][0]["Connection"]["IP"].ToString(); -#pragma warning restore CS8602 // Dereference of a possibly null reference. -#pragma warning restore CS8602 // Dereference of a possibly null reference. -#pragma warning restore CS8602 // Dereference of a possibly null reference. #pragma warning restore CS8602 // Dereference of a possibly null reference. return ip; } diff --git a/SysBot.Pokemon.Discord/Commands/Management/TradeStartModule.cs b/SysBot.Pokemon.Discord/Commands/Management/TradeStartModule.cs index 2760e24b9..a39192edc 100644 --- a/SysBot.Pokemon.Discord/Commands/Management/TradeStartModule.cs +++ b/SysBot.Pokemon.Discord/Commands/Management/TradeStartModule.cs @@ -244,7 +244,7 @@ private static async Task LoadImageAsync(string imagePath) { using var httpClient = new HttpClient(); using var response = await httpClient.GetAsync(imagePath); - using var stream = await response.Content.ReadAsStreamAsync(); + await using var stream = await response.Content.ReadAsStreamAsync(); #pragma warning disable CA1416 // Validate platform compatibility return new Bitmap(stream); #pragma warning restore CA1416 // Validate platform compatibility diff --git a/SysBot.Pokemon.Discord/Helpers/DiscordTradeNotifier.cs b/SysBot.Pokemon.Discord/Helpers/DiscordTradeNotifier.cs index 00cdfda3f..c20e0c5ab 100644 --- a/SysBot.Pokemon.Discord/Helpers/DiscordTradeNotifier.cs +++ b/SysBot.Pokemon.Discord/Helpers/DiscordTradeNotifier.cs @@ -157,164 +157,59 @@ private void SendNotificationZ3(SeedSearchResult r) public static (string, Embed) CreateLGLinkCodeSpriteEmbed(List lgcode) { - int codecount = 0; - List spritearray = []; - foreach (Pictocodes cd in lgcode) +#if WINDOWS + List spritearray = new List(); + + foreach (Pictocodes cd in lgcode) + { + var showdown = new ShowdownSet(cd.ToString()); + var sav = SaveUtil.GetBlankSAV(EntityContext.Gen7b, "pip"); + PKM pk = sav.GetLegalFromSet(showdown).Created; + + System.Drawing.Image png = pk.Sprite(); + var destRect = new Rectangle(-40, -65, 137, 130); + var destImage = new Bitmap(137, 130); + destImage.SetResolution(png.HorizontalResolution, png.VerticalResolution); + + using (var graphics = Graphics.FromImage(destImage)) { - var showdown = new ShowdownSet(cd.ToString()); - var sav = SaveUtil.GetBlankSAV(EntityContext.Gen7b, "pip"); - PKM pk = sav.GetLegalFromSet(showdown).Created; -#pragma warning disable CA1416 // Validate platform compatibility - System.Drawing.Image png = pk.Sprite(); -#pragma warning restore CA1416 // Validate platform compatibility - var destRect = new Rectangle(-40, -65, 137, 130); -#pragma warning disable CA1416 // Validate platform compatibility - var destImage = new Bitmap(137, 130); -#pragma warning restore CA1416 // Validate platform compatibility - -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility - destImage.SetResolution(png.HorizontalResolution, png.VerticalResolution); -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility - -#pragma warning disable CA1416 // Validate platform compatibility - using (var graphics = Graphics.FromImage(destImage)) - { -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility - graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy; -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility - graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility - graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility - graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility - graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility - graphics.DrawImage(png, destRect, 0, 0, png.Width, png.Height, GraphicsUnit.Pixel); -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility - } -#pragma warning restore CA1416 // Validate platform compatibility - png = destImage; -#pragma warning disable CA1416 // Validate platform compatibility - spritearray.Add(png); -#pragma warning restore CA1416 // Validate platform compatibility - codecount++; + graphics.CompositingMode = CompositingMode.SourceCopy; + graphics.CompositingQuality = CompositingQuality.HighQuality; + graphics.InterpolationMode = InterpolationMode.NearestNeighbor; + graphics.SmoothingMode = SmoothingMode.HighQuality; + graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; + graphics.DrawImage(png, destRect, 0, 0, png.Width, png.Height, GraphicsUnit.Pixel); } -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility - int outputImageWidth = spritearray[0].Width + 20; -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility - -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility - int outputImageHeight = spritearray[0].Height - 65; -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility - -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility - Bitmap outputImage = new Bitmap(outputImageWidth, outputImageHeight, System.Drawing.Imaging.PixelFormat.Format32bppArgb); -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility - -#pragma warning disable CA1416 // Validate platform compatibility - using (Graphics graphics = Graphics.FromImage(outputImage)) - { -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility - graphics.DrawImage(spritearray[0], new Rectangle(0, 0, spritearray[0].Width, spritearray[0].Height), - new Rectangle(new Point(), spritearray[0].Size), GraphicsUnit.Pixel); -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility + png = destImage; + spritearray.Add(png); + } + + if (spritearray.Count == 0) + throw new InvalidOperationException("No sprites available."); + + int outputImageWidth = spritearray[0].Width + 20; + int outputImageHeight = spritearray[0].Height - 65; + Bitmap outputImage = new Bitmap(outputImageWidth, outputImageHeight, PixelFormat.Format32bppArgb); + + using (Graphics graphics = Graphics.FromImage(outputImage)) + { + graphics.DrawImage(spritearray[0], new Rectangle(0, 0, spritearray[0].Width, spritearray[0].Height), + new Rectangle(new Point(), spritearray[0].Size), GraphicsUnit.Pixel); + if (spritearray.Count > 1) graphics.DrawImage(spritearray[1], new Rectangle(50, 0, spritearray[1].Width, spritearray[1].Height), new Rectangle(new Point(), spritearray[1].Size), GraphicsUnit.Pixel); -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility + if (spritearray.Count > 2) graphics.DrawImage(spritearray[2], new Rectangle(100, 0, spritearray[2].Width, spritearray[2].Height), new Rectangle(new Point(), spritearray[2].Size), GraphicsUnit.Pixel); -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility - } -#pragma warning restore CA1416 // Validate platform compatibility - System.Drawing.Image finalembedpic = outputImage; - var filename = $"{System.IO.Directory.GetCurrentDirectory()}//finalcode.png"; -#pragma warning disable CA1416 // Validate platform compatibility - finalembedpic.Save(filename); -#pragma warning restore CA1416 // Validate platform compatibility - filename = System.IO.Path.GetFileName($"{System.IO.Directory.GetCurrentDirectory()}//finalcode.png"); - Embed returnembed = new EmbedBuilder().WithTitle($"{lgcode[0]}, {lgcode[1]}, {lgcode[2]}").WithImageUrl($"attachment://{filename}").Build(); - return (filename, returnembed); + } + System.Drawing.Image finalembedpic = outputImage; + var filename = $"{Directory.GetCurrentDirectory()}//finalcode.png"; + finalembedpic.Save(filename); + filename = Path.GetFileName($"{Directory.GetCurrentDirectory()}//finalcode.png"); + Embed returnembed = new EmbedBuilder().WithTitle($"{lgcode[0]}, {lgcode[1]}, {lgcode[2]}").WithImageUrl($"attachment://{filename}").Build(); + return (filename, returnembed); +#else + throw new PlatformNotSupportedException("This code requires a Windows platform."); +#endif } } diff --git a/SysBot.Pokemon.Discord/Helpers/QueueHelper.cs b/SysBot.Pokemon.Discord/Helpers/QueueHelper.cs index 40532aa95..93f9c260d 100644 --- a/SysBot.Pokemon.Discord/Helpers/QueueHelper.cs +++ b/SysBot.Pokemon.Discord/Helpers/QueueHelper.cs @@ -239,10 +239,8 @@ private static string SaveImageLocally(System.Drawing.Image image) string filePath = Path.Combine(imagesFolderPath, $"image_{Guid.NewGuid()}.png"); // Save the image to the specified path -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility image.Save(filePath, System.Drawing.Imaging.ImageFormat.Png); -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning restore CA1416 // Validate platform compatibility return filePath; @@ -293,15 +291,9 @@ private static string SaveImageLocally(System.Drawing.Image image) #pragma warning disable CA1416 // Validate platform compatibility using (var graphics = Graphics.FromImage(localImage)) { -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility var ballPosition = new Point(localImage.Width - ballImage.Width, localImage.Height - ballImage.Height); #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility graphics.DrawImage(ballImage, ballPosition); #pragma warning restore CA1416 // Validate platform compatibility @@ -353,15 +345,9 @@ private static string SaveImageLocally(System.Drawing.Image image) #pragma warning disable CA1416 // Validate platform compatibility using (var graphics = Graphics.FromImage(speciesImage)) { -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility var ballPosition = new Point(speciesImage.Width - ballImage.Width, speciesImage.Height - ballImage.Height); #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility graphics.DrawImage(ballImage, ballPosition); #pragma warning restore CA1416 // Validate platform compatibility @@ -384,23 +370,13 @@ private static string SaveImageLocally(System.Drawing.Image image) System.Drawing.Image speciesImage = await LoadImageFromUrl(speciesImageUrl); #pragma warning restore CS8600 // Converting null literal or possible null value to non-nullable type. #pragma warning disable CS8602 // Dereference of a possibly null reference. -#pragma warning disable CS8602 // Dereference of a possibly null reference. -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility double scaleRatio = Math.Min((double)eggImage.Width / speciesImage.Width, (double)eggImage.Height / speciesImage.Height); #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning restore CS8602 // Dereference of a possibly null reference. -#pragma warning restore CS8602 // Dereference of a possibly null reference. -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility Size newSize = new Size((int)(speciesImage.Width * scaleRatio), (int)(speciesImage.Height * scaleRatio)); #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility System.Drawing.Image resizedSpeciesImage = new Bitmap(speciesImage, newSize); #pragma warning restore CA1416 // Validate platform compatibility @@ -408,24 +384,16 @@ private static string SaveImageLocally(System.Drawing.Image image) using (Graphics g = Graphics.FromImage(eggImage)) { // Calculate the position to center the species image on the egg image -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility int speciesX = (eggImage.Width - resizedSpeciesImage.Width) / 2; #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility int speciesY = (eggImage.Height - resizedSpeciesImage.Height) / 2; -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning restore CA1416 // Validate platform compatibility // Draw the resized and centered species image over the egg image -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility g.DrawImage(resizedSpeciesImage, speciesX, speciesY, resizedSpeciesImage.Width, resizedSpeciesImage.Height); -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning restore CA1416 // Validate platform compatibility } #pragma warning restore CA1416 // Validate platform compatibility @@ -439,10 +407,8 @@ private static string SaveImageLocally(System.Drawing.Image image) #pragma warning restore CA1416 // Validate platform compatibility // Calculate scale factor for resizing while maintaining aspect ratio -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility double scale = Math.Min(128.0 / eggImage.Width, 128.0 / eggImage.Height); -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning restore CA1416 // Validate platform compatibility // Calculate new dimensions @@ -639,7 +605,7 @@ private static async Task LoadImageAsync(string imagePath) { using var httpClient = new HttpClient(); using var response = await httpClient.GetAsync(imagePath); - using var stream = await response.Content.ReadAsStreamAsync(); + await using var stream = await response.Content.ReadAsStreamAsync(); #pragma warning disable CA1416 // Validate platform compatibility return new Bitmap(stream); #pragma warning restore CA1416 // Validate platform compatibility @@ -711,50 +677,30 @@ public static (string, Embed) CreateLGLinkCodeSpriteEmbed(List lgcod var destImage = new Bitmap(137, 130); #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility destImage.SetResolution(png.HorizontalResolution, png.VerticalResolution); #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility using (var graphics = Graphics.FromImage(destImage)) { -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy; #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility graphics.DrawImage(png, destRect, 0, 0, png.Width, png.Height, GraphicsUnit.Pixel); -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning restore CA1416 // Validate platform compatibility } #pragma warning restore CA1416 // Validate platform compatibility @@ -764,86 +710,32 @@ public static (string, Embed) CreateLGLinkCodeSpriteEmbed(List lgcod #pragma warning restore CA1416 // Validate platform compatibility codecount++; } -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility int outputImageWidth = spritearray[0].Width + 20; #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility int outputImageHeight = spritearray[0].Height - 65; #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility Bitmap outputImage = new Bitmap(outputImageWidth, outputImageHeight, System.Drawing.Imaging.PixelFormat.Format32bppArgb); #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility using (Graphics graphics = Graphics.FromImage(outputImage)) { -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility graphics.DrawImage(spritearray[0], new Rectangle(0, 0, spritearray[0].Width, spritearray[0].Height), new Rectangle(new Point(), spritearray[0].Size), GraphicsUnit.Pixel); #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility graphics.DrawImage(spritearray[1], new Rectangle(50, 0, spritearray[1].Width, spritearray[1].Height), new Rectangle(new Point(), spritearray[1].Size), GraphicsUnit.Pixel); #pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility -#pragma warning disable CA1416 // Validate platform compatibility #pragma warning disable CA1416 // Validate platform compatibility graphics.DrawImage(spritearray[2], new Rectangle(100, 0, spritearray[2].Width, spritearray[2].Height), new Rectangle(new Point(), spritearray[2].Size), GraphicsUnit.Pixel); -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility -#pragma warning restore CA1416 // Validate platform compatibility #pragma warning restore CA1416 // Validate platform compatibility } #pragma warning restore CA1416 // Validate platform compatibility diff --git a/SysBot.Pokemon.WinForms/UpdateForm.cs b/SysBot.Pokemon.WinForms/UpdateForm.cs index 429a85bcc..1db7758dd 100644 --- a/SysBot.Pokemon.WinForms/UpdateForm.cs +++ b/SysBot.Pokemon.WinForms/UpdateForm.cs @@ -22,13 +22,9 @@ public class UpdateForm : Form private readonly string newVersion; -#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. -#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. public UpdateForm(bool updateRequired, string newVersion) -#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. -#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. { isUpdateRequired = updateRequired;