using System; 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("office_left", new UIElement([officeAtlas[3], officeAtlas[0]], Point.Zero)); officeScreen.AddElement("office_centre", new UIElement([officeAtlas[4], officeAtlas[1]], new Point(200, 0))); officeScreen.AddElement("office_right", new UIElement([officeAtlas[5], officeAtlas[2]], new Point(440, 0))); // officeScreen.AddElement("test", // new UIElement(testAtlas[0], Point.Zero) // {Pressable = true, OnMousePress = () => Console.WriteLine("Pressed!")} // ); monitorScreen.AddElement("screen", new UIElement(monitorAtlas[0], Point.Zero)); monitorScreen.AddElement("view-frame", new UIElement(monitorAtlas[1], new Point(62, 55))); monitorScreen.AddElement("map-frame", new UIElement(monitorAtlas[2], new Point(334, 135))); monitorScreen.AddElement("map", new UIElement(monitorAtlas[3], new Point(334, 135))); for (int i = 0; i < 5; i++){ for (int j = 0; j < 5; j++){ int i1 = i; int j1 = j; monitorScreen.AddElement($"room{i}-{j}", new UIElement(new Point(336 + (32 * i), 144 + (32 * j)), new Point(367 + (32 * i), 175 + (32 * j))) {Pressable = true, OnMousePress = (() => CommandManager.SendChangeCamera(i1, j1))}); } } } 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); } }