/*=============================================================================
Martin Robinson
lab 13 introduction à SDL
s'introduire à SDL, du moin prouver que je sais où je m'en vais en
faisant les lab le plus possible comme demandé
===============================================================================
Preprocesseur
=============================================================================*/
#include <iostream>
using namespace std;
#include "sdl/SDL.h"

#include "../lib/sdlMR.hpp"
/*=============================================================================
programme principal
=============================================================================*/
int main(int argc, char* argv[])
{
    //===========================================================Initialisation
	SDL_Surface *ecran,
				*image,
				*icone;
	int iContinuer = 1;			//flag pour la fin de la boucle
	SDL_Event event;			//événement capté par SDL_WaitEvent

	if(SDL_Init(SDL_INIT_VIDEO) == -1)	//evenement
	{
		cout << "Erreur lors de l'initialisation de la SDL", SDL_GetError();
		return EXIT_FAILURE;
	}
	//if (! (ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE)))
	if(!(ecran = SDL_SetVideoMode(800,600,32,SDL_HWSURFACE | SDL_RESIZABLE| SDL_DOUBLEBUF)))
	{
		cout << "Erreur lors de l'initialisation de la surface desinable", SDL_GetError();
		exit(EXIT_FAILURE);
	}

	//icone = SDL_LoadBMP("zozor_icone.bmp");
	icone = ouvrireImage<0,0,0>("zozor_icone.bmp");

	SDL_WM_SetCaption("Le titre de ma fenêtre",NULL);
	SDL_WM_SetIcon(icone, NULL);
	SDL_EnableKeyRepeat(10, 10);

	//image = SDL_LoadBMP("zozor.bmp");
	image = ouvrireImage<0,0,0>("zozor.bmp");
	SDL_Rect positionBonhomme;		//position du personnage à l’écran
	positionBonhomme.x = ecran->w / 2 - image->w / 2;
	positionBonhomme.y = ecran->h / 2 - image->h / 2;



	//============================================================boucle principale
	while(iContinuer)
	{
		SDL_WaitEvent(&event);
		switch(event.type)		//selon le type d’événement
		{
		case SDL_QUIT:	//si c’est le x de la fenêtre
			iContinuer = 0;
        case SDL_KEYDOWN: /* Si appui d'une touche on ferme la fenêtre*/
			switch (event.key.keysym.sym)
			{
				case SDLK_ESCAPE: // Appui sur Echap, arrête le programme
					iContinuer = 0;
					break;
			}
		case SDL_MOUSEBUTTONUP:
			if (event.button.button == SDL_BUTTON_RIGHT) //On stop le programme 
				iContinuer = 0; 				//si on a fait un clic droit
			break;
		case SDL_MOUSEMOTION:
            positionBonhomme.x = event.button.x-(image->w/2); /* On change les coordonnées de Zozor */
            positionBonhomme.y = event.button.y-(image->h/2);
            break;
		}

		SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 17, 206, 112));
		SDL_BlitSurface(image, NULL, ecran, &positionBonhomme);
		SDL_Flip(ecran);
	}



    SDL_Quit(); // Arrêt de la SDL (libération de la mémoire).
    return EXIT_SUCCESS;
}