Bullet: ara tenen animació de tres frames, encara que no es nota una puta merda
This commit is contained in:
@@ -3,11 +3,12 @@
|
||||
#include <memory> // Para unique_ptr, make_unique, shared_ptr
|
||||
#include "param.h" // Para Param, ParamGame, param
|
||||
#include "sprite.h" // Para Sprite
|
||||
class Texture; // lines 5-5
|
||||
#include "resource.h"
|
||||
class Texture; // lines 5-5
|
||||
|
||||
// Constructor
|
||||
Bullet::Bullet(float x, float y, BulletType bullet_type, bool powered_up, int owner, std::shared_ptr<Texture> texture)
|
||||
: sprite_(std::make_unique<Sprite>(texture, SDL_FRect{x, y, BULLET_WIDTH_, BULLET_HEIGHT_})),
|
||||
Bullet::Bullet(float x, float y, BulletType bullet_type, bool powered, int owner)
|
||||
: sprite_(std::make_unique<AnimatedSprite>(Resource::get()->getTexture("bullet.png"), Resource::get()->getAnimation("bullet.ani"))),
|
||||
pos_x_(x),
|
||||
pos_y_(y),
|
||||
bullet_type_(bullet_type),
|
||||
@@ -17,9 +18,24 @@ Bullet::Bullet(float x, float y, BulletType bullet_type, bool powered_up, int ow
|
||||
: (bullet_type_ == BulletType::RIGHT) ? BULLET_VEL_X_RIGHT_
|
||||
: 0;
|
||||
|
||||
int sprite_offset = powered_up ? 3 : 0;
|
||||
int offset = (static_cast<int>(bullet_type) + sprite_offset) * BULLET_WIDTH_;
|
||||
sprite_->setSpriteClip(offset, 0, BULLET_WIDTH_, BULLET_HEIGHT_);
|
||||
std::string powered_type = powered ? "powered_" : "normal_";
|
||||
switch (bullet_type)
|
||||
{
|
||||
case BulletType::UP:
|
||||
sprite_->setCurrentAnimation(powered_type + "up");
|
||||
break;
|
||||
|
||||
case BulletType::LEFT:
|
||||
sprite_->setCurrentAnimation(powered_type + "left");
|
||||
break;
|
||||
|
||||
case BulletType::RIGHT:
|
||||
sprite_->setCurrentAnimation(powered_type + "right");
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
collider_.r = BULLET_WIDTH_ / 2;
|
||||
shiftColliders();
|
||||
@@ -28,7 +44,15 @@ Bullet::Bullet(float x, float y, BulletType bullet_type, bool powered_up, int ow
|
||||
// Implementación de render (llama al render del sprite_)
|
||||
void Bullet::render()
|
||||
{
|
||||
sprite_->render();
|
||||
if (bullet_type_ != BulletType::NONE)
|
||||
sprite_->render();
|
||||
}
|
||||
|
||||
// Actualiza el estado del objeto
|
||||
BulletMoveStatus Bullet::update()
|
||||
{
|
||||
sprite_->update();
|
||||
return move();
|
||||
}
|
||||
|
||||
// Implementación del movimiento usando BulletMoveStatus
|
||||
|
||||
Reference in New Issue
Block a user