forked from jaildesigner-jailgames/jaildoctors_dilemma
Clase item creada. Ya dibuja items en pantalla
This commit is contained in:
@@ -38,7 +38,14 @@ color=yellow
|
|||||||
|
|
||||||
[item]
|
[item]
|
||||||
tileset=items.png
|
tileset=items.png
|
||||||
tile=1
|
tile=0
|
||||||
x=10
|
x=1
|
||||||
y=10
|
y=7
|
||||||
|
[item-end]
|
||||||
|
|
||||||
|
[item]
|
||||||
|
tileset=items.png
|
||||||
|
tile=0
|
||||||
|
x=17
|
||||||
|
y=8
|
||||||
[item-end]
|
[item-end]
|
||||||
@@ -3,22 +3,22 @@
|
|||||||
<tileset firstgid="1" source="../../resources/tilesets/room1.tsx"/>
|
<tileset firstgid="1" source="../../resources/tilesets/room1.tsx"/>
|
||||||
<layer id="1" name="Capa de patrones 1" width="32" height="16">
|
<layer id="1" name="Capa de patrones 1" width="32" height="16">
|
||||||
<data encoding="csv">
|
<data encoding="csv">
|
||||||
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,
|
21,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,
|
21,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,
|
21,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,
|
21,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,
|
21,0,0,0,0,21,21,21,21,21,21,21,21,21,21,21,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,
|
21,0,0,21,21,21,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,
|
21,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,
|
21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,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,
|
21,21,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,21,21,21,0,0,0,0,0,21,21,21,21,21,
|
||||||
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,
|
21,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,
|
21,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,
|
21,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,
|
21,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,
|
21,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,
|
21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,
|
||||||
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
|
21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21
|
||||||
</data>
|
</data>
|
||||||
</layer>
|
</layer>
|
||||||
</map>
|
</map>
|
||||||
|
|||||||
BIN
media/items/items.png
Normal file
BIN
media/items/items.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 127 B |
@@ -203,6 +203,7 @@ void Director::setFileList()
|
|||||||
mAsset->add("/media/tilesets/room1.png", bitmap);
|
mAsset->add("/media/tilesets/room1.png", bitmap);
|
||||||
mAsset->add("/media/enemies/enemy01.png", bitmap);
|
mAsset->add("/media/enemies/enemy01.png", bitmap);
|
||||||
mAsset->add("/media/player/player01.png", bitmap);
|
mAsset->add("/media/player/player01.png", bitmap);
|
||||||
|
mAsset->add("/media/items/items.png", bitmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Carga el fichero de configuración
|
// Carga el fichero de configuración
|
||||||
|
|||||||
@@ -144,6 +144,7 @@ void Game::draw()
|
|||||||
|
|
||||||
mRoom->drawMap();
|
mRoom->drawMap();
|
||||||
mRoom->drawEnemies();
|
mRoom->drawEnemies();
|
||||||
|
mRoom->drawItems();
|
||||||
mPlayer->draw();
|
mPlayer->draw();
|
||||||
|
|
||||||
// Texto en el centro de la pantalla
|
// Texto en el centro de la pantalla
|
||||||
|
|||||||
@@ -3,22 +3,22 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
Item::Item(SDL_Rect _rect, std::string _tileset, SDL_Renderer *_renderer, Asset *_asset)
|
Item::Item(item_t item)
|
||||||
{
|
{
|
||||||
// Obten punteros a objetos
|
// Obten punteros a objetos
|
||||||
asset = _asset;
|
asset = item.asset;
|
||||||
renderer = _renderer;
|
renderer = item.renderer;
|
||||||
|
|
||||||
// Crea objetos
|
// Crea objetos
|
||||||
texture = new LTexture();
|
texture = new LTexture();
|
||||||
sprite = new Sprite(_rect, texture, renderer);
|
sprite = new Sprite(item.x, item.y, 8, 8, texture, renderer);
|
||||||
|
|
||||||
// Carga la textura
|
// Carga la textura
|
||||||
loadTextureFromFile(texture, asset->get(_tileset), renderer);
|
loadTextureFromFile(texture, asset->get(item.tileset), renderer);
|
||||||
|
|
||||||
// Inicia variables
|
// Inicia variables
|
||||||
sprite->setSpriteClip(0,0,8,8);
|
sprite->setSpriteClip(item.tile * 8, 0, 8, 8);
|
||||||
|
|
||||||
// Inicializa los colores
|
// Inicializa los colores
|
||||||
color_t c = stringToColor("blue");
|
color_t c = stringToColor("blue");
|
||||||
color.push_back(c);
|
color.push_back(c);
|
||||||
@@ -53,11 +53,10 @@ Item::~Item()
|
|||||||
// Pinta el enemigo en pantalla
|
// Pinta el enemigo en pantalla
|
||||||
void Item::draw()
|
void Item::draw()
|
||||||
{
|
{
|
||||||
|
sprite->render();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actualiza las variables del objeto
|
// Actualiza las variables del objeto
|
||||||
void Item::update()
|
void Item::update()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,16 @@ POSICION INICIAL
|
|||||||
PNG ASOCIADO
|
PNG ASOCIADO
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
struct item_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 item
|
||||||
|
int x; // Posicion del item en pantalla
|
||||||
|
int y; // Posicion del item en pantalla
|
||||||
|
int tile; // Numero de tile dentro de la textura
|
||||||
|
};
|
||||||
|
|
||||||
// Clase Item
|
// Clase Item
|
||||||
class Item
|
class Item
|
||||||
{
|
{
|
||||||
@@ -21,8 +31,8 @@ private:
|
|||||||
LTexture *texture; // Textura con los graficos del objeto
|
LTexture *texture; // Textura con los graficos del objeto
|
||||||
Sprite *sprite; // Sprite del objeto
|
Sprite *sprite; // Sprite del objeto
|
||||||
|
|
||||||
SDL_Renderer *renderer; // El renderizador de la ventana
|
SDL_Renderer *renderer; // El renderizador de la ventana
|
||||||
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
|
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
|
||||||
std::vector<color_t> color; // Vector con los colores del objeto
|
std::vector<color_t> color; // Vector con los colores del objeto
|
||||||
|
|
||||||
// Comprueba si ha llegado al limite del recorrido para darse media vuelta
|
// Comprueba si ha llegado al limite del recorrido para darse media vuelta
|
||||||
@@ -30,7 +40,7 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
Item(SDL_Rect _rect, std::string _tileset, SDL_Renderer *_renderer, Asset *_asset);
|
Item(item_t item);
|
||||||
|
|
||||||
// Destructor
|
// Destructor
|
||||||
~Item();
|
~Item();
|
||||||
|
|||||||
@@ -37,6 +37,12 @@ Room::~Room()
|
|||||||
delete enemy;
|
delete enemy;
|
||||||
}
|
}
|
||||||
enemy_list.clear();
|
enemy_list.clear();
|
||||||
|
|
||||||
|
for (auto item : item_list)
|
||||||
|
{
|
||||||
|
delete item;
|
||||||
|
}
|
||||||
|
item_list.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Carga las variables desde un fichero
|
// Carga las variables desde un fichero
|
||||||
@@ -136,9 +142,9 @@ bool Room::load(std::string _file_path)
|
|||||||
// Si la linea contiene el texto [item] se realiza el proceso de carga de un item
|
// Si la linea contiene el texto [item] se realiza el proceso de carga de un item
|
||||||
else if (line == "[item]")
|
else if (line == "[item]")
|
||||||
{
|
{
|
||||||
// enemy_t enemy;
|
item_t item;
|
||||||
// enemy.asset = asset;
|
item.asset = asset;
|
||||||
// enemy.renderer = renderer;
|
item.renderer = renderer;
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@@ -147,15 +153,15 @@ bool Room::load(std::string _file_path)
|
|||||||
// Encuentra la posición del caracter '='
|
// Encuentra la posición del caracter '='
|
||||||
int pos = line.find("=");
|
int pos = line.find("=");
|
||||||
// Procesa las dos subcadenas
|
// Procesa las dos subcadenas
|
||||||
// if (!setEnemy(&enemy, line.substr(0, pos), line.substr(pos + 1, line.length())))
|
if (!setItem(&item, line.substr(0, pos), line.substr(pos + 1, line.length())))
|
||||||
//{
|
{
|
||||||
// printf("Warning: file %s\n, unknown parameter \"%s\"\n", filename.c_str(), line.substr(0, pos).c_str());
|
printf("Warning: file %s\n, unknown parameter \"%s\"\n", filename.c_str(), line.substr(0, pos).c_str());
|
||||||
// success = false;
|
success = false;
|
||||||
//}
|
}
|
||||||
} while (line != "[item-end]");
|
} while (line != "[item-end]");
|
||||||
|
|
||||||
// Añade el enemigo al vector de enemigos
|
// Añade el item al vector de items
|
||||||
// enemy_list.push_back(new Enemy(enemy));
|
item_list.push_back(new Item(item));
|
||||||
}
|
}
|
||||||
|
|
||||||
// En caso contrario se parsea el fichero para buscar las variables y los valores
|
// En caso contrario se parsea el fichero para buscar las variables y los valores
|
||||||
@@ -298,6 +304,39 @@ bool Room::setEnemy(enemy_t *enemy, std::string _var, std::string _value)
|
|||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Asigna variables a una estructura item_t
|
||||||
|
bool Room::setItem(item_t *item, std::string _var, std::string _value)
|
||||||
|
{
|
||||||
|
// Indicador de éxito en la asignación
|
||||||
|
bool success = true;
|
||||||
|
|
||||||
|
if (_var == "tileset")
|
||||||
|
{
|
||||||
|
item->tileset = _value;
|
||||||
|
}
|
||||||
|
else if (_var == "x")
|
||||||
|
{
|
||||||
|
item->x = std::stof(_value) * BLOCK;
|
||||||
|
}
|
||||||
|
else if (_var == "y")
|
||||||
|
{
|
||||||
|
item->y = std::stof(_value) * BLOCK;
|
||||||
|
}
|
||||||
|
else if (_var == "tile")
|
||||||
|
{
|
||||||
|
item->tile = std::stof(_value);
|
||||||
|
}
|
||||||
|
else if (_var == "[item-end]")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
// Devuelve el nombre de la habitación
|
// Devuelve el nombre de la habitación
|
||||||
std::string Room::getName()
|
std::string Room::getName()
|
||||||
{
|
{
|
||||||
@@ -352,6 +391,15 @@ void Room::drawEnemies()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Dibuja los objetos en pantalla
|
||||||
|
void Room::drawItems()
|
||||||
|
{
|
||||||
|
for (auto item : item_list)
|
||||||
|
{
|
||||||
|
item->draw();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Actualiza las variables y objetos de la habitación
|
// Actualiza las variables y objetos de la habitación
|
||||||
void Room::update()
|
void Room::update()
|
||||||
{
|
{
|
||||||
@@ -416,11 +464,11 @@ int Room::getTile(SDL_Point point)
|
|||||||
bool Room::enemyCollision(SDL_Rect &rect)
|
bool Room::enemyCollision(SDL_Rect &rect)
|
||||||
{
|
{
|
||||||
bool collision = false;
|
bool collision = false;
|
||||||
|
|
||||||
for (auto enemy : enemy_list)
|
for (auto enemy : enemy_list)
|
||||||
{
|
{
|
||||||
collision |= checkCollision(rect, enemy->getCollider());
|
collision |= checkCollision(rect, enemy->getCollider());
|
||||||
}
|
}
|
||||||
|
|
||||||
return collision;
|
return collision;
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "asset.h"
|
#include "asset.h"
|
||||||
#include "enemy.h"
|
#include "enemy.h"
|
||||||
|
#include "item.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@@ -41,7 +42,7 @@ private:
|
|||||||
std::string tileset; // Imagen con los graficos para la habitación
|
std::string tileset; // Imagen con los graficos para la habitación
|
||||||
std::vector<int> tilemap; // Indice de los tiles a dibujar en la habitación
|
std::vector<int> tilemap; // Indice de los tiles a dibujar en la habitación
|
||||||
std::vector<Enemy *> enemy_list; // Listado con los enemigos de la habitación
|
std::vector<Enemy *> enemy_list; // Listado con los enemigos de la habitación
|
||||||
std::vector<int> item_list; // Listado con los items que hay en la habitación
|
std::vector<Item *> item_list; // Listado con los items que hay en la habitación
|
||||||
LTexture *texture; // Textura con los graficos de la habitación
|
LTexture *texture; // Textura con los graficos de la habitación
|
||||||
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
|
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
|
||||||
SDL_Renderer *renderer; // El renderizador de la ventana
|
SDL_Renderer *renderer; // El renderizador de la ventana
|
||||||
@@ -56,6 +57,9 @@ private:
|
|||||||
// Asigna variables a una estructura enemy_t
|
// Asigna variables a una estructura enemy_t
|
||||||
bool setEnemy(enemy_t *enemy, std::string _var, std::string _value);
|
bool setEnemy(enemy_t *enemy, std::string _var, std::string _value);
|
||||||
|
|
||||||
|
// Asigna variables a una estructura item_t
|
||||||
|
bool setItem(item_t *item, std::string _var, std::string _value);
|
||||||
|
|
||||||
// Pinta el mapa de la habitación en la textura
|
// Pinta el mapa de la habitación en la textura
|
||||||
void fillMapTexture();
|
void fillMapTexture();
|
||||||
|
|
||||||
@@ -78,6 +82,9 @@ public:
|
|||||||
// Dibuja los enemigos en pantalla
|
// Dibuja los enemigos en pantalla
|
||||||
void drawEnemies();
|
void drawEnemies();
|
||||||
|
|
||||||
|
// Dibuja los objetos en pantalla
|
||||||
|
void drawItems();
|
||||||
|
|
||||||
// Actualiza las variables y objetos de la habitación
|
// Actualiza las variables y objetos de la habitación
|
||||||
void update();
|
void update();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user