/*


    Evolute version 0.7
    Copyright (C) 2010 Antti Vainio

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.


*/

//          esc-nappi.cpp

#include <math.h>
#include "global.hpp"

//menu, joka ilmestyy esciä painettaessa
bool escmenu() { //true = poistu menuun
     bool pois1 = false; //aloita poistuminen
     bool pois2 = false; //ulos loopista!
     bool vapautanapit = false; //napit ei toimi ennen kuin niitä ei paineta
     short int valinta = 0;
     short int prewvalinta = 0;
     float kasautuminen = -1;
     
     //piirretään tavaraa tempruudulle
     SDL_SetAlpha(mustafade, SDL_SRCALPHA, 200);
     piirrakuva2(mustafade, 0, 0);
     piirrakuva(escmenutausta, 400, 300);
     piirrakuva(escmenuteksti, 400, 50);
     piirtokohta = ruutu; //piirretään taas ruudulle
     
     while(!pois2) {
                 alkuaika = SDL_GetTicks();
                 
                 //hiiri ja nappulat
                 SDL_GetMouseState(&hiirix,&hiiriy);
                 pelaajaninputit = SDL_GetKeyState(NULL);
                 if(SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1)) hiiriekanappi = true;
                 else hiiriekanappi = false;
                 //vapautetaan napit
                 if(!vapautanapit && !pelaajaninputit[SDLK_ESCAPE] && !pelaajaninputit[SDLK_RETURN]) vapautanapit = true;
                 
                 //lasketaan kasautuminen
                 kasautuminen--;
                 if(pois1 && kasautuminen < 1) pois2 = true;
                 if(kasautuminen > -1) SDL_SetAlpha(valkoinenfade, SDL_SRCALPHA, 255 - int(round(kasautuminen * 6.375)));
                 else SDL_SetAlpha(valkoinenfade, SDL_SRCALPHA, 0);
                 
                 //testataan onko hiiri nappien päällä
                 if(kasautuminen < -1 && hiirix > 250 && hiirix < 549) {
                           if(hiiriy > 239 && hiiriy < 282) valinta = 1;
                           else if(hiiriy > 317 && hiiriy < 360) valinta = 2;
                           else valinta = 0;
                 }
                 else if(kasautuminen < -1) valinta = 0;
                 
                 //testataan irroitettiinko hiiri napin päällä - sitten voidaan poistua
                 if(kasautuminen < -1 && valinta != 0 && hiiriprewekanappi && !hiiriekanappi) {
                            if(valinta == 1) pois2 = true;
                            else {
                                 pois1 = true;
                                 kasautuminen = 40;
                                 Mix_FadeOutMusic(1000);
                            }
                            soitaaani(nappi2); //ääni
                 }
                 
                 //nappiäänet
                 if(hiiriekanappi && !hiiriprewekanappi && valinta != 0 && kasautuminen < -1) soitaaani(nappi1);
                 else if(valinta != prewvalinta && valinta != 0) {
                            if(hiiriekanappi) soitaaani(nappi1);
                            else soitaaani(nappion);
                 }
                 
                 
                 if(vapautanapit && kasautuminen < -1) {
                                 if(pelaajaninputit[SDLK_ESCAPE]) { //ESC-nappi
                                                   soitaaani(nappi2); //ääni
                                                   valinta = 1;
                                                   pois2 = true;
                                 }
                                 else if(pelaajaninputit[SDLK_RETURN]) { //ENTER-nappi
                                                   soitaaani(nappi2); //ääni
                                                   valinta = 2;
                                                   pois1 = true;
                                                   kasautuminen = 40;
                                                   Mix_FadeOutMusic(1000);
                                 }
                 }
                 
                      //Piirretään kaikki
                 piirrakuva2(tempruutuesc, 0 ,0);
                 if(valinta == 1) piirrakuva(escmenunappi2, 400, 261);
                 else piirrakuva(escmenunappi1, 400, 261);
                 if(valinta == 2) piirrakuva(escmenunappi4, 400, 339);
                 else piirrakuva(escmenunappi3, 400, 339);
                 if(showfpseverywhere == 2) piirraexpluku(fps, 7);
                 piirrakuva2(menutahtain, hiirix - 1, hiiriy - 1);
                 if(kasautuminen > -1) piirrakuva2(valkoinenfade, 0, 0); //fade kaiken päälle
                 
                 SDL_Flip(ruutu);
                 
                 //Lopussa tehtävät asiat
                 if(hiiriekanappi) hiiriprewekanappi = true;
                 else hiiriprewekanappi = false;
                 prewvalinta = valinta;
                 
                      if(hoidatapahtumat()) pois2 = true;
                      laskefps();
                      
    //tähän loppuu menun looppi
    }
    if(valinta == 1) return false;
    else {
         Mix_HaltMusic(); //varmistetaan, että ei soiteta enää musiikkia
         return true;
    }
}
