mirror of
https://github.com/Nimac0/SDL_Minigame
synced 2026-01-12 15:53:42 +00:00
fixed walk/idle animation
This commit is contained in:
parent
76f4ae79ed
commit
3766fefb13
@ -18,6 +18,6 @@ struct Animation
|
|||||||
|
|
||||||
enum AnimationType
|
enum AnimationType
|
||||||
{
|
{
|
||||||
idle = 0,
|
IDLE = 0,
|
||||||
walk = 1
|
WALK = 1
|
||||||
};
|
};
|
||||||
@ -10,6 +10,3 @@
|
|||||||
#define MAP_SIZE_X 25
|
#define MAP_SIZE_X 25
|
||||||
#define MAP_SIZE_Y 20
|
#define MAP_SIZE_Y 20
|
||||||
|
|
||||||
#define IDLE "idle"
|
|
||||||
#define WALK "walk"
|
|
||||||
|
|
||||||
|
|||||||
@ -11,8 +11,18 @@ class SpriteComponent : public Component
|
|||||||
public:
|
public:
|
||||||
int animationIndex = 0;
|
int animationIndex = 0;
|
||||||
|
|
||||||
std::map<const char*, Animation> animations;
|
std::map<AnimationType, Animation*> animations;
|
||||||
|
|
||||||
|
private:
|
||||||
|
TransformComponent* transform;
|
||||||
|
SDL_Texture* texture;
|
||||||
|
SDL_Rect srcRect, destRect;
|
||||||
|
|
||||||
|
bool animated = false;
|
||||||
|
int frames = 0;
|
||||||
|
int speed = 100;
|
||||||
|
|
||||||
|
public:
|
||||||
SpriteComponent() = default;
|
SpriteComponent() = default;
|
||||||
SpriteComponent(const char* path)
|
SpriteComponent(const char* path)
|
||||||
{
|
{
|
||||||
@ -23,8 +33,8 @@ class SpriteComponent : public Component
|
|||||||
{
|
{
|
||||||
animated = isAnimated;
|
animated = isAnimated;
|
||||||
|
|
||||||
Animation idle = Animation((int)AnimationType::idle, 2, 200);
|
Animation* idle = new Animation((int)AnimationType::IDLE, 2, 200);
|
||||||
Animation walk = Animation((int)AnimationType::walk, 2, 200);
|
Animation* walk = new Animation((int)AnimationType::WALK, 2, 200);
|
||||||
|
|
||||||
animations.emplace(IDLE, idle);
|
animations.emplace(IDLE, idle);
|
||||||
animations.emplace(WALK, walk);
|
animations.emplace(WALK, walk);
|
||||||
@ -75,19 +85,10 @@ class SpriteComponent : public Component
|
|||||||
TextureManager::get().draw(this->texture, this->srcRect, this->destRect);
|
TextureManager::get().draw(this->texture, this->srcRect, this->destRect);
|
||||||
}
|
}
|
||||||
|
|
||||||
void play(const char* animationName)
|
void play(AnimationType type)
|
||||||
{
|
{
|
||||||
animationIndex = animations[animationName].index;
|
animationIndex = animations.at(type)->index;
|
||||||
frames = animations[animationName].frames;
|
frames = animations.at(type)->frames;
|
||||||
speed = animations[animationName].speed;
|
speed = animations.at(type)->speed;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
|
||||||
TransformComponent* transform;
|
|
||||||
SDL_Texture* texture;
|
|
||||||
SDL_Rect srcRect, destRect;
|
|
||||||
|
|
||||||
bool animated = false;
|
|
||||||
int frames = 0;
|
|
||||||
int speed = 100;
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -28,6 +28,7 @@ void KeyboardController::update()
|
|||||||
{
|
{
|
||||||
transform->velocity.x = 0;
|
transform->velocity.x = 0;
|
||||||
transform->velocity.y = 0;
|
transform->velocity.y = 0;
|
||||||
|
sprite->play(IDLE);
|
||||||
|
|
||||||
if (keystates[this->up]) {
|
if (keystates[this->up]) {
|
||||||
transform->velocity.y = -1;
|
transform->velocity.y = -1;
|
||||||
@ -35,11 +36,14 @@ void KeyboardController::update()
|
|||||||
}
|
}
|
||||||
if (keystates[this->left]) {
|
if (keystates[this->left]) {
|
||||||
transform->velocity.x = -1;
|
transform->velocity.x = -1;
|
||||||
|
sprite->play(WALK);
|
||||||
}
|
}
|
||||||
if (keystates[this->down]) {
|
if (keystates[this->down]) {
|
||||||
transform->velocity.y = 1;
|
transform->velocity.y = 1;
|
||||||
|
sprite->play(WALK);
|
||||||
}
|
}
|
||||||
if (keystates[this->right]) {
|
if (keystates[this->right]) {
|
||||||
transform->velocity.x = 1;
|
transform->velocity.x = 1;
|
||||||
|
sprite->play(WALK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user