/*


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


*/

//          tutorial.cpp

#include "global.hpp"

short int tutoriallaskuri;
extern short int peliaika;
extern bool crittarkkuus;
extern int expa;

//palauttaa 1, jos pitää luoda vihollinen, 2 jos pitää poistua
short int tutorial(short int vihuelossa) {
     //laskurit
     if(tutoriallaskuri == 281) {
                            if(vihuelossa == 2) tutoriallaskuri++;
     }
     else if(tutoriallaskuri == 380) {
                            if(crittarkkuus) tutoriallaskuri++;
     }
     else if(tutoriallaskuri == 391) {
                            if(vihuelossa == 2) tutoriallaskuri++;
     }
     else if(tutoriallaskuri == 410) {
                            if(vihuelossa == 2) tutoriallaskuri++;
     }
     else if(tutoriallaskuri == 451) {
                            if(expa >= 2600) tutoriallaskuri++;
     }
     else tutoriallaskuri++;
     if(tutoriallaskuri <= 450) {
                        if(aikalaskuri > 240) aikalaskuri = 200;
                        peliaika++;
     }
     
     //tapahtumat
     if(tutoriallaskuri > 140 && tutoriallaskuri < 300) {
                        piirrateksti("Shoot the enemies with mouse1.", 400, 166, 3, 1);
                        piirrateksti("Don't let them reach the bottom of the screen.", 400, 216, 3, 1);
     }
     if(tutoriallaskuri == 280) return 1;
     if(tutoriallaskuri > 340 && tutoriallaskuri < 410) {
                        piirrateksti("Keep your mouse still to get perfect accuracy.", 400, 166, 3, 1);
                        piirrateksti("With perfect accuracy you shoot critical bullets", 400, 216, 3, 1);
                        piirrateksti("that deal double damage.", 400, 266, 3, 1);
     }
     if(tutoriallaskuri == 390) return 1;
     if(tutoriallaskuri == 402) return 1;
     if(tutoriallaskuri == 449) piirtokohta = tempruutu;
     if(tutoriallaskuri == 450) {
                        if(tutorial2(0)) return 2;
     }
     if(tutoriallaskuri == 452) piirtokohta = tempruutu;
     if(tutoriallaskuri == 453) {
                        if(tutorial2(6)) return 2;
     }
     
     return 0;
}


//palauttaa true, jos pitää poistua
bool tutorial2(short int vaihe) {
     bool pois = false;
     bool meneescmenuun = false;
     short int valinta = 0;
     short int prewvalinta = 0;
     bool vapautaesc = false;
     bool vapautaenter = false;
     bool palautus = false;
     
     piirtokohta = ruutu;
     
     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;
                 
                 //testataan onko hiiri nappien päällä
                 if(vaihe == 6 && hiirix > 309 && hiirix < 491 && hiiriy > 355 && hiiriy < 395) valinta = -1;
                 else if(vaihe != 6 && hiirix > 309 && hiirix < 491 && hiiriy > 455 && hiiriy < 495) valinta = -1;
                 else valinta = 0;
                 
                 //testataan irroitettiinko hiiri napin päällä
                 if(valinta != 0 && hiiriprewekanappi && !hiiriekanappi) {
                           vaihe++;
                           if(vaihe == 5 || vaihe == 7) pois = true;
                           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(!vapautaesc && !pelaajaninputit[SDLK_ESCAPE]) vapautaesc = true; //vapautetaan esc-nappi
                 if(pelaajaninputit[SDLK_ESCAPE] && vapautaesc) { //ESC-nappi
                           soitaaani(nappi2); //ääni
                           meneescmenuun = true;
                           piirtokohta = tempruutuesc; //piirretäänkin kaikki tempruudulle, kun mennään escmenuun
                 }
                 
                 if(!vapautaenter && !pelaajaninputit[SDLK_RETURN]) vapautaenter = true; //vapautetaan enter-nappi
                 if(pelaajaninputit[SDLK_RETURN] && vapautaenter) { //ENTER-nappi
                           soitaaani(nappi2); //ääni
                           vapautaenter = false;
                           vaihe++;
                           if(vaihe == 5 || vaihe == 7) pois = true;
                 }
                 
                      //Piirretään kaikki
                 piirrakuva2(tempruutu, 0, 0);
                 //napit
                 if(vaihe == 6) {
                          if(valinta == -1 && hiiriprewekanappi) piirrakuva(tutorialcontinue[2], 400, 375);
                          else if(valinta == -1) piirrakuva(tutorialcontinue[1], 400, 375);
                          else piirrakuva(tutorialcontinue[0], 400, 375);
                 }
                 else {
                          if(valinta == -1 && hiiriprewekanappi) piirrakuva(tutorialcontinue[2], 400, 475);
                          else if(valinta == -1) piirrakuva(tutorialcontinue[1], 400, 475);
                          else piirrakuva(tutorialcontinue[0], 400, 475);
                 }
                 //piirretään eri vaiheet
                 switch(vaihe) {
                               case 0:
                                    piirrakuva(tutorialnuoli, 175, 75);
                                    piirrakuva(tutorialnuoli, 175, 125);
                                    piirrateksti("This shows your current level.", 200, 66, 3, 0);
                                    piirrateksti("This shows the amount of gained experience,", 200, 106, 3, 0);
                                    piirrateksti("the bar shows the progress to the next level.", 200, 126, 3, 0);
                                    break;
                               case 1:
                                    piirrateksti("The damage skill", 400, 56, 3, 1);
                                    piirrateksti("makes your bullets more deadly.", 400, 76, 3, 1);
                                    piirrateksti("You get more damage experience", 400, 106, 3, 1);
                                    piirrateksti("from critical and multikills.", 400, 126, 3, 1);
                                    break;
                               case 2:
                                    piirrateksti("The accuracy skill", 400, 156, 3, 1);
                                    piirrateksti("increases your accuracy.", 400, 176, 3, 1);
                                    piirrateksti("You get more accuracy experience", 400, 206, 3, 1);
                                    piirrateksti("the more accurate you are.", 400, 226, 3, 1);
                                    break;
                               case 3:
                                    piirrateksti("The speed skill", 400, 256, 3, 1);
                                    piirrateksti("increases your firing rate.", 400, 276, 3, 1);
                                    piirrateksti("You get more speed experience", 400, 306, 3, 1);
                                    piirrateksti("the faster you kill.", 400, 326, 3, 1);
                                    break;
                               case 4:
                                    piirrateksti("The homing skill", 400, 356, 3, 1);
                                    piirrateksti("makes your bullets home to the enemies.", 400, 376, 3, 1);
                                    piirrateksti("You get more homing experience", 400, 406, 3, 1);
                                    piirrateksti("by killing enemies that are far away.", 400, 426, 3, 1);
                                    break;
                               case 6:
                                    piirrakuva(tutorialnuoli, 175, 525);
                                    piirrateksti("When you get new common level", 200, 447, 3, 0);
                                    piirrateksti("you are awarded with 1000 free experience", 200, 467, 3, 0);
                                    piirrateksti("for a level you choose.", 200, 487, 3, 0);
                                    break;
                 }
                 //loput
                 if(showfpseverywhere != 0) 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()) {
                                            pois = true;
                                            palautus = true;
                      }
                      laskefps();
                      
     //mennään escmenuun
     if(meneescmenuun) {
            meneescmenuun = false;
            vapautaesc = false; //lukitaan esc-nappi
            if(escmenu()) { //poistutaan menuun
                 pois = true;
                 palautus = true;
                 menuvalinta = -1;
            }
            if(kokonaanpois) { //poistutaan kokonaan
                 pois = true;
                 palautus = true;
                 menuvalinta = -1;
                 kokonaanpois = true;
            }
     }
    //tähän loppuu looppi
    }
    if(palautus == false) return false;
    else return true;
}
