112 lines
2.5 KiB
C++
112 lines
2.5 KiB
C++
#ifndef SPRITE_RESOURCE_INCLUDED
|
|
#define SPRITE_RESOURCE_INCLUDED
|
|
|
|
|
|
#include "color.h"
|
|
#include "common.h"
|
|
#include "uniqueID.h"
|
|
#include "Sprite.h"
|
|
|
|
|
|
class SpriteResource {
|
|
public:
|
|
|
|
// blank sprite
|
|
SpriteResource();
|
|
|
|
|
|
// sprite loaded from file
|
|
SpriteResource( uniqueID inID );
|
|
|
|
|
|
// sprite loaded from data string
|
|
SpriteResource( uniqueID inID, unsigned char *inData, int inLength );
|
|
|
|
|
|
|
|
// changes the color of a sprite pixel
|
|
void editSprite( int inX, int inY, rgbaColor inNewColor );
|
|
|
|
// changes the transparency of a pixel
|
|
void editTrans( int inX, int inY, char inIsTrans );
|
|
|
|
// name has at most 10 chars
|
|
void editSpriteName( const char *inName );
|
|
|
|
|
|
rgbaColor getColor( int inX, int inY );
|
|
|
|
// destroyed by caller
|
|
char *getSpriteName();
|
|
|
|
char getTrans( int inX, int inY );
|
|
|
|
|
|
// finishes the edit, generates a new unique ID, saves result
|
|
void finishEdit( char inGenerateNewID=true );
|
|
|
|
// recursively saves to current resource pack
|
|
void saveToPack();
|
|
|
|
|
|
// get an image of this sprite
|
|
Image *getImage( char inUseTrans=true );
|
|
|
|
|
|
// implements ResourceType functions as needed by ResourcePicker
|
|
uniqueID getUniqueID();
|
|
Sprite *getSprite( char inUseTrans=true, char inCacheOK=true );
|
|
static const char *getResourceType();
|
|
static SpriteResource getDefaultResource();
|
|
|
|
char *getName() {
|
|
return getSpriteName();
|
|
}
|
|
|
|
|
|
// a compliment of getSprite, for a blinking overlay
|
|
Sprite *getHighlightSprite();
|
|
|
|
|
|
void print();
|
|
|
|
|
|
// blank sprite
|
|
static SpriteResource *sBlankSprite;
|
|
|
|
static void staticInit();
|
|
static void staticFree();
|
|
|
|
|
|
protected:
|
|
void setupDefault();
|
|
|
|
char initFromData( unsigned char *inData, int inLength );
|
|
|
|
// result destroyed by caller
|
|
unsigned char *makeBytes( int *outLength );
|
|
|
|
void makeUniqueID();
|
|
|
|
|
|
// all sprites are exactly one grid square in size
|
|
rgbaColor mPixelColors[P][P];
|
|
|
|
char mTransFlags[P][P];
|
|
|
|
const static int mPixelDataLength = P * P * 4;
|
|
|
|
const static int mTransDataLength = P * P;
|
|
|
|
|
|
char mSetName[11];
|
|
|
|
|
|
uniqueID mID;
|
|
|
|
|
|
};
|
|
|
|
|
|
#endif
|