using ImGuiNET; using Microsoft.Xna.Framework; using skyscraper8.UI.MonoGame.Bridge; using System; using System.Reflection; namespace skyscraper8.UI.MonoGame.Forms { internal class AboutWindow : ImGuiRenderable { public AboutWindow() { open = true; if (version == null) { Type gameType = typeof(Game); Assembly assembly = gameType.Assembly; object[] attributes = assembly.GetCustomAttributes(false); foreach (object attribute in attributes) { if (attribute.GetType() == typeof(AssemblyFileVersionAttribute)) { AssemblyFileVersionAttribute ava = (AssemblyFileVersionAttribute)attribute; version = Version.Parse((ReadOnlySpan)ava.Version); } } } typeof(AboutWindow).Module.GetPEKind(out peKind, out machine); } private PortableExecutableKinds peKind; private ImageFileMachine machine; private bool open; private static Version version; public void Dispose() { } public void Update() { } public void Render() { ImGui.Begin("About skyscraper8", ref open, ImGuiWindowFlags.AlwaysVerticalScrollbar); ImGui.Text("skyscraper8, written by Feyris-Tan"); ImGui.Spacing(); ImGui.Text(String.Format("Using MonoGame {0}", version.ToString())); ImGui.Text(String.Format("Using Dear ImGUI {0}", ImGui.GetVersion())); ImGui.Text(String.Format("Using StreamReader.dll by crazycat69")); ImGui.Spacing(); ImGui.Text(String.Format("The currently executing image file is for {0} processors.", machine.ToString())); ImGui.Text(String.Format("You are running an {0}-bit operating system.", Environment.Is64BitOperatingSystem ? 64 : 32)); ImGui.Text(String.Format("This is a {0}-bit process.", Environment.Is64BitProcess ? 64 : 32)); if (Environment.Is64BitProcess) { ImGui.Text(String.Format("Please remember that StreamReader.dll requires a 32-bit context.")); ImGui.Text("Consider using Remote Stream Reader"); } if (ImGui.Button("OK")) open = false; ImGui.End(); } public bool WasClosed() { return !open; } } }