commit de me ane cap a casa
This commit is contained in:
@@ -4,23 +4,31 @@
|
||||
#include "animated_sprite.h" // para SpriteAnimated
|
||||
class Texture;
|
||||
|
||||
enum class PathType
|
||||
{
|
||||
VERTICAL,
|
||||
HORIZONTAL,
|
||||
};
|
||||
|
||||
// Clase PathSprite
|
||||
class PathSprite : public AnimatedSprite
|
||||
{
|
||||
private:
|
||||
// Estructuras
|
||||
struct Path
|
||||
{
|
||||
std::vector<SDL_Point> spots; // Puntos por los que se desplazará el sprite
|
||||
int waiting_counter; // Tiempo de espera una vez en el destino
|
||||
bool on_destination = false; // Indica si ha llegado al destino
|
||||
bool finished = false; // Indica si ha terminado de esperarse
|
||||
int counter = 0; // Contador interno
|
||||
struct Path {
|
||||
std::vector<SDL_Point> spots; // Puntos por los que se desplazará el sprite
|
||||
int fixed_pos; // Coordenada fija
|
||||
int waiting_counter; // Tiempo de espera una vez en el destino
|
||||
bool on_destination = false; // Indica si ha llegado al destino
|
||||
bool finished = false; // Indica si ha terminado de esperarse
|
||||
int counter = 0; // Contador interno
|
||||
PathType type; // Tipo de recorrido
|
||||
|
||||
// Constructor
|
||||
Path(const std::vector<SDL_Point>& spots_init, int waiting_counter_init, int fixed_pos_init, PathType type_init)
|
||||
: spots(spots_init), waiting_counter(waiting_counter_init), fixed_pos(fixed_pos_init), type(type_init) {}
|
||||
};
|
||||
|
||||
// Constructor
|
||||
Path(const std::vector<SDL_Point> &spots_init, int waiting_counter_init)
|
||||
: spots(spots_init), waiting_counter(waiting_counter_init) {}
|
||||
};
|
||||
|
||||
// Variables
|
||||
bool finished_ = false; // Indica si ya ha terminado
|
||||
@@ -28,13 +36,10 @@ private:
|
||||
int current_path_ = 0; // Path que se está recorriendo actualmente
|
||||
std::vector<Path> paths_; // Caminos a recorrer por el sprite
|
||||
|
||||
// Devuelve un vector con los puntos que conforman la ruta
|
||||
std::vector<SDL_Point> createVerticalPath(SDL_Point start, SDL_Point end, int steps);
|
||||
|
||||
// Devuelve un vector con los puntos que conforman la ruta
|
||||
std::vector<SDL_Point> createHorizontalPath(SDL_Point start, SDL_Point end, int steps);
|
||||
|
||||
// Coloca el sprite en los diferentes puntos del recorrido
|
||||
void moveThroughCurrentPath();
|
||||
|
||||
// Cambia de recorrido o finaliza
|
||||
void goToNextPathOrDie();
|
||||
|
||||
public:
|
||||
@@ -47,12 +52,21 @@ public:
|
||||
// Actualiza la posición del sprite
|
||||
void update() override;
|
||||
|
||||
// Añade un path vertical
|
||||
// Añade un recorrido vertical
|
||||
void addVerticalPath(SDL_Point start, SDL_Point end, int steps, int waiting_counter);
|
||||
|
||||
// Añade un path horizontal
|
||||
// Añade un recorrido horizontal
|
||||
void addHorizontalPath(SDL_Point start, SDL_Point end, int steps, int waiting_counter);
|
||||
|
||||
// Añade un recorrido desde un vector
|
||||
void addPath(std::vector<SDL_Point> spots, int waiting_counter);
|
||||
|
||||
// Devuelve un vector con los puntos que conforman la ruta
|
||||
std::vector<SDL_Point> createVerticalPath(const SDL_Point &start, const SDL_Point &end, int steps);
|
||||
|
||||
// Devuelve un vector con los puntos que conforman la ruta
|
||||
std::vector<SDL_Point> createHorizontalPath(SDL_Point start, SDL_Point end, int steps);
|
||||
|
||||
// Habilita el objeto
|
||||
void enable();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user