using RecrownedAthenaeum.Preferences; using RecrownedAthenaeum.ContentSystem; using RecrownedAthenaeum.DataTypes; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace RecrownedAthenaeum.ContentResolvers { class ResolutionContentResolver : IContentPathModifier { int width, height; bool updated; Resolution bestResolution; public int Width { get { return width; } set { updated = true; width = value; } } public int Height { get { return height; } set { updated = true; height = value; } } Resolution[] resolutions = { new Resolution(1920, 1080), new Resolution(2560, 1440), new Resolution(3840, 2160) }; Resolution ChooseRounded() { updated = false; Resolution best = resolutions[0]; int leastDifference = -1; int w = Width, h = Height; if (w > h) { for (int i = 0; i < resolutions.Length; i++) { int currentDiff = h - resolutions[i].Height; if (currentDiff < 0) { currentDiff = currentDiff * -1; } if ((currentDiff < leastDifference) || leastDifference == -1) { best = resolutions[i]; leastDifference = currentDiff; } } } else { for (int i = 0; i < resolutions.Length; i++) { int currentDiff = w - resolutions[i].Width; if (currentDiff < 0) { currentDiff = currentDiff * -1; } if (currentDiff < leastDifference || leastDifference == -1) { best = resolutions[i]; leastDifference = currentDiff; } } } return best; } public string Modify(string path) { if (updated) { bestResolution = ChooseRounded(); } return bestResolution + "/" + path; } } }