using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Graphics;



class Input
{
    private KeyboardState state = Keyboard.GetState();
    private GraphicsDeviceManager graphics;
    private Vector2 Size;
    private int tileSize;
    private int Spacing;

    public void init(GraphicsDeviceManager Graphics, Vector2 size, int TileSize, int SPacing)
    {
        graphics = Graphics;
        tileSize = TileSize;
        Spacing = SPacing;
        Size = size;
    }

    public int changeSpeed(int speed)
    {
        KeyboardState state = Keyboard.GetState();
        if (state.IsKeyDown(Keys.Right))
        {
            speed++;
        }
        
        if (state.IsKeyDown(Keys.Left) && speed > 0)
        {
            speed--;
        }
        return speed;
    }

    private Vector2 changeSize()
    {
        KeyboardState state = Keyboard.GetState();
        if (state.IsKeyDown(Keys.D) && Size.X < 100)
        {
            Size.X++;
            graphics.PreferredBackBufferWidth = (tileSize + Spacing) * (int)Size.X - Spacing;
        }

        if (state.IsKeyDown(Keys.A) && Size.X > 2)
        {
            Size.X--;
            graphics.PreferredBackBufferWidth = (tileSize + Spacing) * (int)Size.X - Spacing;
        }

        if (state.IsKeyDown(Keys.W) && Size.Y < (GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height / tileSize) - 125 / tileSize)
        {
            Size.Y++;
            graphics.PreferredBackBufferHeight = (tileSize + Spacing) * (int)Size.Y - Spacing + 100;
        }

        if (state.IsKeyDown(Keys.S) && Size.Y > 2)
        {
            Size.Y--;
            graphics.PreferredBackBufferHeight = (tileSize + Spacing) * (int)Size.Y - Spacing + 100;
        }
        return Size;
    }

    public void controlWindowSize()
    {
        if (Size.X * tileSize + 5 > GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width)
        {
            tileSize--;
        }
        if (Size.X * tileSize - 5 < GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width && tileSize < 56)
        {
            tileSize++;
        }
        changeSize();
        graphics.ApplyChanges();
    }
    
    public int getTileSize()
    {
        return tileSize;
    }

    public int getSpacing()
    {
        return Spacing;
    }

    public Vector2 getSize()
    {
        return Size;
    }

    public void setTileSize(int newTileSize)
    {
        tileSize = newTileSize;
    }
}