55 lines
1.1 KiB
C++
55 lines
1.1 KiB
C++
#include "tabe.h"
|
|
#include "resource.h"
|
|
#include "param.h"
|
|
#include <algorithm>
|
|
|
|
// Constructor
|
|
Tabe::Tabe()
|
|
: sprite_(std::make_unique<AnimatedSprite>(Resource::get()->getTexture("tabe.png"), Resource::get()->getAnimation("tabe.ani")))
|
|
{
|
|
}
|
|
|
|
// Actualiza la lógica
|
|
void Tabe::update()
|
|
{
|
|
if (enabled_)
|
|
{
|
|
sprite_->update();
|
|
move();
|
|
}
|
|
}
|
|
|
|
// Dibuja el objeto
|
|
void Tabe::render()
|
|
{
|
|
if (enabled_)
|
|
{
|
|
sprite_->render();
|
|
}
|
|
}
|
|
|
|
// Mueve el objeto
|
|
void Tabe::move()
|
|
{
|
|
x_ += speed_;
|
|
const float min_x = param.game.game_area.rect.x;
|
|
const float max_x = param.game.game_area.rect.x + param.game.game_area.rect.w - WIDTH_;
|
|
if (x_ < min_x || x_ > max_x)
|
|
{
|
|
x_ = std::clamp(x_, min_x, max_x);
|
|
speed_ = -speed_;
|
|
sprite_->setFlip(speed_ > 0.0f ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE);
|
|
}
|
|
shiftSprite();
|
|
}
|
|
|
|
// Habilita el objeto
|
|
void Tabe::enable()
|
|
{
|
|
enabled_ = true;
|
|
speed_ = 5.0f;
|
|
x_ = 50.0f;
|
|
y_ = 20.0f;
|
|
sprite_->setFlip(speed_ > 0.0f ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE);
|
|
shiftSprite();
|
|
} |