diff options
Diffstat (limited to 'src/animation.c')
-rw-r--r-- | src/animation.c | 43 |
1 files changed, 29 insertions, 14 deletions
diff --git a/src/animation.c b/src/animation.c index 2fc20fb..deb764c 100644 --- a/src/animation.c +++ b/src/animation.c @@ -2,37 +2,52 @@ #include "game.h" #include <raylib.h> -Animation loadAnimationFromFile(const char* fileName) +AnimationAsset loadAnimationAssetFromFile(const char* fileName) { - Animation animation; + AnimationAsset animationAsset; + animationAsset.image = LoadImageAnim(fileName, &animationAsset.frameCount); + + return animationAsset; +} - // Load image in. - animation.image = LoadImageAnim(fileName, &animation.frameCount); - animation.texture = LoadTextureFromImage(animation.image); +void freeAnimationAsset(AnimationAsset* animationAsset) +{ + UnloadImage(animationAsset->image); +} - // Set options. +Animation createAnimation(AnimationAsset* asset, double delay) +{ + Animation animation; + + animation.frameCount = asset->frameCount; animation.currentFrame = 0; - animation.delay = ANIMATION_DEFAULT_DELAY; - animation.lastTime = -1.0; // -1.0 means there wasn't a last time. + + animation.asset = asset; + animation.texture = LoadTextureFromImage(asset->image); + + animation.width = asset->image.width; + animation.height = asset->image.height; + + animation.delay = delay; + animation.lastTime = -1; // -1 for no last time. return animation; } -void freeAnimation(Animation* animation) +void closeAnimation(Animation* animation) { - UnloadImage(animation->image); UnloadTexture(animation->texture); } -void setAnimationFrame(Animation * animation, int frame) +void setAnimationFrame(Animation* animation, int frame) { animation->currentFrame = frame; - unsigned int nextFrameDataOffset = animation->image.width * animation->image.height * 4 * frame; + unsigned int nextFrameDataOffset = animation->width * animation->height * 4 * frame; - UpdateTexture(animation->texture, ((unsigned int*)animation->image.data) + nextFrameDataOffset); + UpdateTexture(animation->texture, ((unsigned int*)animation->asset->image.data) + nextFrameDataOffset); } -void runAnimation(Animation * animation) +void runAnimation(Animation* animation) { double currentTime = GetTime(); |