/*


    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/>.


*/

//          gameover.cpp

#include <stdlib.h>
#include <SDL/SDL_rotozoom.h>
#include <time.h>
#include "global.hpp"

//peli pysähtyy ja game over tulee
void gameoverf(bool hiscoret) {
     //Pysäytetään musiikki
     Mix_HaltMusic();
     soitaaani(loppubasso); //ääni
     
     //alustetaan satunnaisluvut
     time_t siemen;
     time(&siemen);
     srand(siemen);
     
     bool pois = false;
     bool meneescmenuun = false;
     float kasautuminen = 0;
     if(hiscoret) menuvalinta = 102; //mennään lopuksi statseihin
     else menuvalinta = 106;
     bool vapautaesc = false;
     
     piirtokohta = ruutu;
     
     SDL_FreeSurface(gameoverteksti);
     SDL_Surface *tempgameoverteksti = lataapngalpha("images/game_over.png");
     float random = rand() % 11;
     if(rand() % 2 == 0) gameoverteksti = rotozoomSurface(tempgameoverteksti, random / 2 + 7, 1, 1);
     else gameoverteksti = rotozoomSurface(tempgameoverteksti, 0 - (random / 2 + 7), 1, 1);
     SDL_FreeSurface(tempgameoverteksti);
     
     const float tekstikohtax = rand() % 200 + 300;
     const float tekstikohtay = rand() % 50 + 75;
     
     while(!pois) {
                 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;
                 
                 //lasketaan kasautuminen
                 kasautuminen++;
                 if(kasautuminen > 200) pois = true;
                 if(kasautuminen > 160 && kasautuminen < 200) SDL_SetAlpha(valkoinenfade, SDL_SRCALPHA, int(round(6.375 * kasautuminen - 1020)));
                 else SDL_SetAlpha(valkoinenfade, SDL_SRCALPHA, 255);
                 if(kasautuminen > 20 && kasautuminen < 40) SDL_SetAlpha(gameoverfade, SDL_SRCALPHA, int(round(6.4 * kasautuminen - 128)));
                 else SDL_SetAlpha(gameoverfade, SDL_SRCALPHA, 128);
                 if(kasautuminen == 40) {
                                 piirtokohta = tempruutu;
                                 piirrakuva2(gameoverfade, gameoverkohta - 650, 0);
                                 piirtokohta = ruutu;
                 }
                 
                 //ESC-nappi
                 if(!vapautaesc && !pelaajaninputit[SDLK_ESCAPE]) vapautaesc = true; //vapautetaan esc-nappi
                 if(pelaajaninputit[SDLK_ESCAPE] && vapautaesc) {
                           soitaaani(nappi2); //ääni
                           meneescmenuun = true;
                           piirtokohta = tempruutuesc; //piirretäänkin kaikki tempruudulle, kun mennään escmenuun
                 }
                 
                 if(kasautuminen == 80) soitaaani(gameoverhit); //ääni
                 
                      //Piirretään kaikki
                 piirrakuva2(tempruutu, 0, 0);
                 if(kasautuminen > 80) piirrakuva(gameoverteksti, tekstikohtax, tekstikohtay);
                 //loput
                 if(showfpseverywhere == 2) piirraexpluku(fps, 7);
                 if(kasautuminen > 20 && kasautuminen < 40) piirrakuva2(gameoverfade, gameoverkohta - 650, 0);
                 if(kasautuminen > 160) piirrakuva2(valkoinenfade, 0, 0);
                 
                 SDL_Flip(ruutu);
                 
                 //Lopussa tehtävät asiat
                      if(hoidatapahtumat()) pois = true;
                      laskefps();
                      
     //mennään escmenuun
     if(meneescmenuun) {
            meneescmenuun = false;
            vapautaesc = false; //lukitaan esc-nappi
            if(escmenu()) { //poistutaan menuun
                 pois = true;
                 menuvalinta = -1;
            }
            if(kokonaanpois) { //poistutaan kokonaan
                 pois = true;
                 menuvalinta = -1;
                 kokonaanpois = true;
            }
     }
    //tähän loppuu looppi
    }
}
