File: main.c | Size: 5,826 bytes | Download file | Back to directory listing | BWPOW's homepage
#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();