/*


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


*/

//          main.hpp

#ifndef _MAIN_HPP
#define _MAIN_HPP 1

//Täällä alustetaan globaalit muuttujat

            //ALUSTETAAN MUUTTUJIA
//ruutu ja muuta tärkeetä shittiä
SDL_Surface *ruutu;
SDL_Surface *tempruutu; //tähän voidaan piirtää peli, kun peli pysähtyy, niin ei tarvitse kaikkea piirtää kokoajan erillään
SDL_Surface *tempruutu2; //toinen mahdollinen tempruutu
SDL_Surface *tempruutuesc; //vielä yksi esc-menulle
SDL_Surface *temptausta; //ja taustalle
SDL_Surface *piirtokohta; //tämä ilmoittaa minne kaikki pitää milloinkin piirtää - pääasiassa ruudulle
Uint8 *pelaajaninputit;
int hiirix, hiiriy, hiiriprewx, hiiriprewy;
bool hiiriekanappi, hiiriprewekanappi;
SDL_Rect hiirikohta; //recti hiirelle
Uint32 alkuaika, loppuaika; //ajanmittausta varten
SDL_Surface *reddot; //punainen piste
FILE *tiedosto; //yleinen tiedosto
#ifndef _WIN32
        FILE *logtiedosto; //tiedosto linuxin logille
#endif
char tiedostorivi[100]; //yleinen char tiedoston sisällölle
char viesti[100]; //yleinen viesti messageboxeille
bool kokonaanpois = false; //kun poistutaan pelistä kokonaan
short int menuvalinta = -1;
char nykyinenkartta[20];
bool voitto; //kertoo stageloppu-funktiolle, läpäistiinkö stage
Uint8 focus;
char versio[10] = "v 0.7";
//asetukset
short int fullscreen = 0;
short int fasterloading = 0;
short int nosplash = 0;
short int showloadingtime = 0;
short int showfpseverywhere = 0;
short int mapdebug = 0;
short int mapdebugkeys = 0;
short int showexpgoals = 0;
short int showparticles = 1;
short int sightsetting = 0;

//fps
short int framerate = 25; //pelin nopeus - framerate on oikeastaan mspf
short int frame = 0; //laskee framen pituuden - periaattessa ei ole väliä
int fps = 999;
int fpssumma = 0;
short int fpslaskuri = 9;    //pitää olla [framejen näyttöväli] - 1, jotta sadaan joku framerate heti näkyviin
int aikalaskuri = -1; //tämä laskee pelissä kuluneiden framejen määrän

//värejä ja fadeja
Uint32 valkoinen;
Uint32 viivavari;
SDL_Surface *mustafade;
SDL_Surface *valkoinenfade;
int gfxpistevari[3]; //RGB
int gfxviivavari[3]; //RGB

//äänet ja musiikit
short int aanenvoimakkuus = 128;
short int musiikinvoimakkuus = 128;
Mix_Music *pelimusiikki;
Mix_Music *menuintromusiikki;
Mix_Music *menumusiikki;
Mix_Chunk *ampu;
Mix_Chunk *ampu2;
Mix_Chunk *loppubasso;
Mix_Chunk *gameoverhit;
Mix_Chunk *tick;
Mix_Chunk *splat1;
Mix_Chunk *splat2;
Mix_Chunk *splat3;
Mix_Chunk *splat4;
Mix_Chunk *hit;
Mix_Chunk *hitzap;
Mix_Chunk *levelup;
Mix_Chunk *kauppaaani;
Mix_Chunk *nappi1;
Mix_Chunk *nappi2;
Mix_Chunk *nappion;

            //ALUSTETAAN TASOT KUVIA VARTEN
//peliruudun tausta ja loading
SDL_Surface *tausta;
SDL_Surface *taustaframe;
SDL_Surface *taustavasen;
SDL_Surface *taustaoikea;
SDL_Surface *taustaala;
SDL_Surface *taustavasen2;
SDL_Surface *taustaoikea2;
SDL_Surface *taustaala2;
SDL_Surface *fpslaatikko;
SDL_Surface *lataus;
SDL_Surface *latauspalkki;
SDL_Surface *slpash;

//FPS kuvat ja numerot
SDL_Surface *debugnumerot;
SDL_Surface *expnumerot;
SDL_Surface *expnumerot_red;
SDL_Surface *numerot;
SDL_Surface *fontti[4];

//partikkelit
SDL_Surface *partikkeli1[3];
SDL_Surface *partikkeli2[5];
SDL_Surface *partikkeli3;

SDL_Surface *tykkikuva1;
SDL_Surface *tykki[46];
SDL_Surface *tykkialusta;
SDL_Surface *tykkitulikuva1[3][2];
SDL_Surface *tykkituli[3][2][46]; //[animaation kuvat][tavallinen ja flipattu][kulmat]
SDL_Surface *panoskuva;
SDL_Surface *panos[46];
SDL_Surface *panoscritkuva;
SDL_Surface *panoscrit[46];
SDL_Surface *pelitahtain;
SDL_Surface *menutahtain;
SDL_Surface *tahtain[110];
SDL_Surface *crittahtain;
SDL_Surface *efektikuvakeltainen2;
SDL_Surface *efektikuvakeltainen[5];
SDL_Surface *efektikuvapunainen2;
SDL_Surface *efektikuvapunainen[5];
SDL_Surface *nappipeliexit1;
SDL_Surface *nappipeliexit2;
SDL_Surface *aikasurvival;
SDL_Surface *aikajakaja;
SDL_Surface *aikaboss;
SDL_Surface *elamatkuva;
SDL_Surface *elamakuva;
//vihollinen
float vihuminkoko = 30; //tämä on pienimmän vihun koko
float vihukokokerroin = 10; //tämä on koon lisäys vihun eri koille
SDL_Surface *vihukuva2[4]; //temp, tästä kuvasta vain muokataan lopulliset kuvat
SDL_Surface *vihukuva[4][5]; //[vihun tyyppi][koko], vaihda ensimmäinen luku myös loadingiin kaikissa
SDL_Surface *vihukuollutkuva2[5]; //temp, tästä kuvasta vain muokataan lopulliset kuvat
SDL_Surface *vihukuollutkuva[5][5][10]; //[vihun tyyppi][koko][eri kulmat]
SDL_Surface *splatterkuva2[5]; //temp, tästä kuvasta vain muokataan lopulliset kuvat
SDL_Surface *splatterkuva[5][5][5][30]; //[vihun tyyppi][koko]["animaation" frame][eri kulmat]
SDL_Surface *vihukuva2keltainen;
SDL_Surface *vihukuvakeltainen[5][10]; //[koko][eri kulmat]
SDL_Surface *vihukuvamusta; //vain yksi koko
SDL_Surface *vihukuollutkuva2musta;
SDL_Surface *vihukuollutkuvamusta[10]; //[eri kulmat]
SDL_Surface *splatterkuva2musta;
SDL_Surface *splatterkuvamusta[5][30]; //["animaation" frame][eri kulmat]
SDL_Surface *vihukuva2nopea;
SDL_Surface *vihukuvanopea[5]; //[scalet eri nopeuksille]
SDL_Surface *vihukuollutkuva2nopea;
SDL_Surface *vihukuollutkuvanopea[10]; //[eri kulmat]
SDL_Surface *splatterkuva2nopea;
SDL_Surface *splatterkuvanopea[5][30]; //["animaation" frame][eri kulmat]
SDL_Surface *vihukuva7;
SDL_Surface *vihukuollutkuva7;
//levurajat, expat ja levut
int levuraja[5] = {2000, 6000, 12000, 24000, 50000}; //eri levujen rajat perustaidoille
int peruslevuraja[9] = {3000, 9000, 18000, 30000, 45000, 63000, 84000, 108000, 135000}; //yleislevujen rajat
/*int levuraja1 = 1000;
int levuraja2 = 3000;
int levuraja3 = 6500;
int levuraja4 = 12000;
int levuraja5 = 20000;
int peruslevuraja1 = 3000;
int peruslevuraja2 = 6000;
int peruslevuraja3 = 10500;
int peruslevuraja4 = 16500;
int peruslevuraja5 = 24000;
int peruslevuraja6 = 33000;
int peruslevuraja7 = 43500;
int peruslevuraja8 = 55500;
int peruslevuraja9 = 69000;*/
SDL_Surface *exppalkki[15];
SDL_Surface *exppalkkityhja;
SDL_Surface *levelikuva[6];
SDL_Surface *levelikuva3;
SDL_Surface *peruslevelikuva[6];
SDL_Surface *levelipalkki[130];
SDL_Surface *expnumerot2;
SDL_Surface *expnumerot_100;
SDL_Surface *expnumerot_400;
SDL_Surface *expnumerot_1;
//kauppa
SDL_Surface *kauppatausta;
SDL_Surface *kauppanappi1;
SDL_Surface *kauppanappi2;
SDL_Surface *kauppanappi3;
SDL_Surface *kauppateksti;
SDL_Surface *kauppakuva;
//menu
SDL_Surface *menutausta;
SDL_Surface *otsikko;
SDL_Surface *nappitakaisin2; //temp keltainen
SDL_Surface *nappitakaisin[3]; //perus, iso, pieni
SDL_Surface *nappimored2;
SDL_Surface *nappimored[3];
SDL_Surface *nappimoreu2;
SDL_Surface *nappimoreu[3];
SDL_Surface *nappipelaa2;
SDL_Surface *nappipelaa[3];
SDL_Surface *nappiscores2;
SDL_Surface *nappiscores[4]; //perus, iso, pieni, musta
SDL_Surface *menunappinew1; //vihreä
SDL_Surface *menunappinew2[3]; //keltainen: perus, iso, pieni
SDL_Surface *menunappiscores1;
SDL_Surface *menunappiscores2[3];
SDL_Surface *menunappisettings1;
SDL_Surface *menunappisettings2[3];
SDL_Surface *menunappicredits1;
SDL_Surface *menunappicredits2[3];
SDL_Surface *menunappiexit1;
SDL_Surface *menunappiexit2[3];
SDL_Surface *menunappitutorial1;
SDL_Surface *menunappitutorial2[3];
SDL_Surface *menunappistages1;
SDL_Surface *menunappistages2[3];
SDL_Surface *menunappisurvival1;
SDL_Surface *menunappisurvival2[3];
SDL_Surface *menunappicustommap1;
SDL_Surface *menunappicustommap2[3];
SDL_Surface *mappinappi0;
SDL_Surface *mappinappilock;
SDL_Surface *mappinappiok;
SDL_Surface *mappinappi[5];
SDL_Surface *mapnappifade;
//esc-menu
SDL_Surface *escmenutausta;
SDL_Surface *escmenuteksti;
SDL_Surface *escmenunappi1;
SDL_Surface *escmenunappi2;
SDL_Surface *escmenunappi3;
SDL_Surface *escmenunappi4;
//statsit
SDL_Surface *statsteksti;
SDL_Surface *statsdash;
SDL_Surface *statsscore;
SDL_Surface *statsmasterpiece1;
SDL_Surface *statsmasterpiece2;
SDL_Surface *statscontinue2; //temp keltainen
SDL_Surface *statscontinue[3]; //perus, iso, pieni
SDL_Surface *statspalkki[225];
//game over
SDL_Surface *gameoverfade;
SDL_Surface *gameoverteksti;
SDL_Surface *gameoverrikki;
int gameoverkohta;
//new hiscore
SDL_Surface *newhstausta;
SDL_Surface *newhspalkki;
SDL_Surface *newhsteksti;
SDL_Surface *newhstype;
//stagen loppuruutu
SDL_Surface *stageplaynext;
SDL_Surface *stageretry;
SDL_Surface *stagecompleted;
SDL_Surface *stageyes2; //temp keltainen
SDL_Surface *stageyes[3]; //perus, iso, pieni
SDL_Surface *stageno2;
SDL_Surface *stageno[3];
SDL_Surface *stageok2;
SDL_Surface *stageok[3];
//settings
SDL_Surface *settingstekstit;
SDL_Surface *settingspalkki1;
SDL_Surface *settingspalkki2;
SDL_Surface *settingsboth1;
SDL_Surface *settingsboth2;
SDL_Surface *settingscircle1;
SDL_Surface *settingscircle2;
SDL_Surface *settingsline1;
SDL_Surface *settingsline2;
SDL_Surface *settingsoff1;
SDL_Surface *settingsoff2;
SDL_Surface *settingson1;
SDL_Surface *settingson2;
//tutorial
SDL_Surface *tutorialnuoli;
SDL_Surface *tutorialcontinue2; //temp keltainen
SDL_Surface *tutorialcontinue[3]; //perus, iso, pieni

#endif
