view peluce/sprites.c @ 65:c6ecac58120a

Clean up some warnings.
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 06 Aug 2011 10:41:57 +0300
parents acb5694e93d9
children
line wrap: on
line source

#include "pwpdemo.h"

#include "sprites.h"

/*
void rotozoom(int x0,int y0,
              char*map,int dim,int angle,int zoom)
{
  int du,dv,u,v,x,y,xdim,ydim;
  char*d=pwplib.videobuf.d;

  {int xp0,yp0;
  dim=(dim*zoom)>>8;

  if(x0+dim>pwplib.videobuf.width)
    xdim=pwplib.videobuf.width-x0;else xdim=dim;

  if(y0+dim>pwplib.videobuf.height)
    ydim=pwplib.videobuf.height-y0;else ydim=dim;

  if(x0<0){xdim+=x0;xp0=-dim-x0; x0=0;}else xp0=-dim;
  if(y0<0){ydim+=y0;yp0=-dim-y0; y0=0;}else yp0=-dim;

  if(xdim<=0 || ydim<=0)return;

  du=sin(angle/256.0)*zoom;
  dv=cos(angle/256.0)*zoom;

  u=-du*xp0-dv*yp0;
  v=-dv*xp0+du*yp0;
  }

  {int duo=-dv-du*xdim,
       dvo= du-dv*xdim,
       mod=pwplib.videobuf.width-xdim;

   d+=ydim*pwplib.videobuf.width+xdim;

  for(y=ydim;y;y--)
  {
     for(x=xdim;x;x--)
     {
        int ptr=(u&~0xff)+(v>>8);

        *d=(*d&map[ptr])|map[ptr+128];
        d++;
        u+=du;
        v+=dv;
     }
     
     u+=duo;
     v+=dvo;
     d+=mod;
  }
  }
}
*/

void zoomsprite(int x0,int y0,sprite*sp,int xzoom,int yzoom)
{
   int xdim,ydim,
       xo0=0,yo0=0,x,y;

   if(xzoom<=32 && yzoom<=32)return;
   
   xdim=(sp->width<<8)/xzoom;
   ydim=(sp->height<<8)/yzoom;

   x0-=(xdim>>1);
   y0-=(ydim>>1);

   if(x0<0)
   {
      xdim+=x0;
      xo0=(0-x0)<<8;
      x0=0;
   }

   if(y0<0)
   {
      ydim+=y0;
      yo0=(0-y0)<<8;
      y0=0;
   }

   if(x0+xdim>=pwplib.videobuf.width)
   {
      xdim=pwplib.videobuf.width-x0;
   }

   if(y0+ydim>=pwplib.videobuf.height)
   {
      ydim=pwplib.videobuf.height-y0;
   }
   
   if(xdim<=0 || ydim<=0) return;
   
   {u8*d=pwplib.videobuf.d+x0+y0*pwplib.videobuf.width;

   for(y=0;y<ydim;y++)
   {
      int linebase=(yo0>>8)*sp->width;
      int xo=xo0;
      u8*dd=d;
      for(x=xdim;x;x--)
      {
         int a=*dd,z=linebase+(xo>>8);
         *dd=(a&sp->mask[z])|sp->pict[z];
         xo+=xzoom;
         dd++;
      }
      yo0+=yzoom;
      d+=pwplib.videobuf.width;
   }}
}

void zoomsprite_gen(int x0,int y0,sprite*sp,int zoom)
{
   zoomsprite(((x0+128)*pwplib.videobuf.width)>>8,
              ((y0+128)*pwplib.videobuf.height)>>8,
              sp,
              abs((zoom<<8)/pwplib.videobuf.width),
              abs((zoom<<7)/pwplib.videobuf.height)
             );
}

void metsae(int t,int mode)
{
  int i;
  sprite*mo[]={&kuusi};
  const int mosiz[]={128};
  const int mostep[]={64};

  for(i=0;i<512;i+=mostep[mode])
  {
   zoomsprite_gen(
     ((i-t/3)&511)-256 ,0,mo[mode],mosiz[mode]);
  }
}

void drawkiller(int tminus)
{
   int ttt=tminus;

   if(tminus<-64)tminus=-64;else
   if(tminus>0)tminus=0;

   zoomsprite_gen(tminus,48,(ttt&16)?&pelustna0:&pelustna1,80);
}

void encounter(int tminus,int kode,int zoom,int speed)
{
   int ttt=tminus;
   sprite*pum[][2]=
   {
      &krist0,&krist1,
      &pelusieni,&pelusieni,
      &pelusieni1,&pelusieni1,
      &pelusieni2,&pelusieni2,
      &pelux,&pelux,
      &pelustna0,&pelustna1,
      &ruumis,&ruumis,
      &uusmed0,&uusmed1,
      &tesno0,&tesno1,
      &army0,&army0,
      &windows0,&windows1,
      &quake0,&quake0      
   };

   if(ttt<0)ttt=0;

   zoomsprite_gen(0+ttt,48,(tminus&16)?pum[kode][0]:pum[kode][1],zoom);
}

void pelubounce(int t,int bouncemode)
{
/*
   const unsigned char bfunc[32]={
       32,32,32,36,38,40,42,44,50,60,61,62,62,63,63,63,
       63,63,63,62,61,60,50,40,32,33,34,35,34,33,32,32
   };
*/
   sprite*poo[3]={&peluface0,&peluface1,&peluface2};
   
   zoomsprite_gen(0,0,bouncemode?&sieni:poo[(t>>6)%3],40+((t-2560)&63));
}

void blaah(int t)
{
   int x0=0,
       y0=0,
       z0=300+(sin(t/70.8)*300);

   zoomsprite_gen(x0,y0,(t&16)?&krist0:&krist1,z0);
}


/*****************************/

/*
        for(y=0;y<hg;y++)
        {
	     register int dofz=(hg*64)/(y+3),ofz=t*32-dofz*20-((dofz>>4)*32*256);
             {int x=pwplib.videobuf.width;for(;x;x--)*d++=texture1[((ofz+=dofz)>>8)&1023];}
	     k-=(k>>3);
	}
}

*/