#include"main.h"
#include"phong.h"
#include"phong2.h"

int x,y;

//int ccx[]     = {110,40 ,210,240,60 ,160};          //aktueller x wert
//int ccy[]     = {110,110,40 ,60 ,140,160};
int ccx[]     = {160,160,160,160,160,160};          //aktueller x wert
int ccy[]     = {100,100,100,100,100,100};          //aktueller x wert
int ccxtemp[] = {110,40 ,210,240,60 ,160};
int ccxadd[]  = {-3 , 2 ,-4 , 2 ,-4 , 3 };             //geschwindigkeit
int ccyadd[]  = { 2 , 3 , 2 , 4 ,-3 ,-5 };
int abprall[] = { 27, 23, 28, 20, 24, 21};
//               0   1   2   3   4   5
//0=star mit komet, 1=star, 2=star mit komet, 3=meta, 4=star, 5=meta

void initmetastar(){
int i;
	for (i=0; i<256; i++){
            if (phong[i*3+0]>5)  phong[i*3+0]-= 5; else phong[i*3+0]=0;
            if (phong[i*3+1]>5)  phong[i*3+1]-= 5; else phong[i*3+1]=0;
            if (phong[i*3+2]>5)  phong[i*3+2]-= 5; else phong[i*3+2]=0;

            phong[i*3+2]+=25;

            testpal3[i]=(( (phong[i*3+2]>>4)<<16)+(phong2[i*3+1]<<8)+(phong[i*3+0]));
            testpal2[i]=((phong2[i*3+2]<<16)+(phong2[i*3+1]<<8)+(phong2[i*3+0]));
            testpal[i]=((phong[i*3+2]<<16)+(phong[i*3+1]<<8)+(phong[i*3+0]));
        }

}

/* ===================================================================================== */

void do_metastuff(int originx,int originy,unsigned char color){
int x,y,a,b;
for (x=0;x<127;x++){
           a=originx+cosine2[x];
           b=originy+sine2[x];
           line(originx,originy,a,b,color,phong2);
         }
}

/* ===================================================================================== */

void do_metastuffMMX(int originx,int originy,unsigned char color){
int x,y,a,b;
for (x=0;x<127;x++){
           a=originx+cosine2[x];
           b=originy+sine2[x];
           lineimp(originx,originy,a,b,color,1,schweif);
//           lineimp(originx,originy,a,b,color,1,schweif);
         }
}

void do_metastuffMMXu(int originx,int originy,unsigned char color,int size,unsigned char *dest){
int x,y,a,b;
if (size==0){
for (x=0;x<128/2;x++){
           a=originx+cosine2[x<<2];
           b=originy+sine2[x<<2];
           lineimpu(originx,originy,a,b,color,0,dest);
         }
} else
{
for (x=0;x<128;x++){
           a=originx+cosine2[x<<1];
           b=originy+sine2[x<<1];
           lineimpu(originx,originy,a,b,color,0,dest);
         }
         }
}

/* ===================================================================================== */

void do_starstuff(int originx,int originy,int staerke){
int x,y,a,b;
         for (x=0;x<127;x+=staerke){
           a=originx+cosine2[x];
           b=originy+sine2[x];
           line(originx,originy,a,b,random()%255,phong,schweif);
         }

}

/* ===================================================================================== */

void do_starstuffMMX(int originx,int originy,int staerke){
int x,y,a,b;
         for (x=0;x<127;x+=staerke){
           a=originx+cosine2[x];
           b=originy+sine2[x];
           lineimp(originx,originy,a,b,random()%255,0,schweif);
         }
}

/* ===================================================================================== */

void draw_nd_update_stuff(unsigned char bb, unsigned char bb1, unsigned char bb2){
int a,b;
int xdif,ydif;
do_starstuffMMX(ccx[0],                       ccy[0],3);
do_metastuffMMX(ccx[0]+cosine3[bb],           ccy[0]+sine3[bb],80);
do_metastuffMMX(ccx[0]+cosine3[(bb+128)%255], ccy[0]+sine3[(bb+128)%255],80);/**/

do_starstuffMMX(ccx[2],                        ccy[2],3);
do_metastuffMMX(ccx[2]+cosine3[bb1],           ccy[2]+sine3[bb1],80);
do_metastuffMMX(ccx[2]+cosine3[(bb1+128)%255], ccy[2]+sine3[(bb1+128)%255],80);/**/

do_starstuffMMX(ccx[1],ccy[1],2);
do_starstuffMMX(ccx[4],                        ccy[4],3);

do_metastuffMMX(ccx[3],ccy[3],180);
do_metastuffMMX(ccx[5],ccy[5],180);


x=0;
for (a=0;a<6;a++)                       //kollision?
for (b=x++;b<6;b++){
    if (a!=b){
//    xdif=abs(ccx[a]-ccx[b]) + abs(ccxadd[a]) + abs(ccxadd[b]);
//    ydif=abs(ccy[a]-ccy[b]) - abs(ccyadd[a]) - abs(ccyadd[b]);
    xdif=abs(ccx[a]-ccx[b]);// + abs(ccxadd[a]) + abs(ccxadd[b]);
    ydif=abs(ccy[a]-ccy[b]);// - abs(ccyadd[a]) - abs(ccyadd[b]);
    if ( (xdif<abprall[a]) && (ydif<abprall[a]) )
       {
       ccxadd[a]=0-ccxadd[b];//a
       ccxadd[b]=0-ccxadd[a];//b
       ccyadd[a]=0-ccyadd[a];
       ccyadd[b]=0-ccyadd[b];
       }
    }
}

for (a=0;a<6;a++){
ccx[a]+=ccxadd[a];          //bewegung + clipping
ccy[a]+=ccyadd[a];

if ((ccx[a]>270)||(ccx[a]<50)) ccxadd[a]=0-ccxadd[a];
if ((ccy[a]>160)||(ccy[a]<40)) ccyadd[a]=0-ccyadd[a];


if (ccx[a]>270) ccx[a]=268;
if (ccx[a]<50)  ccx[a]=48;
if (ccy[a]>160) ccy[a]=158;
if (ccy[a]<40) ccy[a]=38;
/**/

if (ccx[a]==ccxtemp[a]) ccx[a]+=15;
ccxtemp[a]=ccx[a];
}

}

/* ===================================================================================== */

void crediz_part(int wahl){
int fntx,x;
long l;
            if ((fntx=random()%15+2)<5) fnty=random()%10;//10
            if ((wahl%100)<50){
                for (x=0;x<20;x++)
                    do_metastuffMMX(10+random()%240,15+fnty+random()%80,(random()%120)+80);
                __write13h2(0,"`D[[\0",fntx,(25+fnty)<<2);
                __write13h2(0,"\\CODE\\[[\0",fntx,(50+fnty)<<2);
                __write13h (0,"IQUITO[[[[[[\0",fntx,(75+fnty)<<2);
            } else
            if ((wahl%100)<100){
                for (x=0;x<20;x++)
                    do_metastuffMMX(60+random()%240,90+fnty+random()%80,(random()%120)+80);
                __write13h2(0,"[_D\0",fntx,(100+fnty)<<2);
                __write13h2(0,"[\\CODE\\\0",fntx,(125+fnty)<<2);
                __write13h (0,"[[GENOZ[TASH\0",fntx,(150+fnty)<<2);
            }/**/
            do_plasma();
            asmcopyfontschweif(schweif,buffer);
            asmblurscreenrgbmmx(0x070503,schweif);/**/

}

