예제 #1
0
        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();
        }
예제 #2
0
 static void StartSimulation(SimulationSettings settings)
 {
     sim = new Simulation(settings);
 }