1 /****************************************************************************
4 Copyright (c) 1997-2005 Jerome Jacovella-St-Louis
7 sprite.ec - Bitmap Sprite System
8 ****************************************************************************/
20 uint16 maxWidth,maxHeight;
33 for(c=0; c<numFrames; c++)
34 delete frames[c].bitmap;
39 bool Load(char *bmpname, char *sizefile, bool trans, bool usePaletteShades, ColorAlpha * palette, DisplaySystem displaySystem)
42 File f = FileOpen(sizefile, read);
46 if(bmpFrames.Load(bmpname, null, null))
49 f.Read(&maxWidth, sizeof(uint16),1);
50 f.Read(&maxHeight, sizeof(uint16),1);
51 frames = new0 SpriteFrame[numFrames];
57 for(c=0; c<numFrames; c++)
62 f.Getc(&frames[c].xDis);
63 f.Getc(&frames[c].yDis);
65 frames[c].bitmap = Bitmap {};
66 if(frames[c].bitmap.Allocate(null, width,height,0,bmpFrames.pixelFormat, false))
68 frames[c].bitmap.transparent = trans;
69 frames[c].bitmap.Grab(bmpFrames,0,startY);
71 frames[c].bitmap.palette = palette;
75 frames[c].bitmap.MakeDD(displaySystem);
77 Logf("Couldn't adapt bitmap %s.\n", bmpname);
83 delete frames[c].bitmap;
85 Logf("Couldn't allocate bitmap loading sprite %s.\n", bmpname);
91 Logf("Couldn't allocate frames for sprite %s.\n", bmpname);
94 Logf("Couldn't load sprite bitmap %s.\n", bmpname);
102 Logf("Couldn't load sprite info %s.\n", sizefile);
106 void DisplayFrame(Surface surface, int frameNum, int x, int y, bool flip, byte * inPal)
115 frame = &frames[frameNum];
117 rx=frame->bitmap.width;
118 ry=frame->bitmap.height;
121 dx = x-(frame->xDis+frame->bitmap.width)+maxWidth;
131 frame->bitmap.paletteShades = inPal;
133 surface.Blit(frame->bitmap, dx,dy, lx,ly, flip?(-rx):(rx), ry);