/*


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


*/

//          asetukset.cpp

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

//tämä piirtää latauspalkin latausruutuun
void asetusruutu() {
     bool pois1 = false; //aloita poistuminen
     bool pois2 = false; //ulos loopista!
     float kasautuminen = 0;
     short int valinta = 0;
     short int prewvalinta = 0;
     //short int asetusvalinta = 0;
     short int prewaanenvoimakkuus = aanenvoimakkuus;
     short int prewmusiikinvoimakkuus = musiikinvoimakkuus;
     
     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;
                 
                 //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);
                 }
                 
                 //hiiren nappi painettiin
                 if(hiiriekanappi && !hiiriprewekanappi && kasautuminen > 20) {
                            //testataan onko hiiri nappien päällä
                            if(hiirix > 350 && hiirix < 426 && hiiriy > 100 && hiiriy < 151) {
                                            soitaaani(nappi2); //ääni
                                            fullscreen = 1;
                                            ruutu = SDL_SetVideoMode (800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN);
                                            if (ruutu == NULL) {
                                               sprintf(viesti, "Couldn't set 800x600x32 video mode: %s\n", SDL_GetError());
                                               naytavirhe(viesti);
                                               exit(2);
                                            }
                            }
                            if(hiirix > 436 && hiirix < 531 && hiiriy > 100 && hiiriy < 151) {
                                            soitaaani(nappi2); //ääni
                                            fullscreen = 0;
                                            ruutu = SDL_SetVideoMode (800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
                                            if (ruutu == NULL) {
                                               sprintf(viesti, "Couldn't set 800x600x32 video mode: %s\n", SDL_GetError());
                                               naytavirhe(viesti);
                                               exit(2);
                                            }
                            }
                            if(hiirix > 350 && hiirix < 426 && hiiriy > 200 && hiiriy < 251) {
                                            soitaaani(nappi2); //ääni
                                            showparticles = 1;
                            }
                            if(hiirix > 436 && hiirix < 531 && hiiriy > 200 && hiiriy < 251) {
                                            soitaaani(nappi2); //ääni
                                            showparticles = 0;
                            }
                            if(hiirix > 350 && hiirix < 518 && hiiriy > 300 && hiiriy < 351) {
                                            soitaaani(nappi2); //ääni
                                            sightsetting = 2;
                            }
                            if(hiirix > 528 && hiirix < 638 && hiiriy > 300 && hiiriy < 351) {
                                            soitaaani(nappi2); //ääni
                                            sightsetting = 1;
                            }
                            if(hiirix > 648 && hiirix < 777 && hiiriy > 300 && hiiriy < 351) {
                                            soitaaani(nappi2); //ääni
                                            sightsetting = 0;
                            }
                 }
                 
                 //hiiren nappi on pohjassa
                 if(hiiriekanappi && kasautuminen > 20) {
                            //liikutetaan äänipalkkeja
                            if(hiirix > 285 && hiirix < 665 && hiiriy > 460 && hiiriy < 490) {
                                            float tempvoimakkuus = (100.0 / 350.0) * float(hiirix - 300);
                                            musiikinvoimakkuus = int(round((tempvoimakkuus * 128.0) / 100.0));
                                            if(musiikinvoimakkuus < 0) musiikinvoimakkuus = 0;
                                            if(musiikinvoimakkuus > 128) musiikinvoimakkuus = 128;
                                            if(musiikinvoimakkuus != prewmusiikinvoimakkuus) Mix_VolumeMusic(musiikinvoimakkuus);
                            }
                            if(hiirix > 285 && hiirix < 665 && hiiriy > 510 && hiiriy < 540) {
                                            float tempvoimakkuus = (100.0 / 350.0) * float(hiirix - 300);
                                            aanenvoimakkuus = int(round((tempvoimakkuus * 128.0) / 100.0));
                                            if(aanenvoimakkuus < 0) aanenvoimakkuus = 0;
                                            if(aanenvoimakkuus > 128) aanenvoimakkuus = 128;
                                            if(aanenvoimakkuus != prewaanenvoimakkuus) soitaaani(nappi2); //ääni
                            }
                 }
                 
                 //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
                 piirrakuva2(menutausta, 0, 0);
                 piirrakuva(otsikko, 400, 50);
                 //vanhat napit
                 if(kasautuminen < 20) {
                                 piirrakuva(menunappinew1, 400 - 30 * kasautuminen, 175);
                                 //piirrakuva(menunappiscores1, 400 - 30 * kasautuminen, 250);
                                 piirrakuva(menunappisettings2[0], 400 - 30 * kasautuminen, 275);
                                 piirrakuva(menunappicredits1, 400 - 30 * kasautuminen, 375);
                                 piirrakuva(menunappiexit1, 400 - 30 * kasautuminen, 475);
                 }
                 //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);
                 //asetus kuvat
                 char musiikkinumero[4], aaninumero[4];
                 sprintf(musiikkinumero, "%i", musiikinvoimakkuus * 100 / 128);
                 sprintf(aaninumero, "%i", aanenvoimakkuus * 100 / 128);
                 if(kasautuminen < 20) {
                                 piirrakuva2(settingstekstit, 800 - 37.5 * kasautuminen, 102);
                                 piirrakuva(settingspalkki1, 1225 - 37.5 * kasautuminen, 475);
                                 piirrakuva(settingspalkki1, 1225 - 37.5 * kasautuminen, 525);
                                 piirrakuva(settingspalkki2, 2.734375 * musiikinvoimakkuus + 1050 - 37.5 * kasautuminen, 475);
                                 piirrakuva(settingspalkki2, 2.734375 * aanenvoimakkuus + 1050 - 37.5 * kasautuminen, 525);
                                 piirrateksti(musiikkinumero, 1500 - 37.5 * kasautuminen, 460, 1, 0);
                                 piirrateksti(aaninumero, 1500 - 37.5 * kasautuminen, 510, 1, 0);
                                 if(fullscreen == 0) {
                                               piirrakuva2(settingson1, 1100 - 37.5 * kasautuminen, 100);
                                               piirrakuva2(settingsoff2, 1186 - 37.5 * kasautuminen, 100);
                                 }
                                 else {
                                               piirrakuva2(settingson2, 1100 - 37.5 * kasautuminen, 100);
                                               piirrakuva2(settingsoff1, 1186 - 37.5 * kasautuminen, 100);
                                 }
                                 if(showparticles == 0) {
                                               piirrakuva2(settingson1, 1100 - 37.5 * kasautuminen, 200);
                                               piirrakuva2(settingsoff2, 1186 - 37.5 * kasautuminen, 200);
                                 }
                                 else {
                                               piirrakuva2(settingson2, 1100 - 37.5 * kasautuminen, 200);
                                               piirrakuva2(settingsoff1, 1186 - 37.5 * kasautuminen, 200);
                                 }
                                 if(sightsetting == 1) {
                                               piirrakuva2(settingscircle1, 1100 - 37.5 * kasautuminen, 300);
                                               piirrakuva2(settingsline2, 1278 - 37.5 * kasautuminen, 300);
                                               piirrakuva2(settingsboth1, 1398 - 37.5 * kasautuminen, 300);
                                 }
                                 else if(sightsetting == 2) {
                                               piirrakuva2(settingscircle2, 1100 - 37.5 * kasautuminen, 300);
                                               piirrakuva2(settingsline1, 1278 - 37.5 * kasautuminen, 300);
                                               piirrakuva2(settingsboth1, 1398 - 37.5 * kasautuminen, 300);
                                 }
                                 else {
                                               piirrakuva2(settingscircle1, 1100 - 37.5 * kasautuminen, 300);
                                               piirrakuva2(settingsline1, 1278 - 37.5 * kasautuminen, 300);
                                               piirrakuva2(settingsboth2, 1398 - 37.5 * kasautuminen, 300);
                                 }
                 }
                 else {
                                 piirrakuva2(settingstekstit, 50, 102);
                                 piirrakuva(settingspalkki1, 475, 475);
                                 piirrakuva(settingspalkki1, 475, 525);
                                 piirrakuva(settingspalkki2, 2.734375 * musiikinvoimakkuus + 300, 475);
                                 piirrakuva(settingspalkki2, 2.734375 * aanenvoimakkuus + 300, 525);
                                 piirrateksti(musiikkinumero, 750, 460, 1, 2);
                                 piirrateksti(aaninumero, 750, 510, 1, 2);
                                 if(fullscreen == 0) {
                                               piirrakuva2(settingson1, 350, 100);
                                               piirrakuva2(settingsoff2, 436, 100);
                                 }
                                 else {
                                               piirrakuva2(settingson2, 350, 100);
                                               piirrakuva2(settingsoff1, 436, 100);
                                 }
                                 if(showparticles == 0) {
                                               piirrakuva2(settingson1, 350, 200);
                                               piirrakuva2(settingsoff2, 436, 200);
                                 }
                                 else {
                                               piirrakuva2(settingson2, 350, 200);
                                               piirrakuva2(settingsoff1, 436, 200);
                                 }
                                 if(sightsetting == 1) {
                                               piirrakuva2(settingscircle1, 350, 300);
                                               piirrakuva2(settingsline2, 528, 300);
                                               piirrakuva2(settingsboth1, 648, 300);
                                 }
                                 else if(sightsetting == 2) {
                                               piirrakuva2(settingscircle2, 350, 300);
                                               piirrakuva2(settingsline1, 528, 300);
                                               piirrakuva2(settingsboth1, 648, 300);
                                 }
                                 else {
                                               piirrakuva2(settingscircle1, 350, 300);
                                               piirrakuva2(settingsline1, 528, 300);
                                               piirrakuva2(settingsboth2, 648, 300);
                                 }
                 }
                 //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;
                 prewaanenvoimakkuus = aanenvoimakkuus;
                 prewmusiikinvoimakkuus = musiikinvoimakkuus;
                 
                      if(hoidatapahtumat()) pois2 = true;
                      laskefps();
                      
    //tähän loppuu menun looppi
    }
    //tallennetaan asetukset
    tallennaasetukset();
}
