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
|
||||
{
|
||||
section.name = SECTION_PROG_TITLE;
|
||||
section.name = SECTION_PROG_GAME;
|
||||
}
|
||||
input = new Input(asset->get("gamecontrollerdb.txt"));
|
||||
screen = new Screen(window, renderer, options);
|
||||
|
||||
Reference in New Issue
Block a user