/*


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


*/

//          naytahiscoret.cpp

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

//hiscoreruutu
void naytahiscoret(bool fadeus) {
     //Musiikkia!
     if(Mix_PlayingMusic() == 0) soitamusiikki(menumusiikki, -1);
     
     bool pois1 = false; //aloita poistuminen
     bool pois2 = false; //ulos loopista!
     float kasautuminen = 0;
     short int valinta = 0;
     short int prewvalinta = 0;
     
     char fnimet[10][20];
     char fpisteet[10][20];
     if(!avaahiscore()) { //tiedostoa ei voinut avata
                 luouusihiscoref(); //tehdään uusi
                 avaahiscore(); //avataan uudelleen
     }
     if(tiedosto != NULL) {
                 //luetaan tiedosto
                 for(int i=0;i<10;i++) {
                         fgets(fnimet[i], 20, tiedosto);
                         fgets(fpisteet[i], 20, tiedosto);
                 }
                 //suljetaan
                 fclose(tiedosto);
     }
     
     //luodaan taustat
     if(fadeus) {
                //piirretään alkumenu tempruudulle
                piirtokohta = tempruutu;
                piirrakuva2(menutausta, 0, 0);
                piirrakuva(menunappinew1, 400, 175);
                piirrakuva(menunappisettings1, 400, 275);
                piirrakuva(menunappicredits1, 400, 375);
                piirrakuva(menunappiexit1, 400, 475);
     }
     piirtokohta = tempruutu2;
     piirrakuva2(tempruutu, 0, 0);
     SDL_SetAlpha(valkoinenfade, SDL_SRCALPHA, 235);
     piirrakuva2(valkoinenfade, 0, 0);
     piirtokohta = ruutu;
     
     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;
                 
                 //lasketaan kasautuminen
                 if(!pois1) kasautuminen++;
                 else kasautuminen--;
                 if(pois1 && kasautuminen < 1) pois2 = true;
                 if(kasautuminen > 20) fadeus = false;
                 
                 //testataan onko hiiri nappien päällä
                 if(kasautuminen > 20 && hiirix < 150 && hiiriy > 550) valinta = -1; //back-nappi
                 else valinta = 0;
                 
                 //testataan irroitettiinko hiiri napin päällä
                 if(kasautuminen > 20 && valinta != 0 && hiiriprewekanappi && !hiiriekanappi) {
                           pois1 = true;
                           menuvalinta = 0;
                           if(kasautuminen > 20) kasautuminen = 20;
                           soitaaani(nappi2); //ääni
                 }
                 
                 //nappiäänet
                 if(hiiriekanappi && !hiiriprewekanappi && valinta != 0) soitaaani(nappi1);
                 else if(valinta != prewvalinta && valinta != 0) {
                            if(hiiriekanappi) soitaaani(nappi1);
                            else soitaaani(nappion);
                 }
                 
                 if(!fadeus) {
                             //ESC- ja ENTER-nappi
                             if(pelaajaninputit[SDLK_ESCAPE] || pelaajaninputit[SDLK_RETURN]) {
                                               if(menuvalinta != 0) soitaaani(nappi2); //ääni
                                               pois1 = true;
                                               menuvalinta = 0;
                                               if(kasautuminen > 20) kasautuminen = 20;
                             }
                 }
                 
                      //Piirretään kaikki
                 if(kasautuminen < 20 && !fadeus) { //fadetaan tausta
                            piirrakuva2(tempruutu, 0, 0);
                            SDL_SetAlpha(valkoinenfade, SDL_SRCALPHA, int(round(kasautuminen * 11.75)));
                            piirrakuva2(valkoinenfade, 0, 0);
                 }
                 else piirrakuva2(tempruutu2, 0, 0);
                 piirrakuva(otsikko, 400, 50);
                 if(fadeus) {
                            SDL_SetAlpha(valkoinenfade, SDL_SRCALPHA, int(round(255 - kasautuminen * 12.75)));
                            piirrakuva2(valkoinenfade, 0, 0);
                 }
                 //napit
                 if(kasautuminen < 20) piirrakuva(nappitakaisin[0], 75, 775 - 10 * kasautuminen);
                 else if(valinta == -1 && hiiriprewekanappi) piirrakuva(nappitakaisin[2], 75, 575);
                 else if(valinta == -1) piirrakuva(nappitakaisin[1], 75, 575);
                 else piirrakuva(nappitakaisin[0], 75, 575);
                 //itse hiscoret
                 if(kasautuminen < 20) {
                                 piirrateksti(nykyinenkartta, 800 - 32.5 * kasautuminen, 151, 0, 0);
                                 for(int i=0;i<10;i++) piirrateksti(fnimet[i], 800 - 32.5 * kasautuminen, 32 * i + 230, 1, 0);
                                 for(int i=0;i<10;i++) piirrateksti(fpisteet[i], 1300 - 32.5 * kasautuminen, 32 * i + 230, 1, 2);
                 }
                 else {
                                 piirrateksti(nykyinenkartta, 150, 151, 0, 0);
                                 for(int i=0;i<10;i++) piirrateksti(fnimet[i], 150, 32 * i + 230, 1, 0);
                                 for(int i=0;i<10;i++) piirrateksti(fpisteet[i], 650, 32 * i + 230, 1, 2);
                 }
                 //loput
                 if(showfpseverywhere == 2) piirraexpluku(fps, 7);
                 piirrakuva2(menutahtain, hiirix - 1, hiiriy - 1);
                 
                 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
    }
}
