From 6b2901cebcb55f60c3d78bfc94f4e56738b0f5c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Valor=20Mart=C3=ADnez?= Date: Thu, 25 Aug 2022 21:27:00 +0200 Subject: [PATCH] Creado el primer boceto de la clase padre actor --- source/actor.cpp | 59 +++++++++++++++++++++++++++++++++++++++++++++++ source/actor.h | 54 +++++++++++++++++++++++++++++++++++++++++++ source/actors.cpp | 10 -------- source/actors.h | 21 ----------------- source/prog.cpp | 2 +- 5 files changed, 114 insertions(+), 32 deletions(-) create mode 100644 source/actor.cpp create mode 100644 source/actor.h delete mode 100644 source/actors.cpp delete mode 100644 source/actors.h diff --git a/source/actor.cpp b/source/actor.cpp new file mode 100644 index 0000000..d3eebe2 --- /dev/null +++ b/source/actor.cpp @@ -0,0 +1,59 @@ +#include "actor.h" +#include +#include + +// 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; +} \ No newline at end of file diff --git a/source/actor.h b/source/actor.h new file mode 100644 index 0000000..b419120 --- /dev/null +++ b/source/actor.h @@ -0,0 +1,54 @@ +#pragma once + +#include +#include "utils.h" +#include "asset.h" +#include "animatedsprite.h" +#include + +#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 diff --git a/source/actors.cpp b/source/actors.cpp deleted file mode 100644 index 81ad7a7..0000000 --- a/source/actors.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include "actors.h" - -// Constructor -Actors::Actors() -{ -} - -Actors::~Actors() -{ -} diff --git a/source/actors.h b/source/actors.h deleted file mode 100644 index 6c8df1a..0000000 --- a/source/actors.h +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once - -#include - -#ifndef ACTORS_H -#define ACTORS_H - -class Actors -{ -private: - - -public: - // Constructor - Actors(); - - // Destructor - ~Actors(); -}; - -#endif diff --git a/source/prog.cpp b/source/prog.cpp index 4db8ab0..9176fe6 100644 --- a/source/prog.cpp +++ b/source/prog.cpp @@ -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);