diff --git a/data/room/room1.tmx b/data/room/room1.tmx
index c9d7974..91215be 100644
--- a/data/room/room1.tmx
+++ b/data/room/room1.tmx
@@ -3,22 +3,22 @@
-121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,
-121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-121,0,0,0,0,161,162,163,121,121,121,121,121,121,121,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-121,0,0,121,121,181,182,183,0,0,0,0,0,0,0,0,0,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,163,0,0,0,0,0,0,0,0,0,0,0,0,0,
-121,161,163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,181,183,121,121,121,0,0,0,0,0,121,121,121,121,121,
-121,181,183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,0,0,0,0,0,0,0,
-121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-121,0,0,0,0,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,0,0,0,0,0,0,
-121,0,0,0,0,0,0,0,0,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-161,162,163,161,162,163,161,162,163,161,162,163,161,162,163,161,162,163,161,162,163,161,162,163,161,162,163,161,162,163,161,163,
-181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,183
+108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+108,0,0,0,0,108,108,108,108,108,108,108,108,108,108,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+108,0,0,108,108,108,0,0,0,0,0,0,0,0,0,0,0,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,108,0,0,0,0,0,0,0,0,0,0,0,0,0,
+108,108,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,108,108,108,0,0,0,0,0,108,108,108,108,108,
+108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,0,0,0,0,0,0,0,
+108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+108,0,0,0,0,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,0,0,0,0,0,0,0,
+108,0,0,0,0,0,0,0,0,211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,
+27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27
diff --git a/media/tilesets/room1.png b/media/tilesets/room1.png
index 42cb230..b64ec39 100644
Binary files a/media/tilesets/room1.png and b/media/tilesets/room1.png differ
diff --git a/source/animatedsprite.cpp b/source/animatedsprite.cpp
index a7bec77..c885fe0 100644
--- a/source/animatedsprite.cpp
+++ b/source/animatedsprite.cpp
@@ -1,13 +1,6 @@
#include "const.h"
#include "animatedsprite.h"
-// Constructor
-AnimatedSprite::AnimatedSprite(LTexture *texture, SDL_Renderer *renderer)
-{
- mRenderer = renderer;
- mTexture = texture;
-}
-
// Destructor
AnimatedSprite::~AnimatedSprite()
{
diff --git a/source/animatedsprite.h b/source/animatedsprite.h
index ee0d4ac..47611db 100644
--- a/source/animatedsprite.h
+++ b/source/animatedsprite.h
@@ -27,7 +27,11 @@ private:
public:
// Constructor
- AnimatedSprite(LTexture *texture, SDL_Renderer *renderer);
+ AnimatedSprite(LTexture *texture, SDL_Renderer *renderer)
+ : MovingSprite(0, 0, 0, 0, 0, 0, 0, 0, texture, renderer)
+ {
+
+ };
// Destructor
~AnimatedSprite();
diff --git a/source/enemy.cpp b/source/enemy.cpp
index 2323159..9f39d83 100644
--- a/source/enemy.cpp
+++ b/source/enemy.cpp
@@ -77,13 +77,11 @@ void Enemy::checkPath()
{
if (sprite->getPosX() > x2 || sprite->getPosX() < x1)
{
- // sprite->setPosX(sprite->getPosX() - sprite->getVelX());
sprite->setVelX(sprite->getVelX() * (-1));
}
if (sprite->getPosY() > y2 || sprite->getPosY() < y1)
{
- // sprite->setPosY(sprite->getPosY() - sprite->getVelY());
sprite->setVelY(sprite->getVelY() * (-1));
}
}
diff --git a/source/item.cpp b/source/item.cpp
new file mode 100644
index 0000000..028bf06
--- /dev/null
+++ b/source/item.cpp
@@ -0,0 +1,63 @@
+#include "item.h"
+#include
+#include
+
+// Constructor
+Item::Item(SDL_Rect _rect, std::string _tileset, SDL_Renderer *_renderer, Asset *_asset)
+{
+ // Obten punteros a objetos
+ asset = _asset;
+ renderer = _renderer;
+
+ // Crea objetos
+ texture = new LTexture();
+ sprite = new Sprite(_rect, texture, renderer);
+
+ // Carga la textura
+ loadTextureFromFile(texture, asset->get(_tileset), renderer);
+
+ // Inicia variables
+ sprite->setSpriteClip(0,0,8,8);
+
+ // Inicializa los colores
+ color_t c = stringToColor("blue");
+ color.push_back(c);
+
+ c = stringToColor("red");
+ color.push_back(c);
+
+ c = stringToColor("purple");
+ color.push_back(c);
+
+ c = stringToColor("green");
+ color.push_back(c);
+
+ c = stringToColor("cyan");
+ color.push_back(c);
+
+ c = stringToColor("yellow");
+ color.push_back(c);
+}
+
+// Destructor
+Item::~Item()
+{
+ texture->unload();
+ delete texture;
+ texture = nullptr;
+
+ delete sprite;
+ sprite = nullptr;
+}
+
+// Pinta el enemigo en pantalla
+void Item::draw()
+{
+
+}
+
+// Actualiza las variables del objeto
+void Item::update()
+{
+
+}
diff --git a/source/item.h b/source/item.h
new file mode 100644
index 0000000..9271538
--- /dev/null
+++ b/source/item.h
@@ -0,0 +1,45 @@
+#pragma once
+#include "ifdefs.h"
+#include "utils.h"
+#include "asset.h"
+#include "sprite.h"
+#include
+
+#ifndef ITEM_H
+#define ITEM_H
+
+/*
+Un item deberia tener la siguiente informacion:
+POSICION INICIAL
+PNG ASOCIADO
+*/
+
+// Clase Item
+class Item
+{
+private:
+ LTexture *texture; // Textura con los graficos del objeto
+ Sprite *sprite; // Sprite del objeto
+
+ SDL_Renderer *renderer; // El renderizador de la ventana
+ Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
+ std::vector color; // Vector con los colores del objeto
+
+ // Comprueba si ha llegado al limite del recorrido para darse media vuelta
+ void checkPath();
+
+public:
+ // Constructor
+ Item(SDL_Rect _rect, std::string _tileset, SDL_Renderer *_renderer, Asset *_asset);
+
+ // Destructor
+ ~Item();
+
+ // Pinta el objeto en pantalla
+ void draw();
+
+ // Actualiza las variables del objeto
+ void update();
+};
+
+#endif
diff --git a/source/movingsprite.cpp b/source/movingsprite.cpp
index ea76dfd..2b04ccc 100644
--- a/source/movingsprite.cpp
+++ b/source/movingsprite.cpp
@@ -1,16 +1,9 @@
#include "const.h"
#include "movingsprite.h"
-// Constructor
-MovingSprite::MovingSprite()
-{
- clear();
-}
-
// Destructor
MovingSprite::~MovingSprite()
{
- clear();
}
// Reinicia todas las variables
@@ -38,50 +31,6 @@ void MovingSprite::clear()
mFlip = SDL_FLIP_NONE; // Establece como se ha de voltear el sprite
}
-// Iniciador
-void MovingSprite::init(float x, float y, int w, int h, float velx, float vely, float accelx, float accely, LTexture *texture, SDL_Renderer *renderer)
-{
- // Establece el alto y el ancho del sprite
- setWidth(w);
- setHeight(h);
-
- // Establece la posición X,Y del sprite
- setPosX(x);
- setPosY(y);
-
- // Establece la velocidad X,Y del sprite
- setVelX(velx);
- setVelY(vely);
-
- // Establece la aceleración X,Y del sprite
- setAccelX(accelx);
- setAccelY(accely);
-
- // Establece el zoom W,H del sprite
- setZoomW(1);
- setZoomH(1);
-
- // Establece el angulo con el que se dibujará
- setAngle(0.0);
-
- // Establece los valores de rotacion
- setRotate(false);
- setRotateSpeed(0);
- setRotateAmount(0.0);
-
- // Contador interno
- mCounter = 0;
-
- // Establece la textura donde están los gráficos para el sprite
- setTexture(texture);
-
- // Establece el renderizador
- setRenderer(renderer);
-
- // Establece el rectangulo de donde coger la imagen
- setSpriteClip(0, 0, w, h);
-}
-
// Mueve el sprite
void MovingSprite::move()
{
diff --git a/source/movingsprite.h b/source/movingsprite.h
index 18d6f54..06ceb8d 100644
--- a/source/movingsprite.h
+++ b/source/movingsprite.h
@@ -31,14 +31,47 @@ protected:
public:
// Constructor
- MovingSprite();
+ MovingSprite(float x, float y, int w, int h, float velx, float vely, float accelx, float accely, LTexture *texture, SDL_Renderer *renderer)
+ : Sprite((int)x, (int)y, w, h, texture, renderer)
+ {
+ // Establece el alto y el ancho del sprite
+ setWidth(w);
+ setHeight(h);
+
+ // Establece la posición X,Y del sprite
+ setPosX(x);
+ setPosY(y);
+
+ // Establece la velocidad X,Y del sprite
+ setVelX(velx);
+ setVelY(vely);
+
+ // Establece la aceleración X,Y del sprite
+ setAccelX(accelx);
+ setAccelY(accely);
+
+ // Establece el zoom W,H del sprite
+ setZoomW(1);
+ setZoomH(1);
+
+ // Establece el angulo con el que se dibujará
+ setAngle(0.0);
+
+ // Establece los valores de rotacion
+ setRotate(false);
+ setRotateSpeed(0);
+ setRotateAmount(0.0);
+
+ // Contador interno
+ mCounter = 0;
+
+ // Establece el rectangulo de donde coger la imagen
+ setSpriteClip(0, 0, w, h);
+ };
// Destructor
~MovingSprite();
- // Iniciador
- void init(float x, float y, int w, int h, float velx, float vely, float accelx, float accely, LTexture *texture, SDL_Renderer *renderer);
-
// Mueve el sprite
void move();
diff --git a/source/room.cpp b/source/room.cpp
index ce6ffd5..a9ef9a4 100644
--- a/source/room.cpp
+++ b/source/room.cpp
@@ -397,13 +397,13 @@ int Room::getTile(SDL_Point point)
if (pos < 512)
{
// Los tiles entre el 1 y el 80 son solidos
- if ((tilemap[pos] > 0) && (tilemap[pos] < 81))
+ if ((tilemap[pos] > 0) && (tilemap[pos] < 201))
{
return TILE_SOLID;
}
// Los tiles mayores de 80 son atravesables
- if (tilemap[pos] > 80)
+ if (tilemap[pos] > 200)
{
return TILE_TRAVESSABLE;
}
diff --git a/source/sprite.cpp b/source/sprite.cpp
index a032c51..74c1fbc 100644
--- a/source/sprite.cpp
+++ b/source/sprite.cpp
@@ -1,44 +1,7 @@
#include "sprite.h"
// Constructor
-Sprite::Sprite()
-{
- init(0, 0, 0, 0, nullptr, nullptr);
-}
-
-// Destructor
-Sprite::~Sprite()
-{
- mTexture = nullptr;
- mRenderer = nullptr;
-}
-
-// Inicializador
-void Sprite::init(int x, int y, int w, int h, LTexture *texture, SDL_Renderer *renderer)
-{
- // Establece la posición X,Y del sprite
- setPosX(x);
- setPosY(y);
-
- // Establece el alto y el ancho del sprite
- setWidth(w);
- setHeight(h);
-
- // Establece el puntero al renderizador de la ventana
- setRenderer(renderer);
-
- // Establece la textura donde están los gráficos para el sprite
- setTexture(texture);
-
- // Establece el rectangulo de donde coger la imagen
- setSpriteClip(0, 0, w, h);
-
- // Habilita el objeto
- setEnabled(true);
-}
-
-// Inicializador
-void Sprite::init(SDL_Rect rect, LTexture *texture, SDL_Renderer *renderer)
+Sprite::Sprite(SDL_Rect rect, LTexture *texture, SDL_Renderer *renderer)
{
// Establece el alto y el ancho del sprite
mWidth = rect.w;
@@ -56,6 +19,39 @@ void Sprite::init(SDL_Rect rect, LTexture *texture, SDL_Renderer *renderer)
// Establece el rectangulo de donde coger la imagen
setSpriteClip(rect);
+
+ // Inicializa variables
+ mEnabled = true;
+}
+
+Sprite::Sprite(int x, int y, int w, int h, LTexture *texture, SDL_Renderer *renderer)
+{
+ // Establece el alto y el ancho del sprite
+ mWidth = w;
+ mHeight = h;
+
+ // Establece la posición X,Y del sprite
+ mPosX = x;
+ mPosY = y;
+
+ // Establece el puntero al renderizador de la ventana
+ setRenderer(renderer);
+
+ // Establece la textura donde están los gráficos para el sprite
+ setTexture(texture);
+
+ // Establece el rectangulo de donde coger la imagen
+ setSpriteClip(x,y,w,h);
+
+ // Inicializa variables
+ mEnabled = true;
+}
+
+// Destructor
+Sprite::~Sprite()
+{
+ mTexture = nullptr;
+ mRenderer = nullptr;
}
// Muestra el sprite por pantalla
diff --git a/source/sprite.h b/source/sprite.h
index b0d0b3e..9b2bd97 100644
--- a/source/sprite.h
+++ b/source/sprite.h
@@ -22,15 +22,12 @@ protected:
public:
// Constructor
- Sprite();
+ Sprite(SDL_Rect rect, LTexture *texture, SDL_Renderer *renderer);
+ Sprite(int x, int y, int w, int h, LTexture *texture, SDL_Renderer *renderer);
// Destructor
~Sprite();
- // Inicializador
- void init(int x, int y, int w, int h, LTexture *texture, SDL_Renderer *renderer);
- void init(SDL_Rect rect, LTexture *texture, SDL_Renderer *renderer);
-
// Muestra el sprite por pantalla
void render();
diff --git a/source/text.cpp b/source/text.cpp
index 211d50c..6de4715 100644
--- a/source/text.cpp
+++ b/source/text.cpp
@@ -6,7 +6,8 @@
// Constructor
Text::Text(std::string file, LTexture *texture, SDL_Renderer *renderer)
{
- mSprite = new Sprite();
+ SDL_Rect rect = {0,0,0,0};
+ mSprite = new Sprite(rect, texture, renderer);
mSprite->setTexture(texture);
mSprite->setRenderer(renderer);
mFile = file;
diff --git a/todo.txt b/todo.txt
index e1cb707..2089dc1 100644
--- a/todo.txt
+++ b/todo.txt
@@ -2,6 +2,40 @@
[x] Arreglar que no atraviese tiles atravaseables al caer muy rapido
[x] Leer los mapas directamente del archivo tmx
[ ] Crear la clase item
-[ ] Colisiones con los enemigos
-[ ] Decidir un diseño para qué sucede en caso de morir: Recordar el punto por donde se entró al mapa y la velocidad en el eje X/Y que llevaba el personaje, crear puntos de reaparicion en las habitaciones, etc
- En el Jet Set Willy el juego recuerda la posicion y el momento. En las Tres Luces de Glaurung solo la posición. Se va a optar por seguir el diseño del Jet Set Willy
\ No newline at end of file
+[x] Colisiones con los enemigos
+[x] Decidir un diseño para qué sucede en caso de morir: Recordar el punto por donde se entró al mapa y la velocidad en el eje X/Y que llevaba el personaje, crear puntos de reaparicion en las habitaciones, etc
+ En el Jet Set Willy el juego recuerda la posicion y el momento. En las Tres Luces de Glaurung solo la posición. Se va a optar por seguir el diseño del Jet Set Willy
+[ ] Crear tiles que maten
+[ ] Crear tiles que deslicen, (no tipo hielo sino cinta)
+[ ] Crear ascensores
+
+
+TEMAS:
+arounders
+paku simbel
+jail battle
+arounders race
+aee gba
+matatunos
+sigmasua
+calculin doom
+leaper reaper
+mini ascii
+mappy
+paco
+chirping
+abad y batman
+jail
+counter strike
+starcraft
+diablo
+jailparty
+maniac mansion
+molotov
+tutorials
+gavina
+puzzle restorer
+qvoid
+brick roll
+dante's fall
+repairing computers