#include <string.h> #include <stdio.h> #include <allegro.h> #include <jpeg.h> #include "dpslib.h" #include "headers.h" #include "main.h" #include "engine.h" #include "fonty.h" #include "bgfx.h" MINFO minfo; SKLADBA skladba[64]; MAP map[MAP_W][MAP_H]; LEVELS levels[32]; void main_timer(void) { minfo.tim++; } END_OF_FUNCTION(main_timer); void main_koniec(char *text) { set_gfx_mode(-1,0,0,0,0); if(strlen(text)>0) allegro_message(text); allegro_exit(); exit(0); } void main_loaduj_jpeg(char *nazov) { char fname[512]; sprintf(fname,"./data/jgfx.dat#%s",nazov); destroy_bitmap(jbmp); jbmp=load_jpeg(fname,0); if(jbmp==0) main_koniec("Neviem nacitat data zo suboru JGFX.DAT!"); minfo.menu_obrazok=0; } void main_next_stvorec(void) { int x; x=minfo.hp*18+107; rectfill(screen,x,303,x+13,337,makecol(255-minfo.hp*10,0,minfo.hp*10)); minfo.hp++; } void main_show_init_screen(void) { clear_to_color(actual,minfo.white); text_mode(-1); stextout_centre(actual,fonty[EARTH_48_PCX].dat,"Matalyza",320,100,minfo.red,0); stextout_centre(actual,fonty[EARTH_48_PCX].dat,"Masters",320,155,minfo.blue,0); minfo.whitebox=minfo.gray; whitebox(actual,100,300,440,40); blit(actual,screen,0,0,0,0,640,480); } void main_kontroluj_levely(void) { int i,a; FILE *s; char tbuf[256]; for(i=0;i<minfo.num_levels;i++){ sprintf(tbuf,"./levels/%s",levels[i].file); s=fopen(tbuf,"rb"); if(s==0) main_koniec("Chyba pri nacitavani levelu!"); fread(tbuf,1,8,s); if(memcmp(tbuf,"Matalyza",8)) main_koniec("Chyba v subore! Nahrajte ich este raz!"); a=fgetc(s); a=fgetc(s); // dlzka nazvu fread(levels[i].name,1,a,s); levels[i].name[a]=0; fclose(s); } } void main_init_all(void) { int i,n; char tbuf[32]; SAMPLE *smp; allegro_init(); install_keyboard(); install_timer(); install_mouse(); packfile_password(""); LOCK_VARIABLE(minfo.tim); LOCK_FUNCTION(main_timer); install_int_ex(main_timer,BPS_TO_TIMER(60)); set_window_title(NAZOV" v"VERZIA); // main_koniec(ALLEGRO_VERSION_STR); /* music.ini */ set_config_file("./data/music.ini"); strcpy(skladba[0].fname,get_config_string(0,"intro","none")); strcpy(skladba[0].meno,"Intro"); strcpy(skladba[1].fname,get_config_string(0,"menu","none")); strcpy(skladba[1].meno,"Menu"); minfo.num_skladba=2; n=get_config_int("game","tracks",0); for(i=0;i<n;i++){ sprintf(tbuf,"track%02d",i); strcpy(skladba[minfo.num_skladba].fname,get_config_string("game",tbuf,"none")); sprintf(tbuf,"name%02d",i); strcpy(skladba[minfo.num_skladba].meno,get_config_string("game",tbuf,"none")); minfo.num_skladba++; } /* game.ini */ set_config_file("./data/game.ini"); minfo.num_levels=get_config_int("levels","num",0); if(minfo.num_levels==0) main_koniec("Nie je urceny ani jeden level!"); for(i=0;i<minfo.num_levels;i++){ sprintf(tbuf,"level%02d",i); strcpy(levels[i].file,get_config_string("levels",tbuf,"none")); } /* matalyza.cfg */ set_config_file("matalyza.cfg"); if(get_config_int(0,"config",0)!=1) main_koniec("Najprv treba spustit SETUP.EXE!"); minfo.sound=get_config_int(0,"sound",1); minfo.music=get_config_int(0,"music",1); if(minfo.sound||minfo.music){ if(install_sound(-1,0,0)!=0) main_koniec("Neviem inicializovat zvukovy buffer!\nBez zvuku to nema vyznam zapinat."); } strcpy(minfo.adr_music,get_config_string("dir","music","./music")); packfile_password("IdeaZ"); fonty=load_datafile("./data/fonty.dat"); if(fonty==0) main_koniec("Neviem otvorit subor FONTY.DAT!"); set_color_depth(get_config_int(0,"depth",16)); if(set_gfx_mode(GFX_AUTODETECT_FULLSCREEN,640,480,0,0)!=0) main_koniec("Neviem zapnut DirectDraw mod 640x480!\nSkuste nastavit inu farebnu hlbku v setupe."); minfo.white=makecol(255,255,255); minfo.gray=makecol(128,128,128); minfo.green=makecol(0,255,0); minfo.red=makecol(255,0,0); minfo.blue=makecol(0,0,255); actual=create_bitmap(640,480); bmp1=create_bitmap(640,480); main_show_init_screen(); minfo.hp=0; bgfx=load_datafile("./data/bgfx.dat"); main_next_stvorec(); if(bgfx==0) main_koniec("Neviem otvorit subor BGFX.DAT!"); set_mouse_sprite(bgfx[b_mys].dat); init_mainmenu(); main_next_stvorec(); init_engine(); main_next_stvorec(); main_kontroluj_levely(); main_next_stvorec(); gtex=load_datafile("./data/gtex.dat"); main_next_stvorec(); if(gtex==0) main_koniec("Neviem otvorit subor GTEX.DAT!"); wtex=load_datafile("./data/wtex.dat"); main_next_stvorec(); if(wtex==0) main_koniec("Neviem otvorit subor WTEX.DAT!"); set_trans_blender(128,128,128,64); while(minfo.hp<24) main_next_stvorec(); minfo.now_skladba=-1; } void main_loop_music(void) { if(minfo.music==0) return; poll_dps(); } void main_stop_track(void) { if(minfo.music==0) return; if(minfo.now_skladba==-1) return; unload_dps_stream(); minfo.now_skladba=-1; } void main_set_track(int track) { char fname[512]; if(minfo.music==0) return; if(minfo.now_skladba==track) return; if(minfo.now_skladba!=-1){ unload_dps_stream(); } sprintf(fname,"%s/%s",minfo.adr_music,skladba[track].fname); if(load_dps_stream(fname,1)==FALSE) main_koniec("Neviem otvorit subor s hudbou!"); minfo.now_skladba=track; } void main_loop(void) { int r,c,a; while(1){ // kedy to uz skonci ? r=mainmenu(); if(r==5) break; // konec filma! if(r==0){ // nova kampan } if(r==1){ // nacitaj hru } if(r==2){ // uloz hru if(minfo.in_game!=1){ myalert("Pozor!","Najprv nieco rozohraj, az potom ukladaj!"); } else{ } } if(r==3){ // statistics if(minfo.in_game!=1){ myalert("Hmmm","O com chces statistiky, ked si nic zatial neuhral!"); } else{ } } if(r==4){ // infosky } } } int main(void) { main_init_all(); main_loop(); // game(); minfo.fcia[0]=0; main_koniec(""); return 0; } END_OF_MAIN();