using System;
using System.Collections.Generic;
using Jypeli;
using Jypeli.Assets;
using Jypeli.Controls;
using Jypeli.Widgets;

public class ClearAllTest : PhysicsGame
{
    public override void Begin() { NaytaAlkuValikko(); }

    void NaytaAlkuValikko()
    {
        ClearAll();

        MultiSelectWindow msw = new MultiSelectWindow("Minun paras peli",
                                                      "Aloita peli",
                                                      "Lopeta peli");

        msw.AddItemHandler(0, NaytaPeli);
        msw.AddItemHandler(1, Exit);

        Add(msw);
    }

    void NaytaPeli()
    {
        // ClearAll tyhjentää KAIKEN: näppäimistöasettelut, oliot, painovoimat, IntMeterit, jne
        // Siispä peli voidaan alustaa ihan tyhjästä
        ClearAll();

        Gravity = new Vector(0, 0);

        Timer.CreateAndStart(0.5, delegate
        {
            Vector randomPosition = RandomGen.NextVector(Level.BoundingRect);
            Vector randomDirection = RandomGen.NextVector(1, 10000);
            double r = RandomGen.NextDouble(1, 100);

            PhysicsObject ball = new PhysicsObject(r * 2, r * 2, Shape.Circle);
            ball.Position = randomPosition;
            ball.Color = RandomGen.NextColor();
            Add(ball);
            ball.Push(randomDirection);
        });

        Keyboard.ListenWSAD(ButtonState.Down,
                            delegate(Vector suunta) { Gravity += 10 * suunta; },
                            "Liikuta painovoimaa");

        // Pelissä Esc poistuu alkuvalikkoon, eli lopettaa pelin
        // Vaihtoehtoisesti kutusu ConfirmExit tai Exit sulkeakseen koko peli
        Keyboard.Listen(Key.Escape, ButtonState.Pressed, NaytaAlkuValikko,
                        "Poistu alkuvalikkoon");

        Camera.ZoomToLevel();
    }
}