CRM64Pro GDK v0.11.0
A free cross-platform game development kit built on top of SDL 3.0
|
v2.00 (20 June 2023)
The Sprite module includes the Sprite Manager and Sprite for handling all the operations with sprites.
Sprites are a collection of smaller images of uniform and rectangular size contained on the image sprite sheet that can be animated.
The image sprite sheet has associated a specific logic that represents different animation states, types and frames with a time duration.
For the time being, there is only one version of the Sprite Object which is the v1.0 with the following features:
With this manager, you can manage all common operations done in a sprite set.
There is a method for getting the Image id in order to get access to the Image object, for example, you can export the sprite image to an external file or modify the alpha modulation.
The storage layer(load() and save() methods) are using the CDC v1.x specification.
This is an advance "cloning" manager: when loading from a CDC file a sprite which is already loaded/created (using the name as the key), it will create a new child sprite.
Only a single instance of the Sprite Manager exists which is created once Main is instantiated.
You can get a reference to this manager using Main::ISpriteMgr() method.
Classes | |
class | CRM64Pro::Sprite |
Sprite Object class. More... | |
class | CRM64Pro::SpriteMgr |
Sprite Manager class. More... | |
Macros | |
#define | SPR_TYPE_LOOP 1 |
#define | SPR_TYPE_PINGPONG 2 |
#define | SPR_TYPE_ONESHOT 4 |
#define | SPR_STATE_NORMAL 0x8000 |
#define | SPR_STATE_UP 0x4000 |
#define | SPR_STATE_DOWN 0x2000 |
#define | SPR_STATE_LEFT 0x1000 |
#define | SPR_STATE_RIGHT 0x0800 |
#define | SPR_STATE_UPLEFT 0x0400 |
#define | SPR_STATE_UPRIGHT 0x0200 |
#define | SPR_STATE_DOWNLEFT 0x0100 |
#define | SPR_STATE_DOWNRIGHT 0xC000 |
#define | SPR_GET_HIGHSTATE(x) ((x) & 0xFF00) |
#define | SPR_GET_LOWSTATE(x) ((x) & 0x00FF) |
Functions | |
Sint32 | CRM64Pro::Sprite::info (Sint32 iMode=0) |
Request Sprite object information. | |
Sint32 | CRM64Pro::Sprite::getName (string &sName) |
Get the name. | |
Uint32 | CRM64Pro::Sprite::getID () |
Get the ID. | |
Sint32 | CRM64Pro::Sprite::assignImage (Sint32 idImage, Sint32 iOwnership=0) |
Assign an Image to this sprite. | |
Sint32 | CRM64Pro::Sprite::getImage () |
Get the assigned Image of this sprite. | |
Sint32 | CRM64Pro::Sprite::setOffset (Sint32 iX, Sint32 iY) |
Set the sprite offsets for creating the animations and frames. | |
Sint32 | CRM64Pro::Sprite::getOffset (Sint32 *iX, Sint32 *iY) |
Get the sprite offsets (frames and animations). | |
Sint32 | CRM64Pro::Sprite::pause () |
Pause the sprite animation. | |
Sint32 | CRM64Pro::Sprite::resume () |
Resume from a previous paused sprite animation. | |
Sint32 | CRM64Pro::Sprite::status () |
Get the sprite status. | |
Sint32 | CRM64Pro::Sprite::setSpeed (float fSpeed) |
Set the sprite speed. | |
Sint32 | CRM64Pro::Sprite::getAnimNumber () |
Get number of animations. | |
Sint32 | CRM64Pro::Sprite::getAnimCurrent () |
Get current animation number. | |
Sint32 | CRM64Pro::Sprite::selectAnim (Sint32 iAnim) |
Select an animation by state or by number. | |
Sint32 | CRM64Pro::Sprite::setAnimType (Sint32 iAnim, Sint32 iType) |
Set the animation type. | |
Sint32 | CRM64Pro::Sprite::getAnimType (Sint32 iAnim, Sint32 *iType) |
Get the animation type. | |
Sint32 | CRM64Pro::Sprite::setAnimState (Sint32 iAnim, Sint32 iState) |
Set the animation state. | |
Sint32 | CRM64Pro::Sprite::getAnimState (Sint32 iAnim, Sint32 *iState) |
Get the animation state. | |
Sint32 | CRM64Pro::Sprite::orderAnimState (Sint32 iState=-1) |
Ordering the low-state values. | |
Sint32 | CRM64Pro::Sprite::setAnimHotSpot (Sint32 iAnim, Sint32 iHotX, Sint32 iHotY) |
Set the animation hotspot. | |
Sint32 | CRM64Pro::Sprite::getAnimHotSpot (Sint32 iAnim, Sint32 *iHotX, Sint32 *iHotY) |
Get the animation hotspot. | |
Sint32 | CRM64Pro::Sprite::setAnimRange (Sint32 iAnim, Sint32 iFrameStart, Sint32 iFrameEnd) |
Set the animation frame range. | |
Sint32 | CRM64Pro::Sprite::getAnimRange (Sint32 iAnim, Sint32 *iFrameStart, Sint32 *iFrameEnd) |
Get the animation frame range. | |
Sint32 | CRM64Pro::Sprite::getFrameNumber (Sint32 iAnim) |
Get number of frames for the given animation. | |
Sint32 | CRM64Pro::Sprite::getFrameCurrent () |
Get current frame number for the given animation. | |
Sint32 | CRM64Pro::Sprite::selectFrame (Sint32 iAnim, Sint32 iFrame) |
Select a frame for the given animation. | |
Sint32 | CRM64Pro::Sprite::setFrameTime (Sint32 iAnim, Sint32 iFrame, Uint16 iTime) |
Set the frame time duration. | |
Sint32 | CRM64Pro::Sprite::getFrameTime (Sint32 iAnim, Sint32 iFrame, Uint16 *iTime) |
Get the frame time duration. | |
Sint32 | CRM64Pro::Sprite::setPosition (Sint32 iX, Sint32 iY, Sint32 iInterpolation=0) |
Set the sprite position. | |
Sint32 | CRM64Pro::Sprite::getPosition (Sint32 *iX, Sint32 *iY) |
Get the sprite position. | |
Sint32 | CRM64Pro::Sprite::render (Sint32 idRes=0) |
Render the sprite. | |
Sint32 | CRM64Pro::Sprite::save (const string &sFileCDC) |
Save the sprite to a CDC file. | |
Sint32 | CRM64Pro::Sprite::save (Sint32 idCDC) |
Save the sprite to a CDC file. | |
Sint32 | CRM64Pro::SpriteMgr::info (Sint32 iMode=0) |
Request Sprite Manager information. | |
Sint32 | CRM64Pro::SpriteMgr::create (const string &sName, Uint32 iVersion=10) |
Create a new sprite. | |
Sint32 | CRM64Pro::SpriteMgr::close (Sint32 idSprite) |
Close and destroy a sprite. | |
Sint32 | CRM64Pro::SpriteMgr::getNum () |
Get number of loaded objects. | |
Sint32 | CRM64Pro::SpriteMgr::setName (Sint32 idSprite, const string &sName) |
Change the object name. | |
Sprite * | CRM64Pro::SpriteMgr::get (Sint32 idSprite) |
Get a pointer to the sprite using its handler. | |
Sint32 | CRM64Pro::SpriteMgr::child (Sint32 idSprite) |
Create a child sprite dependant on the provided one(the parent). | |
Sint32 | CRM64Pro::SpriteMgr::load (const string &sFileCDC, const string &sName) |
Load a sprite stored in a CDC file. | |
Sint32 | CRM64Pro::SpriteMgr::load (const Sint32 idCDC, const string &sName) |
Load a sprite stored in a CDC file. | |
Sint32 | CRM64Pro::SpriteMgr::remove (const Sint32 idCDC, const string &sName) |
Remove a sprite stored in a CDC file. | |
#define SPR_TYPE_LOOP 1 |
Sprite animation type: loop.
#define SPR_TYPE_PINGPONG 2 |
Sprite animation type: ping-pong.
#define SPR_TYPE_ONESHOT 4 |
Sprite animation type: one-shot.
#define SPR_STATE_NORMAL 0x8000 |
Sprite animation high-state: normal (10000000-00000000)
#define SPR_STATE_UP 0x4000 |
Sprite animation high-state: up (01000000-00000000)
#define SPR_STATE_DOWN 0x2000 |
Sprite animation high-state: down (00100000-00000000)
#define SPR_STATE_LEFT 0x1000 |
Sprite animation high-state: left (00010000-00000000)
#define SPR_STATE_RIGHT 0x0800 |
Sprite animation high-state: right (00001000-00000000)
#define SPR_STATE_UPLEFT 0x0400 |
Sprite animation high-state: up-left (00000100-00000000)
#define SPR_STATE_UPRIGHT 0x0200 |
Sprite animation high-state: up-right (00000010-00000000)
#define SPR_STATE_DOWNLEFT 0x0100 |
Sprite animation high-state: down-left (00000001-00000000)
#define SPR_STATE_DOWNRIGHT 0xC000 |
Sprite animation high-state: down-right (11000000-00000000)
#define SPR_GET_HIGHSTATE | ( | x | ) | ((x) & 0xFF00) |
Each state is a 16bit value, the high byte set the high-state which is defined by the GDK.
Use this macro for getting the sprite animation high-state. See above SPR_STATE_xx.
#define SPR_GET_LOWSTATE | ( | x | ) | ((x) & 0x00FF) |
Each state is a 16bit value, the low byte set the low-state(up to 256) which can be defined by the user.
Use this macro for getting the sprite animation low-state.
Sint32 CRM64Pro::Sprite::info | ( | Sint32 | iMode = 0 | ) |
Request Sprite object information.
For displaying the information, it uses the default log.
iMode | 0 for standard output and 1 for extended output including frame times. |
Sint32 CRM64Pro::Sprite::getName | ( | string & | sName | ) |
Get the name.
sName | a string containing the sprite name. |
Uint32 CRM64Pro::Sprite::getID | ( | ) |
Get the ID.
Sint32 CRM64Pro::Sprite::assignImage | ( | Sint32 | idImage, |
Sint32 | iOwnership = 0 |
||
) |
Assign an Image to this sprite.
It is used for loading an Image when the sprite is created with SpriteMgr::create().
idImage | Image id containing the sprite sheet. |
iOwnership | 0 for creating our own copy of the image or any other integer for taking the ownership of the image, in this case, the image can not be already owned by other item. By default it is set to 0. |
Sint32 CRM64Pro::Sprite::getImage | ( | ) |
Get the assigned Image of this sprite.
Sint32 CRM64Pro::Sprite::setOffset | ( | Sint32 | iX, |
Sint32 | iY | ||
) |
Set the sprite offsets for creating the animations and frames.
The conversion allows to have non-exact offset division, the remainder parts of the image will not be used.
iX | an integer with the offset X for creating the number of frames. The assigned image width will be divided by this value for creating the frames. In addition, a scanning process will look for frames and as soon as it finds an empty one (colorkey or alpha), it will set the last found frame as the end of this animation. |
iY | an integer with the offset Y for creating the number of animations and it also sets the frame's height. The assigned image height will be divided by this value for creating the animations. |
Sint32 CRM64Pro::Sprite::getOffset | ( | Sint32 * | iX, |
Sint32 * | iY | ||
) |
Get the sprite offsets (frames and animations).
iX | an integer pointer filled in with sprite offset X (width of each frame). If nullptr is passed, the method ignores the retrieving of this value. |
iY | an integer pointer filled in with sprite offset Y (height of each frame). If nullptr is passed, the method ignores the retrieving of this value. |
Sint32 CRM64Pro::Sprite::pause | ( | ) |
Pause the sprite animation.
Sint32 CRM64Pro::Sprite::resume | ( | ) |
Resume from a previous paused sprite animation.
Sint32 CRM64Pro::Sprite::status | ( | ) |
Get the sprite status.
C64_STATUS_ENABLED | sprite animation is enabled. |
C64_STATUS_PAUSED | sprite animation is paused. |
C64_STATUS_END | sprite animation has ended, only applicable to SPR_TYPE_ONESHOT animation type. |
Sint32 CRM64Pro::Sprite::setSpeed | ( | float | fSpeed | ) |
Set the sprite speed.
fSpeed | float number setting the relative speed,ex: 0.5 will be 50% slower. By default it is set to 1.0. |
Sint32 CRM64Pro::Sprite::getAnimNumber | ( | ) |
Get number of animations.
Sint32 CRM64Pro::Sprite::getAnimCurrent | ( | ) |
Get current animation number.
Sint32 CRM64Pro::Sprite::selectAnim | ( | Sint32 | iAnim | ) |
Select an animation by state or by number.
iAnim | the animation state (high-state + low-state) or the animation number from 0 to getAnimNumber(). |
Sint32 CRM64Pro::Sprite::setAnimType | ( | Sint32 | iAnim, |
Sint32 | iType | ||
) |
Set the animation type.
iAnim | the animation state (high-state + low-state) or the animation number from 0 to getAnimNumber(). |
iType | Animation type. Check SPR_TYPE_LOOP, SPR_TYPE_PINGPONG and SPR_TYPE_ONESHOT definition for further information. |
Sint32 CRM64Pro::Sprite::getAnimType | ( | Sint32 | iAnim, |
Sint32 * | iType | ||
) |
Get the animation type.
iAnim | the animation state (high-state + low-state) or the animation number from 0 to getAnimNumber(). Use -1 for getting the type of current animation. |
iType | an integer pointer filled in with the animation type (SPR_TYPE_LOOP, SPR_TYPE_PINGPONG or SPR_TYPE_ONESHOT). |
Sint32 CRM64Pro::Sprite::setAnimState | ( | Sint32 | iAnim, |
Sint32 | iState | ||
) |
Set the animation state.
iAnim | the animation state (high-state + low-state) or the animation number from 0 to getAnimNumber(). |
iState | Animation state (high-state + low-state). Each high-state should have unique low-state values or when referring to it, just the first match will be returned and the next matches will never be used. orderAnimState() method can be used for automatically reordering the low-state values. |
Sint32 CRM64Pro::Sprite::getAnimState | ( | Sint32 | iAnim, |
Sint32 * | iState | ||
) |
Get the animation state.
iAnim | the animation state (high-state + low-state) or the animation number from 0 to getAnimNumber(). Use -1 for getting the state of current animation. |
iState | an integer pointer filled in with the animation state (high-state + low-state). |
Sint32 CRM64Pro::Sprite::orderAnimState | ( | Sint32 | iState = -1 | ) |
Ordering the low-state values.
iState | Animation state (high-state + low-state) for ordering its low-state values. By default it is set to -1 for ordering all the Animation states. The way it orders the low-state is assigning values from 0 to n as they appear on the animation (from 0 to number of animations). |
Sint32 CRM64Pro::Sprite::setAnimHotSpot | ( | Sint32 | iAnim, |
Sint32 | iHotX, | ||
Sint32 | iHotY | ||
) |
Set the animation hotspot.
iAnim | the animation state (high-state + low-state) or the animation number from 0 to getAnimNumber(). |
iHotX | the x hotspot position of the animation. You can set any value or PH_CENTER and PH_END enum values. |
iHotY | the y hotspot position of the animation. You can set any value or PH_CENTER and PH_END enum values. |
Sint32 CRM64Pro::Sprite::getAnimHotSpot | ( | Sint32 | iAnim, |
Sint32 * | iHotX, | ||
Sint32 * | iHotY | ||
) |
Get the animation hotspot.
iAnim | the animation state (high-state + low-state) or the animation number from 0 to getAnimNumber(). Use -1 for getting the hotspot of current animation. |
iHotX | an integer pointer filled in with the X hotspot position. If nullptr is passed, the method ignores the retrieving of this value. |
iHotY | an integer pointer filled in with the Y hotspot position. If nullptr is passed, the method ignores the retrieving of this value. |
Sint32 CRM64Pro::Sprite::setAnimRange | ( | Sint32 | iAnim, |
Sint32 | iFrameStart, | ||
Sint32 | iFrameEnd | ||
) |
Set the animation frame range.
iAnim | the animation state (high-state + low-state) or the animation number from 0 to getAnimNumber(). |
iFrameStart | an integer with the start frame number [0, number of frames). If -1 is passed, the method ignores the setting of this value. |
iFrameEnd | an integer with the end frame number [0, number of frames). If -1 is passed, the method ignores the setting of this value. |
Sint32 CRM64Pro::Sprite::getAnimRange | ( | Sint32 | iAnim, |
Sint32 * | iFrameStart, | ||
Sint32 * | iFrameEnd | ||
) |
Get the animation frame range.
iAnim | the animation state (high-state + low-state) or the animation number from 0 to getAnimNumber(). Use -1 for getting the frame range of current animation. |
iFrameStart | an integer pointer filled in with the start frame number [0, number of frames). If nullptr is passed, the method ignores the retrieving of this value. |
iFrameEnd | an integer pointer filled in with the end frame number [0, number of frames). If nullptr is passed, the method ignores the retrieving of this value. |
Sint32 CRM64Pro::Sprite::getFrameNumber | ( | Sint32 | iAnim | ) |
Get number of frames for the given animation.
iAnim | the animation state (high-state + low-state) or the animation number from 0 to getAnimNumber(). Use -1 for getting the frame number of current animation. |
Sint32 CRM64Pro::Sprite::getFrameCurrent | ( | ) |
Get current frame number for the given animation.
Sint32 CRM64Pro::Sprite::selectFrame | ( | Sint32 | iAnim, |
Sint32 | iFrame | ||
) |
Select a frame for the given animation.
iAnim | the animation state (high-state + low-state) or the animation number from 0 to getAnimNumber(). |
iFrame | frame number from 0 to getFrameNumber() to be selected. |
Sint32 CRM64Pro::Sprite::setFrameTime | ( | Sint32 | iAnim, |
Sint32 | iFrame, | ||
Uint16 | iTime | ||
) |
Set the frame time duration.
iAnim | the animation state (high-state + low-state) or the animation number from 0 to getAnimNumber(). |
iFrame | frame number from 0 to getFrameNumber() to be selected. |
iTime | duration in millisecond of this frame. |
Sint32 CRM64Pro::Sprite::getFrameTime | ( | Sint32 | iAnim, |
Sint32 | iFrame, | ||
Uint16 * | iTime | ||
) |
Get the frame time duration.
iAnim | the animation state (high-state + low-state) or the animation number from 0 to getAnimNumber(). Use -1 for getting the current animation. |
iFrame | frame number from 0 to getFrameNumber() to be selected. Use -1 for getting the current frame. |
iTime | duration in millisecond of this frame. |
Sint32 CRM64Pro::Sprite::setPosition | ( | Sint32 | iX, |
Sint32 | iY, | ||
Sint32 | iInterpolation = 0 |
||
) |
Set the sprite position.
iX | an integer with the sprite X position. |
iY | an integer with the sprite Y position. |
iInterpolation | 0 for setting immediately the position on the next render()/renderEx() call. Any other value will set a progressive and interpolated position change during next render()/renderEx() calls while using an Advanced Graphics methods. The interpolation is calculated with the previous position. By default, it is set to 0. |
Sint32 CRM64Pro::Sprite::getPosition | ( | Sint32 * | iX, |
Sint32 * | iY | ||
) |
Get the sprite position.
iX | an integer pointer filled in with X sprite position. If nullptr is passed, the method ignores the retrieving of this value. |
iY | an integer pointer filled in with Y sprite position. If nullptr is passed, the method ignores the retrieving of this value. |
Sint32 CRM64Pro::Sprite::render | ( | Sint32 | idRes = 0 | ) |
Render the sprite.
idRes | a valid screen or image handle. By default it tries to use the default screen. |
Sint32 CRM64Pro::Sprite::save | ( | const string & | sFileCDC | ) |
Save the sprite to a CDC file.
The associated image will also be saved in to the same CDC file.
sFileCDC | string containing the [directory]+filename+[extension]. Directory separators '\' and '/' are supported. |
Sint32 CRM64Pro::Sprite::save | ( | Sint32 | idCDC | ) |
Save the sprite to a CDC file.
The associated image will also be saved in to the same CDC file.
idCDC | CDC id. |
Sint32 CRM64Pro::SpriteMgr::info | ( | Sint32 | iMode = 0 | ) |
Request Sprite Manager information.
For displaying the information, it uses the default log.
iMode | -1 for displaying only Manager information. 0 for displaying Manager and all Objects information. This is the default value. idSprite for displaying Manager and given Sprite id information. |
Sint32 CRM64Pro::SpriteMgr::create | ( | const string & | sName, |
Uint32 | iVersion = 10 |
||
) |
Create a new sprite.
This method will create an empty sprite (no image assigned), use Sprite::assignImage() method for assigning the image.
sName | The name to give to the sprite e.g. 'mySprite'. The object name must be unique and with a maximum size of 64 characters or will be truncated. |
iVersion | Sprite version. 10 means 1.0 which is the only version supported (as of now). v1.0 is set by default. |
Sint32 CRM64Pro::SpriteMgr::close | ( | Sint32 | idSprite | ) |
Close and destroy a sprite.
idSprite | 0 for closing all sprites or the Sprite id. Stand-alone and child sprites can be closed but parent ones, can not as they have at least one dependency(a child). |
Sint32 CRM64Pro::SpriteMgr::getNum | ( | ) |
Get number of loaded objects.
Sint32 CRM64Pro::SpriteMgr::setName | ( | Sint32 | idSprite, |
const string & | sName | ||
) |
Change the object name.
idSprite | Sprite id. |
sName | The name to give to the sprite e.g. 'mySprite'. The object name must be unique and with a maximum size of 64 characters or will be truncated. |
Sprite * CRM64Pro::SpriteMgr::get | ( | Sint32 | idSprite | ) |
Get a pointer to the sprite using its handler.
idSprite | Sprite id. |
Sint32 CRM64Pro::SpriteMgr::child | ( | Sint32 | idSprite | ) |
Create a child sprite dependant on the provided one(the parent).
A child sprite uses the attributes of the parent and creates also a parent child image for having different attributes.
idSprite | parent Sprite id. If the provided sprite is a child, internally it will redirect this request to the parent in order to create the new child. |
Sint32 CRM64Pro::SpriteMgr::load | ( | const string & | sFileCDC, |
const string & | sName | ||
) |
Load a sprite stored in a CDC file.
sFileCDC | string containing the [directory]+filename. Directory separators '\' and '/' are supported. |
sName | string with the sprite name (maximum size of 64 characters). If the sprite is already created, this method will call child() for creating a child. |
Sint32 CRM64Pro::SpriteMgr::load | ( | const Sint32 | idCDC, |
const string & | sName | ||
) |
Load a sprite stored in a CDC file.
idCDC | CDC id. |
sName | string with the sprite name (maximum size of 64 characters). If the sprite is already created, this method will call child() for creating a child. |
Sint32 CRM64Pro::SpriteMgr::remove | ( | const Sint32 | idCDC, |
const string & | sName | ||
) |
Remove a sprite stored in a CDC file.
idCDC | CDC id. |
sName | string with the sprite name (maximum size of 64 characters). |