/*


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


*/

//          splash.cpp

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

//tähän funktioon on sisällytetty:
//        latausajan näyttö
//        latausruudun fadeus
//        splashruutu
void splashruutu() {
     //kauanko kesti ladata
     float loadingloppuaika = SDL_GetTicks()/* - alkuaika*/;
     sprintf(viesti, "It took %.0f milliseconds to load the game\n", loadingloppuaika);
     log(viesti);
     if(showloadingtime != 0) {
               piirtokohta = tempruutu;
               piirrafloatluku(loadingloppuaika / 1000, 700, 500);
               //latausruutu(-1); //kertoo montako kertaa tätä funktiota kutsuttiin
               piirtokohta = ruutu;
               piirrakuva2(tempruutu, 0, 0);
               SDL_Flip(ruutu);
               SDL_Delay(1000);
     }
     if(fasterloading == 0) {
               for(int i=0;i<=40;i++) {
                        alkuaika = SDL_GetTicks();
                        SDL_SetAlpha(valkoinenfade, SDL_SRCALPHA, int(round(6.375 * i)));
                        piirrakuva2(tempruutu, 0, 0);
                        piirrakuva2(valkoinenfade, 0, 0);
                        SDL_Flip(ruutu);
                        SDL_Event tapahtuma; //hoidetaan tapahtumat
                        while (SDL_PollEvent (&tapahtuma)) { }
                        loppuaika = SDL_GetTicks();
                        frame = loppuaika - alkuaika;
                        if(frame < framerate) SDL_Delay(framerate - frame);
               }
     }
     if(nosplash == 0) {
     //tämän soittamisen kanssa oli aika paljon ongelmia, mutta nyt se ainakin toimii
               soitamusiikki(menuintromusiikki, 1); //kuitenkin tämä soi vain yhden kerran
               soitamusiikki(menuintromusiikki, 1);
               SDL_Delay(500);
               int i = 0;
               while(i <= 6500) {
                        alkuaika = SDL_GetTicks();
                        if(Mix_PlayingMusic() == 0) soitamusiikki(menumusiikki, -1);
                        pelaajaninputit = SDL_GetKeyState(NULL);
                        
                        if(i < 2000) SDL_SetAlpha(slpash, SDL_SRCALPHA, int(round(0.1275 * i)));
                        else if(i > 4500) SDL_SetAlpha(slpash, SDL_SRCALPHA, int(round(828.75 - 0.1275 * i)));
                        else SDL_SetAlpha(slpash, SDL_SRCALPHA, 255);
                        
                        //ESC-, ENTER- ja SPACE-napit sekä hiiren eka nappi
                        if(pelaajaninputit[SDLK_ESCAPE] || pelaajaninputit[SDLK_RETURN]  || pelaajaninputit[SDLK_SPACE] || SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1)) {
                                          Mix_HaltMusic();
                                          soitamusiikki(menumusiikki, -1);
                                          i = 6501;
                        }
                        
                        //piirretään
                        SDL_FillRect(ruutu, NULL, valkoinen);
                        piirrakuva(slpash, 400, 300);
                        
                        if(i < 2000) piirrateksti(versio, 950 - 0.08 * i, 569, 2, 2);
                        else if(i > 5500) piirrateksti(versio, 350 + 0.08 * i, 569, 2, 2);
                        else piirrateksti(versio, 790, 569, 2, 2);
                        
                        SDL_Flip(ruutu);
                        
                        //hoidetaan tapahtumat
                        if(hoidatapahtumat()) i = 6501;
                        
                        SDL_Delay(1); //ei käytetä sentään koko prossua
                        i+= SDL_GetTicks() - alkuaika;
               }
     }
     SDL_FreeSurface(slpash);
}
