using Microsoft.Xna.Framework; using MonoGameLibrary; using MonoGameLibrary.Graphics; namespace FNAF_Clone.GUI; public class UIManager { public static class ScreenTypes { public const string OFFICE = "office"; public const string CAMERAS = "monitor"; } private static Screen officeScreen = new(ScreenTypes.OFFICE); private static Screen monitorScreen = new(ScreenTypes.CAMERAS); private static TextureAtlas testAtlas; private static TextureAtlas officeAtlas; private static TextureAtlas monitorAtlas; public static int GlobalPixelMultiplier{ get; private set; } public static void InitUI() { GlobalPixelMultiplier = Core.graphicsDevice.Viewport.Height / 360; testAtlas = TextureAtlas.FromFile(Core.content, "images/testBlocks-definition.xml"); officeAtlas = TextureAtlas.FromFile(Core.content, "images/office-definition.xml"); monitorAtlas = TextureAtlas.FromFile(Core.content, "images/monitor-definition.xml"); Screen.AddScreens([officeScreen, monitorScreen]); Screen.SetScreen(ScreenTypes.OFFICE); // officeScreen.AddElement("test", // new UIElement(testAtlas[0], Point.Zero) // {Pressable = true, OnMousePress = () => Console.WriteLine("Pressed!")} // ); officeScreen.AddElement("office_left", new UIElement([officeAtlas[3], officeAtlas[0]], Point.Zero)); officeScreen.AddElement("office_centre", new UIElement([officeAtlas[4], officeAtlas[1]], new Point(200, 0).MultiplyByScalar(GlobalPixelMultiplier))); officeScreen.AddElement("office_right", new UIElement([officeAtlas[5], officeAtlas[2]], new Point(440, 0).MultiplyByScalar(GlobalPixelMultiplier))); monitorScreen.AddElement("screen", new UIElement(monitorAtlas[0], Point.Zero)); monitorScreen.AddElement("view-frame", new UIElement(monitorAtlas[1], new Point(62, 55).MultiplyByScalar(GlobalPixelMultiplier))); monitorScreen.AddElement("map-frame", new UIElement(monitorAtlas[2], new Point(334, 135).MultiplyByScalar(GlobalPixelMultiplier))); monitorScreen.AddElement("map", new UIElement(monitorAtlas[3], new Point(334, 135).MultiplyByScalar(GlobalPixelMultiplier))); } public static void ChangeDoorState(int id, bool state) { switch (id){ case 0: officeScreen["office_left"].SetTexture(state ? 1 : 0); break; case 1: officeScreen["office_centre"].SetTexture(state ? 1 : 0); break; case 2: officeScreen["office_right"].SetTexture(state ? 1 : 0); break; } } public static void ChangeMonitorState(bool state) { Screen.SetScreen(state ? ScreenTypes.CAMERAS : ScreenTypes.OFFICE); } }