#include "block.h" #include "constants.h" #include "actor.h" #include "util.h" #include QMap Block::m_pixmaps; Block::Block(Color::Color color, unsigned int neighbours, QGraphicsItem *parent) : GameEntity(color, parent), m_neighbours(neighbours) { m_type = Type; /* empty object for servers */ if (Constants::server) return; if (m_pixmaps.find(color) == m_pixmaps.end()) { unsigned int colid = (color == Color::none) ? 0 : Util::floorLog2(color) + 1; QString pixmapName = ":/" + QString("block%1").arg(colid); m_pixmaps[color] = QPixmap(pixmapName); } setPixmap(m_pixmaps.find(color).value()); setNeighbours(m_neighbours); } unsigned int Block::neighbours() { return m_neighbours; } void Block::setNeighbours(unsigned int neighbours) { m_neighbours = neighbours; setSprite(neighbours * Constants::sprite_offset, 0, Constants::field_size.width, Constants::field_size.height); } bool Block::checkEnter(Actor * /* actor */) { if (m_color == Color::none) return false; return true; } GameEntity::EnteredState Block::enter(Actor *actor) { if (m_color != Color::none && m_color != actor->color()) return DestroyedActor; return Nothing; } void Block::onDie(Actor *actor) { actor->die(); }