private static void Initialize() { // Initialize graphics, create window & renderer etc. Graphics.InitGraphics(); Window window = new Window("EvoBox", 100, 100, SCREEN_WIDTH, SCREEN_HEIGHT); Renderer renderer = new Renderer(window); Globals.window = window; Globals.renderer = renderer; Globals.eventQueue = new Queue <SDL.SDL_Event>(); Surface icon = new Surface("EvoBoxIcon.png"); window.SetWindowIcon(icon); font = new Font( "playfair-display/PlayfairDisplay-Regular.ttf", 128 ); // Create the UI. labels = new Label[] { // Titel label. new Label(3 / 8.0, 0, 1 / 4.0, 1 / 8.0, "EvoBox", font), // "Jumpmen" header label. new Label(3 / 40.0, 1 / 5.0, 1 / 3.0, 1 / 10.0, "JUMPMEN", font), // "Enviroment" header label. new Label(1 / 2.0, 1 / 5.0, 4 / 9.0, 1 / 10.0, "ENVIRONMENT", font), // Jumpman slider labels. new Label(6 / 40.0, 6 / 21.0, 1 / 5.0, 1 / 20.0, "idle cost", font), new Label(5 / 40.0, 8 / 21.0, 1 / 4.0, 1 / 20.0, "speed cost", font), new Label(6 / 40.0, 10 / 21.0, 1 / 5.0, 1 / 20.0, "size cost", font), new Label(3 / 40.0, 12 / 21.0, 1 / 3.0, 1 / 20.0, "mutation chance", font), // Enviroment slider labels. new Label(25 / 40.0, 6 / 21.0, 1 / 5.0, 1 / 20.0, "food rate", font), }; sliders = new Slider[] { // Idle cost slider. new Slider(3 / 40.0, 1 / 3.0, 1 / 3.0, 1 / 30.0, 0, 10, 5), // Speed cost slider. new Slider(3 / 40.0, 3 / 7.0, 1 / 3.0, 1 / 30.0, 0.1, 3, 1), // Size cost slider. new Slider(3 / 40.0, 11 / 21.0, 1 / 3.0, 1 / 30.0, 1, 3, 2), // Mutation chance slider. new Slider(3 / 40.0, 13 / 21.0, 1 / 3.0, 1 / 30.0, 0, 5, 1), // Food spawn rate slider. new Slider(22 / 40.0, 1 / 3.0, 1 / 3.0, 1 / 30.0, 0, 2, 1) }; buttons = new Button[] { new Button(3 / 24.0, 40 / 48.0, 1 / 6.0, 1 / 10.0, "quit", font, () => quit = true), new Button(10 / 24.0, 40 / 48.0, 1 / 6.0, 1 / 10.0, "reset", font, () => SettingsToSliders(SimulationSettings. DefaultSettings())), new Button(17 / 24.0, 40 / 48.0, 1 / 6.0, 1 / 10.0, "start", font, () => StartSimulation(SlidersToSettings())) }; iUiElements = sliders .OfType <InteractabelUIElement>() .Concat(buttons) .ToArray(); uiElements = sliders .OfType <UIElement>() .Concat(buttons) .Concat(labels) .ToArray(); }
static void StartSimulation(SimulationSettings settings) { sim = new Simulation(settings); }