/// <summary> /// Performs menu logic, and tries to return choosen /// levelQueue, if not choosen returns empty queue to give another frame in menu /// </summary> /// <returns></returns> public Queue <(string name, string arg)> MenuLogic(RenderWindow window) { var levelNamesQueue = new Queue <(string name, string arg)>(); var mousePosition = Mouse.GetPosition(window); mousePointer.HoversOverItemOff(); foreach (var button in buttons) { if (!button.BoundingBox.Contains(mousePosition.X, mousePosition.Y)) { continue; } mousePointer.HoversOverItemOn(); if (!Mouse.IsButtonPressed(Mouse.Button.Left)) { continue; } switch (button.Label) { case "START": levelNamesQueue.Enqueue((name: "SimpleTextScreen", arg: "your journey begins")); levelNamesQueue.Enqueue((name: "SimpleTextScreen", arg: "estimated travel time to the next level: 60 seconds")); levelNamesQueue.Enqueue((name: "Level1", arg: "SendPlayerAsArgument")); levelNamesQueue.Enqueue((name: "SimpleTextScreen", arg: "INCOMING!")); levelNamesQueue.Enqueue((name: "SimpleTextScreen", arg: "from EVERY SIDE!")); levelNamesQueue.Enqueue((name: "Level2", arg: "SendPlayerAsArgument")); levelNamesQueue.Enqueue((name: "SimpleTextScreen", arg: "thanks to all those powerups")); levelNamesQueue.Enqueue((name: "SimpleTextScreen", arg: "you have EVOLVED")); levelNamesQueue.Enqueue((name: "SimpleTextScreen", arg: "you will need those new powers")); levelNamesQueue.Enqueue((name: "SimpleTextScreen", arg: "RIGHT NOW")); levelNamesQueue.Enqueue((name: "Level3", arg: "SendPlayerAsArgument")); levelNamesQueue.Enqueue((name: "SimpleTextScreen", arg: "you found him")); levelNamesQueue.Enqueue((name: "SimpleTextScreen", arg: "your final enemy")); levelNamesQueue.Enqueue((name: "SimpleTextScreen", arg: "THE TRASH BOSS")); levelNamesQueue.Enqueue((name: "LevelBoss", arg: "SendPlayerAsArgument")); levelNamesQueue.Enqueue((name: "SimpleTextScreen", arg: "you did it!")); levelNamesQueue.Enqueue((name: "SimpleTextScreen", arg: "you saved THE UNIVERSE!")); levelNamesQueue.Enqueue((name: "SimpleTextScreen", arg: "Congratulations!")); break; case "HOW TO PLAY": levelNamesQueue.Enqueue((name: "SimpleImageScreen", arg: Resources.HowToPlayBG)); break; case "GRAPHICS": levelNamesQueue.Enqueue((name: "GraphicsSettings", arg: "")); break; case "CREDITS": levelNamesQueue.Enqueue((name: "SimpleImageScreen", arg: Resources.CreditsBG)); break; case "EXIT": window.Close(); break; } } return(levelNamesQueue); }
public void LevelLogic(ref RenderWindow window) { var mousePosition = Mouse.GetPosition(window); mousePointer.HoversOverItemOff(); foreach (var button in buttons) { if (!button.BoundingBox.Contains(mousePosition.X, mousePosition.Y)) { continue; } mousePointer.HoversOverItemOn(); if (!Mouse.IsButtonPressed(Mouse.Button.Left) || clock.ElapsedTime.AsMilliseconds() <= 100) { continue; } window.Close(); switch (button.Label) { case "1920x1080": window = new RenderWindow(new VideoMode(1920, 1080), "ASTROMARINES - FULL SCREEN", Styles.Fullscreen); break; case "1280x720": window = new RenderWindow(new VideoMode(1280, 720), "ASTROMARINES - FULL SCREEN", Styles.Fullscreen); break; case "1366x768": window = new RenderWindow(new VideoMode(1366, 768), "ASTROMARINES - FULL SCREEN", Styles.Fullscreen); break; case "1280x800": window = new RenderWindow(new VideoMode(1280, 800), "ASTROMARINES - FULL SCREEN", Styles.Fullscreen); break; case "1024x600": window = new RenderWindow(new VideoMode(1024, 600), "ASTROMARINES - FULL SCREEN", Styles.Fullscreen); break; case "Windowed 1920x1080": window = new RenderWindow(new VideoMode(1920, 1080), "ASTROMARINES", Styles.None); break; case "Windowed 1366x768": window = new RenderWindow(new VideoMode(1366, 768), "ASTROMARINES", Styles.Close); break; case "Windowed 1280x720": window = new RenderWindow(new VideoMode(1280, 720), "ASTROMARINES", Styles.Close); break; case "Windowed 1280x800": window = new RenderWindow(new VideoMode(1280, 800), "ASTROMARINES", Styles.Close); break; case "Windowed 1024x600": window = new RenderWindow(new VideoMode(1024, 600), "ASTROMARINES", Styles.Close); break; } window.KeyPressed += Window_KeyPressed; window.Closed += OnClose; WindowProperties.WindowWidth = window.Size.X; WindowProperties.WindowHeight = window.Size.Y; window.SetFramerateLimit(60); window.SetMouseCursorVisible(false); window.SetVerticalSyncEnabled(true); HasLevelEnded = true; Mouse.SetPosition(new Vector2i((int)WindowProperties.WindowWidth / 2, (int)WindowProperties.WindowHeight / 2), window); } }