|
@@ -0,0 +1,139 @@
|
|
|
+#include <iostream>
|
|
|
+#include <SDL.h>
|
|
|
+
|
|
|
+#include "Sounderer.h"
|
|
|
+
|
|
|
+int main ( int argc, char** argv )
|
|
|
+{
|
|
|
+ /// [1] Démarrage
|
|
|
+ // [1.1] Démarrages SDL
|
|
|
+ if ( SDL_Init( SDL_INIT_VIDEO ) < 0)
|
|
|
+ {
|
|
|
+ std::cout << "Impossible d'initialiser la SDL: " << SDL_GetError() << std::endl;
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ // [1.2] Préparation de fermeture
|
|
|
+ atexit(SDL_Quit);
|
|
|
+ bool done = false;
|
|
|
+
|
|
|
+ // [1.3] Para-fenêtre
|
|
|
+ SDL_WM_SetCaption("Tests du son", 0);
|
|
|
+
|
|
|
+ /// [2] Préparation des composants
|
|
|
+ // [2.1] Préparation de la fenêtre
|
|
|
+ SDL_Surface* screen = SDL_SetVideoMode(640, 480, 32,
|
|
|
+ SDL_HWSURFACE|SDL_DOUBLEBUF);
|
|
|
+ if ( !screen )
|
|
|
+ {
|
|
|
+ std::cout << "Impossible de crée la fenêtre : " << SDL_GetError() << std::endl;
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ // [2.2] Préparation du son
|
|
|
+ Sounderer soundPlayer("Sons/");
|
|
|
+ if (soundPlayer.init() == false) done = true;
|
|
|
+ else
|
|
|
+ {
|
|
|
+ soundPlayer.preLoad("growl1", EXT_OGG);
|
|
|
+ soundPlayer.preLoad("breathe1", EXT_OGG);
|
|
|
+ soundPlayer.preLoad("fire", EXT_OGG);
|
|
|
+ soundPlayer.preLoad("metal1", EXT_OGG);
|
|
|
+ }
|
|
|
+
|
|
|
+ // [2.3] Mesures de performance
|
|
|
+ /*Uint32 tempsDepart, difference, moyenne, nbTests(100000);
|
|
|
+ tempsDepart = SDL_GetTicks();
|
|
|
+ for (unsigned int i(0); i<nbTests; i++)
|
|
|
+ {
|
|
|
+ //quelque chose à mesurer
|
|
|
+ }
|
|
|
+ difference = SDL_GetTicks() - tempsDepart;
|
|
|
+ moyenne = difference / nbTests;
|
|
|
+ std::cout << "L'appel de play() a duré " <<difference<<" / "<<nbTests<<" soit "<<moyenne<<"ms en moyenne."<<std::endl;*/
|
|
|
+
|
|
|
+ /// [3] Boucle principale
|
|
|
+ while (!done)
|
|
|
+ {
|
|
|
+ // [3.1] Gestion évènements
|
|
|
+ SDL_Event event;
|
|
|
+ while (SDL_PollEvent(&event))
|
|
|
+ {
|
|
|
+ switch (event.type)
|
|
|
+ {
|
|
|
+ case SDL_QUIT:
|
|
|
+ done = true;
|
|
|
+ break;
|
|
|
+ case SDL_KEYDOWN:
|
|
|
+ switch (event.key.keysym.sym)
|
|
|
+ {
|
|
|
+ case SDLK_ESCAPE:
|
|
|
+ done = true;
|
|
|
+ break;
|
|
|
+ case SDLK_b:
|
|
|
+ soundPlayer.play("breathe1");
|
|
|
+ break;
|
|
|
+ case SDLK_e:
|
|
|
+ soundPlayer.fadePlay("effect", 3692, INFINITY_LOOP);
|
|
|
+ break;
|
|
|
+ case SDLK_f:
|
|
|
+ soundPlayer.play("fire");
|
|
|
+ break;
|
|
|
+ case SDLK_g:
|
|
|
+ soundPlayer.play("growl1");
|
|
|
+ break;
|
|
|
+ case SDLK_h:
|
|
|
+ soundPlayer.play("hou", 2);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ soundPlayer.play("metal1", INFINITY_LOOP);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case SDL_KEYUP:
|
|
|
+ switch (event.key.keysym.sym)
|
|
|
+ {
|
|
|
+ case SDLK_ESCAPE:
|
|
|
+ done = true;
|
|
|
+ break;
|
|
|
+ case SDLK_b:
|
|
|
+ soundPlayer.stop("breathe1");
|
|
|
+ break;
|
|
|
+ case SDLK_e:
|
|
|
+ soundPlayer.stop("effect");
|
|
|
+ break;
|
|
|
+ case SDLK_f:
|
|
|
+ soundPlayer.stop("fire");
|
|
|
+ break;
|
|
|
+ case SDLK_g:
|
|
|
+ soundPlayer.stop("growl1");
|
|
|
+ break;
|
|
|
+ case SDLK_h:
|
|
|
+ soundPlayer.stop("hou");
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ soundPlayer.stop("metal1");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ } // end switch event type
|
|
|
+ } // end of message processing
|
|
|
+
|
|
|
+ // [3.2] Calculs
|
|
|
+
|
|
|
+
|
|
|
+ // [3.3] Dessin des composants
|
|
|
+ SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 150, 55, 12));
|
|
|
+
|
|
|
+ //
|
|
|
+
|
|
|
+ SDL_Flip(screen);
|
|
|
+ } //fin bcl principale
|
|
|
+
|
|
|
+ ///[4] Destruction des composants
|
|
|
+ SDL_FreeSurface(screen);
|
|
|
+
|
|
|
+
|
|
|
+ std::cout << "Aucune erreur détectée." << std::endl;
|
|
|
+ return 0;
|
|
|
+}
|