Files
jdd_opendingux/source/item.cpp

86 lines
1.6 KiB
C++

#include "item.h"
#include <fstream>
#include <sstream>
// Constructor
Item::Item(item_t item)
{
// Obten punteros a objetos
asset = item.asset;
renderer = item.renderer;
// Crea objetos
texture = new LTexture();
sprite = new Sprite(item.x, item.y, 8, 8, texture, renderer);
// Carga la textura
loadTextureFromFile(texture, asset->get(item.tileset), renderer);
// Inicia variables
sprite->setSpriteClip(item.tile * 8, 0, 8, 8);
collider = sprite->getRect();
// 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 objeto en pantalla
void Item::render()
{
const int index = (counter / 2) % color.size();
sprite->getTexture()->setColor(color[index].r, color[index].g, color[index].b);
sprite->render();
sprite->getTexture()->setColor(255, 255, 255);
}
// Actualiza las variables del objeto
void Item::update()
{
counter++;
}
// Coge el objeto
void Item::pick()
{
sprite->setEnabled(false);
}
// Obtiene el rectangulo de colision del objeto
SDL_Rect &Item::getCollider()
{
return collider;
}
// Obtiene su ubicación
SDL_Point Item::getPos()
{
const SDL_Point p = {sprite->getPosX(), sprite->getPosY()};
return p;
}