/* ** AIRSHIP proto version ** Public Domain/Domaine Publique author Robin Fercoq date 00/01 category real time voxel automata rendering fly through engine source C++ -raw- compiler DJGPP IDE Rhide libs Allegro exec dos compatible */ /* main.cc airship project launching and main running loop */ #include "airship.h" int main(int argc,char * argv[]){ int d,dd,ns,x,y,mmx,mmy; //PALETTE Pal; ship S; ship St[10]; //camera cam; char filename[256]; init_airship(); int s=SIDE; voxon vox(s,s,s); voxon *vt[10]; voxon *vca[12]; voxon sac(32,32,32); voxon soc(32,32,32); voxon erod(64,64,16); for (d=128;d<=135;d++) vox.addvoxels(400,d);//400 for (d=148;d<=158;d++){ sac.addvoxels(400,d); sac.Act[d]=irandom(13); } for (d=148;d<=158;d++){ soc.addvoxels(400,d); soc.Act[d]=13; } for (dd=0;dd<10;dd++){ vt[dd]=new voxon(s,s,s); ns=irandom(5)+1; for (d=0;daddvoxels(1<<(irandom(6)+5), irandom(20)+128); if (dd) vt[dd-1]->addvoxon(vt[dd],s/2,s/2,s/2); } vt[9]->addvoxon(vt[0],s/2,s/2,s/2); vt[0]->addvoxon(&soc,s/4,s/4,s/4); for (dd=0;dd<12;dd++) vca[dd]=new voxon(s,s,s); vca[0]->loaddump("metatrop\\meta0000.ttt"); vca[1]->loaddump("metatrop\\meta0001.ttt"); vca[2]->loaddump("metatrop\\meta0002.ttt"); vca[3]->loaddump("metatrop\\meta0006.ttt"); vca[4]->loaddump("metatrop\\meta0009.ttt"); vca[5]->loaddump("metatrop\\meta0010.ttt"); vca[6]->loaddump("metatrop\\meta0011.ttt"); vca[7]->loaddump("metatrop\\meta0012.ttt"); vca[8]->loaddump("metatrop\\meta0013.ttt"); vca[9]->loaddump("metatrop\\meta0014.ttt"); vca[10]->loaddump("metatrop\\meta0018.ttt"); vca[11]->loaddump("metatrop\\meta0019.ttt"); vca[0]->addvoxon(vca[1],7,21,25); vca[0]->addvoxon(vca[2],22,21,15); vca[1]->addvoxon(vca[4],5,20,9); vca[1]->addvoxon(vt[0],16,16,16); vca[2]->addvoxon(vca[3],6,18,16); vca[4]->addvoxon(vca[5],22,19,3); vca[5]->addvoxon(vca[6],26,27,21); vca[6]->addvoxon(vca[7],16,16,16); vca[7]->addvoxon(vca[8],10,16,16); vca[7]->addvoxon(vca[9],22,16,16); vca[8]->addvoxon(vca[10],16,16,16); vca[9]->addvoxon(vca[10],16,16,16); vca[10]->addvoxon(vca[11],16,16,16); vca[11]->addvoxon(vca[0],16,16,16); soc.addvoxon(vca[0],16,16,29); //vox.addvoxon(&vox2,s/2,s/2,s/2); S.c.x=itofix(s+1); S.c.y=itofix(s+1); S.c.z=itofix(s+1); S.c.uf=-S.c.x;S.c.vf=-S.c.y;S.c.wf=-S.c.z; S.c.ut=S.c.wt=0;S.c.vt=itofix(1); S.c.fov=itofix(50);//45 S.tl=ftofix( sqrt(3.0*(s/2+1)) ); S.v=vt[0];//&vox; for (d=0;d<10;d++){ memcpy(&St[d],&S,sizeof(ship)); } St[1].v=&vox; St[2].v=vca[0]; St[3].v=vca[4]; St[4].v=&sac; St[5].v=&soc; St[6].v=&erod; // *** MAIN PROCEDURE *** while (!key[KEY_ESC]){ get_mouse_mickeys(&mmx,&mmy); S.pilot(itofix(mmx),itofix(mmy)); if (key[KEY_TAB]){ if (file_select("Save Screen: tga bmp or pcx",filename,"tga;bmp;pcx")) save_bitmap(filename,scrbuf,Pal); } for (d=KEY_0_PAD;d<=KEY_9_PAD;d++){ if (key[d]){ dd=d-KEY_0_PAD; if (key_shifts&KB_SHIFT_FLAG) memcpy(&St[dd],&S,sizeof(ship)); else memcpy(&S,&St[dd],sizeof(ship)); } } } fade_out(5); allegro_exit(); return 0; } END_OF_MAIN();