0
0
mirror of https://github.com/Nimac0/SDL_Minigame synced 2026-01-12 07:53:43 +00:00

Merge remote-tracking branch 'origin/Animations'

This commit is contained in:
Benedikt Galbavy 2024-01-26 21:49:32 +01:00
commit cd4c6d7339
6 changed files with 41 additions and 35 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -19,5 +19,9 @@ struct Animation
enum AnimationType
{
IDLE = 0,
WALK = 1
};
WALK_R = 1,
WALK_L = 2
};

View File

@ -20,9 +20,9 @@ public:
SpriteComponent* sprite;
//for attack cooldown in between shots
Uint32 lastFireTime;
Uint32 fireCooldown = 1000; //in ms can be adjusted to change possible attack-speed
//for attack cooldown in between shots
Uint32 lastFireTime;
Uint32 fireCooldown = 1000; //in ms can be adjusted to change possible attack-speed
KeyboardController() = default;
KeyboardController(SDL_Scancode up, SDL_Scancode down, SDL_Scancode left, SDL_Scancode right, SDL_Scancode fire, Vector2D fireVelocity);
@ -32,7 +32,7 @@ public:
void update() override;
private:
//for creation of projectiles
TransformComponent* player; //for starting position of projectile
Vector2D fireVelocity; //decide source of projectile and flying direction
};
//for creation of projectiles
TransformComponent* player; //for starting position of projectile
Vector2D fireVelocity; //decide source of projectile and flying direction
};

View File

@ -10,8 +10,8 @@ KeyboardController::KeyboardController(SDL_Scancode up, SDL_Scancode down, SDL_S
this->down = down;
this->left = left;
this->right = right;
this->fire = fire;
this->fireVelocity = fireVelocity;
this->fire = fire;
this->fireVelocity = fireVelocity;
}
void KeyboardController::init()
@ -28,42 +28,42 @@ void KeyboardController::update()
if (keystates[this->up]) {
transform->velocity.y = -1;
sprite->play(WALK);
sprite->play(WALK_R);
}
if (keystates[this->left]) {
transform->velocity.x = -1;
sprite->play(WALK);
sprite->play(WALK_L);
}
if (keystates[this->down]) {
transform->velocity.y = 1;
sprite->play(WALK);
sprite->play(WALK_R);
}
if (keystates[this->right]) {
transform->velocity.x = 1;
sprite->play(WALK);
sprite->play(WALK_R);
}
if (keystates[this->fire]) {
if (keystates[this->fire]) {
Uint32 currentTicks = SDL_GetTicks();
Uint32 currentTicks = SDL_GetTicks();
if (currentTicks - lastFireTime >= fireCooldown) {
if (currentTicks - lastFireTime >= fireCooldown) {
player = &entity->getComponent<TransformComponent>();
player = &entity->getComponent<TransformComponent>();
//checks player source via the firing velocity
//TODO: adding actual projectile textures
if(fireVelocity.x > 0) {
Game::assets->createProjectile(Vector2D(player->position.x, player->position.y), fireVelocity,
false,1, 180, 1, "assets/egg.png");
}
else {
Game::assets->createProjectile(Vector2D(player->position.x, player->position.y), fireVelocity,
true,1, 180, 1, "assets/egg.png");
}
//checks player source via the firing velocity
//TODO: adding actual projectile textures
if (fireVelocity.x > 0) {
Game::assets->createProjectile(Vector2D(player->position.x, player->position.y), fireVelocity,
false, 1, 180, 1, "assets/egg.png");
}
else {
Game::assets->createProjectile(Vector2D(player->position.x, player->position.y), fireVelocity,
true, 1, 180, 1, "assets/egg.png");
}
lastFireTime = currentTicks;
}
lastFireTime = currentTicks;
}
}
}
}

View File

@ -16,10 +16,12 @@ SpriteComponent::SpriteComponent(const char* path, bool isAnimated)
animated = isAnimated;
Animation* idle = new Animation((int)AnimationType::IDLE, 2, 200);
Animation* walk = new Animation((int)AnimationType::WALK, 2, 200);
Animation* walkR = new Animation((int)AnimationType::WALK_R, 2, 200);
Animation* walkL = new Animation((int)AnimationType::WALK_L, 2, 200);
animations.emplace(IDLE, idle);
animations.emplace(WALK, walk);
animations.emplace(WALK_R, walkR);
animations.emplace(WALK_L, walkL);
play(IDLE);
@ -64,7 +66,7 @@ void SpriteComponent::draw()
TextureManager::get().draw(this->texture, this->srcRect, this->destRect);
}
void SpriteComponent::play(AnimationType type)
void SpriteComponent::play(AnimationType type)
{
animationIndex = animations.at(type)->index;
frames = animations.at(type)->frames;