//
// Deus Hax (working title)
// Copyright (c) 2010 Sam Hocevar <sam@hocevar.net>
//

#if defined HAVE_CONFIG_H
#   include "config.h"
#endif

#include <SDL.h>

#include "sdlinput.h"

/*
 * SDL Input implementation class
 */

class SdlInputData
{
    friend class SdlInput;

private:
    Game *game;
};

/*
 * Public SdlInput class
 */

SdlInput::SdlInput(Game *game)
{
    SDL_Init(SDL_INIT_TIMER);

    data = new SdlInputData();
    data->game = game;
}

Asset::Group SdlInput::GetGroup()
{
    return GROUP_BEFORE;
}

void SdlInput::TickGame(float delta_time)
{
    Asset::TickGame(delta_time);

    if (data->game->Finished())
        destroy = 1;

    /* Handle mouse input */
    int mx, my;
    SDL_GetMouseState(&mx, &my);
    data->game->SetMouse(mx * (640 - 32) / 320 - 320, my * (480 - 32) / 240 - 240);

    /* Handle keyboard and WM input */
    SDL_Event event;
    while (SDL_PollEvent(&event))
    {
        if (event.type == SDL_QUIT)
            data->game->Quit();
        if (event.type == SDL_KEYDOWN)
        {
            if (event.key.keysym.sym == SDLK_ESCAPE)
                data->game->Quit();
#if 0
            else if (event.key.keysym.sym == SDLK_RETURN)
                video->FullScreen();
#endif
        }
    }

}

SdlInput::~SdlInput()
{
    delete data;
}