Creado el primer boceto de la clase padre actor
This commit is contained in:
59
source/actor.cpp
Normal file
59
source/actor.cpp
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
#include "actor.h"
|
||||||
|
#include <fstream>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
|
// Constructor
|
||||||
|
Actor::Actor(actor_t actor)
|
||||||
|
{
|
||||||
|
// Obten punteros a objetos
|
||||||
|
asset = actor.asset;
|
||||||
|
renderer = actor.renderer;
|
||||||
|
|
||||||
|
// Crea objetos
|
||||||
|
texture = new LTexture();
|
||||||
|
loadTextureFromFile(texture, asset->get(actor.tileset), renderer);
|
||||||
|
sprite = new AnimatedSprite(texture, renderer, asset->get(actor.animation));
|
||||||
|
|
||||||
|
// Obten el resto de valores
|
||||||
|
sprite->setPosX(actor.x);
|
||||||
|
sprite->setPosY(actor.y);
|
||||||
|
sprite->setVelX(actor.vx);
|
||||||
|
sprite->setVelY(actor.vy);
|
||||||
|
|
||||||
|
// Inicializa el sprite con el resto de parametros comunes
|
||||||
|
sprite->setWidth(actor.w);
|
||||||
|
sprite->setHeight(actor.h);
|
||||||
|
sprite->setCurrentAnimation("walk");
|
||||||
|
sprite->setFlip(actor.vx>0?SDL_FLIP_NONE:SDL_FLIP_HORIZONTAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
Actor::~Actor()
|
||||||
|
{
|
||||||
|
texture->unload();
|
||||||
|
delete texture;
|
||||||
|
texture = nullptr;
|
||||||
|
|
||||||
|
delete sprite;
|
||||||
|
sprite = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pinta el enemigo en pantalla
|
||||||
|
void Actor::render()
|
||||||
|
{
|
||||||
|
sprite->render();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Actualiza las variables del objeto
|
||||||
|
void Actor::update()
|
||||||
|
{
|
||||||
|
sprite->update();
|
||||||
|
sprite->animate();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Obtiene el rectangulo de colision del enemigo
|
||||||
|
SDL_Rect &Actor::getCollider()
|
||||||
|
{
|
||||||
|
collider = sprite->getRect();
|
||||||
|
return collider;
|
||||||
|
}
|
||||||
54
source/actor.h
Normal file
54
source/actor.h
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <SDL2/SDL.h>
|
||||||
|
#include "utils.h"
|
||||||
|
#include "asset.h"
|
||||||
|
#include "animatedsprite.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#ifndef ACTOR_H
|
||||||
|
#define ACTOR_H
|
||||||
|
|
||||||
|
// Estructura para pasar los datos de un enemigo
|
||||||
|
struct actor_t
|
||||||
|
{
|
||||||
|
SDL_Renderer *renderer; // El renderizador de la ventana
|
||||||
|
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
|
||||||
|
std::string tileset; // Fichero con los graficos del enemigo
|
||||||
|
std::string animation; // Fichero con las animaciones del enemigo
|
||||||
|
int w; // Anchura del enemigo
|
||||||
|
int h; // Altura del enemigo
|
||||||
|
float x; // Posición inicial en el eje X
|
||||||
|
float y; // Posición inicial en el eje Y
|
||||||
|
float vx; // Velocidad en el eje X
|
||||||
|
float vy; // Velocidad en el eje Y
|
||||||
|
};
|
||||||
|
|
||||||
|
// Clase Actor
|
||||||
|
class Actor
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
SDL_Renderer *renderer; // El renderizador de la ventana
|
||||||
|
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
|
||||||
|
LTexture *texture; // Textura con los graficos del enemigo
|
||||||
|
AnimatedSprite *sprite; // Sprite del enemigo
|
||||||
|
SDL_Rect collider; // Caja de colisión
|
||||||
|
|
||||||
|
public:
|
||||||
|
// Constructor
|
||||||
|
Actor(actor_t actor);
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
~Actor();
|
||||||
|
|
||||||
|
// Pinta el enemigo en pantalla
|
||||||
|
void render();
|
||||||
|
|
||||||
|
// Actualiza las variables del objeto
|
||||||
|
void update();
|
||||||
|
|
||||||
|
// Obtiene el rectangulo de colision del enemigo
|
||||||
|
SDL_Rect &getCollider();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#include "actors.h"
|
|
||||||
|
|
||||||
// Constructor
|
|
||||||
Actors::Actors()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
Actors::~Actors()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include <SDL2/SDL.h>
|
|
||||||
|
|
||||||
#ifndef ACTORS_H
|
|
||||||
#define ACTORS_H
|
|
||||||
|
|
||||||
class Actors
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
|
||||||
// Constructor
|
|
||||||
Actors();
|
|
||||||
|
|
||||||
// Destructor
|
|
||||||
~Actors();
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -26,7 +26,7 @@ Prog::Prog(std::string executablePath)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
section.name = SECTION_PROG_TITLE;
|
section.name = SECTION_PROG_GAME;
|
||||||
}
|
}
|
||||||
input = new Input(asset->get("gamecontrollerdb.txt"));
|
input = new Input(asset->get("gamecontrollerdb.txt"));
|
||||||
screen = new Screen(window, renderer, options);
|
screen = new Screen(window, renderer, options);
|
||||||
|
|||||||
Reference in New Issue
Block a user