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]
|
||||
tileset=items.png
|
||||
tile=1
|
||||
x=10
|
||||
y=10
|
||||
tile=0
|
||||
x=1
|
||||
y=7
|
||||
[item-end]
|
||||
|
||||
[item]
|
||||
tileset=items.png
|
||||
tile=0
|
||||
x=17
|
||||
y=8
|
||||
[item-end]
|
||||
@@ -3,22 +3,22 @@
|
||||
<tileset firstgid="1" source="../../resources/tilesets/room1.tsx"/>
|
||||
<layer id="1" name="Capa de patrones 1" width="32" height="16">
|
||||
<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,
|
||||
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
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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>
|
||||
</layer>
|
||||
</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/enemies/enemy01.png", bitmap);
|
||||
mAsset->add("/media/player/player01.png", bitmap);
|
||||
mAsset->add("/media/items/items.png", bitmap);
|
||||
}
|
||||
|
||||
// Carga el fichero de configuración
|
||||
|
||||
@@ -144,6 +144,7 @@ void Game::draw()
|
||||
|
||||
mRoom->drawMap();
|
||||
mRoom->drawEnemies();
|
||||
mRoom->drawItems();
|
||||
mPlayer->draw();
|
||||
|
||||
// Texto en el centro de la pantalla
|
||||
|
||||
@@ -3,21 +3,21 @@
|
||||
#include <sstream>
|
||||
|
||||
// Constructor
|
||||
Item::Item(SDL_Rect _rect, std::string _tileset, SDL_Renderer *_renderer, Asset *_asset)
|
||||
Item::Item(item_t item)
|
||||
{
|
||||
// Obten punteros a objetos
|
||||
asset = _asset;
|
||||
renderer = _renderer;
|
||||
asset = item.asset;
|
||||
renderer = item.renderer;
|
||||
|
||||
// Crea objetos
|
||||
texture = new LTexture();
|
||||
sprite = new Sprite(_rect, texture, renderer);
|
||||
sprite = new Sprite(item.x, item.y, 8, 8, texture, renderer);
|
||||
|
||||
// Carga la textura
|
||||
loadTextureFromFile(texture, asset->get(_tileset), renderer);
|
||||
loadTextureFromFile(texture, asset->get(item.tileset), renderer);
|
||||
|
||||
// Inicia variables
|
||||
sprite->setSpriteClip(0,0,8,8);
|
||||
sprite->setSpriteClip(item.tile * 8, 0, 8, 8);
|
||||
|
||||
// Inicializa los colores
|
||||
color_t c = stringToColor("blue");
|
||||
@@ -53,11 +53,10 @@ Item::~Item()
|
||||
// Pinta el enemigo en pantalla
|
||||
void Item::draw()
|
||||
{
|
||||
|
||||
sprite->render();
|
||||
}
|
||||
|
||||
// Actualiza las variables del objeto
|
||||
void Item::update()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -14,6 +14,16 @@ POSICION INICIAL
|
||||
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
|
||||
class Item
|
||||
{
|
||||
@@ -30,7 +40,7 @@ private:
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
Item(SDL_Rect _rect, std::string _tileset, SDL_Renderer *_renderer, Asset *_asset);
|
||||
Item(item_t item);
|
||||
|
||||
// Destructor
|
||||
~Item();
|
||||
|
||||
@@ -37,6 +37,12 @@ Room::~Room()
|
||||
delete enemy;
|
||||
}
|
||||
enemy_list.clear();
|
||||
|
||||
for (auto item : item_list)
|
||||
{
|
||||
delete item;
|
||||
}
|
||||
item_list.clear();
|
||||
}
|
||||
|
||||
// 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
|
||||
else if (line == "[item]")
|
||||
{
|
||||
// enemy_t enemy;
|
||||
// enemy.asset = asset;
|
||||
// enemy.renderer = renderer;
|
||||
item_t item;
|
||||
item.asset = asset;
|
||||
item.renderer = renderer;
|
||||
|
||||
do
|
||||
{
|
||||
@@ -147,15 +153,15 @@ bool Room::load(std::string _file_path)
|
||||
// Encuentra la posición del caracter '='
|
||||
int pos = line.find("=");
|
||||
// Procesa las dos subcadenas
|
||||
// if (!setEnemy(&enemy, 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());
|
||||
// success = false;
|
||||
//}
|
||||
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());
|
||||
success = false;
|
||||
}
|
||||
} while (line != "[item-end]");
|
||||
|
||||
// Añade el enemigo al vector de enemigos
|
||||
// enemy_list.push_back(new Enemy(enemy));
|
||||
// Añade el item al vector de items
|
||||
item_list.push_back(new Item(item));
|
||||
}
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
// 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
|
||||
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
|
||||
void Room::update()
|
||||
{
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "utils.h"
|
||||
#include "asset.h"
|
||||
#include "enemy.h"
|
||||
#include "item.h"
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@@ -41,7 +42,7 @@ private:
|
||||
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<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
|
||||
Asset *asset; // Objeto con la ruta a todos los ficheros de recursos
|
||||
SDL_Renderer *renderer; // El renderizador de la ventana
|
||||
@@ -56,6 +57,9 @@ private:
|
||||
// Asigna variables a una estructura enemy_t
|
||||
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
|
||||
void fillMapTexture();
|
||||
|
||||
@@ -78,6 +82,9 @@ public:
|
||||
// Dibuja los enemigos en pantalla
|
||||
void drawEnemies();
|
||||
|
||||
// Dibuja los objetos en pantalla
|
||||
void drawItems();
|
||||
|
||||
// Actualiza las variables y objetos de la habitación
|
||||
void update();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user