summaryrefslogtreecommitdiffstats
path: root/sigmodr/widgets/mapeditor/EffectItem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sigmodr/widgets/mapeditor/EffectItem.cpp')
-rw-r--r--sigmodr/widgets/mapeditor/EffectItem.cpp32
1 files changed, 24 insertions, 8 deletions
diff --git a/sigmodr/widgets/mapeditor/EffectItem.cpp b/sigmodr/widgets/mapeditor/EffectItem.cpp
index ae35135b..3282352d 100644
--- a/sigmodr/widgets/mapeditor/EffectItem.cpp
+++ b/sigmodr/widgets/mapeditor/EffectItem.cpp
@@ -19,7 +19,9 @@
#include "EffectItem.h"
// Sigmod includes
+#include <sigmod/Game.h>
#include <sigmod/MapEffect.h>
+#include <sigmod/Skin.h>
// Qt includes
#include <QtGui/QPainter>
@@ -44,21 +46,30 @@ EffectItem::EffectItem(Sigmod::Map* map, MapEffect* effect, QGraphicsScene* pare
QRectF EffectItem::boundingRect() const
{
- QPainterPath path = m_effect->area();
- if (path.isEmpty())
- return QRect(0, 0, 32, 32);
- return m_effect->area().boundingRect();
+ if (m_size.isNull())
+ {
+ QPainterPath path = m_effect->area();
+ if (path.isEmpty())
+ return QRect(0, 0, 32, 32);
+ return m_effect->area().boundingRect();
+ }
+ return QRect(QPoint(), m_size);
}
void EffectItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
{
painter->setBrush(QBrush(Qt::red));
painter->setPen(QPen(Qt::black, 2));
- QPainterPath path = m_effect->area();
- if (path.isEmpty())
- painter->drawRect(0, 0, 32, 32);
+ if (m_size.isNull())
+ {
+ QPainterPath path = m_effect->area();
+ if (path.isEmpty())
+ painter->drawRect(boundingRect());
+ else
+ painter->drawPath(path);
+ }
else
- painter->drawPath(path);
+ painter->drawRect(QRect(QPoint(), m_size));
MapItem::paint(painter, option, widget);
}
@@ -75,6 +86,11 @@ void EffectItem::moveTo(const QPoint& point)
void EffectItem::effectChanged()
{
setPos(m_effect->position());
+ const Skin* skin = m_effect->game()->skinById(m_effect->skin());
+ if (skin)
+ m_size = skin->size();
+ else
+ m_size = QSize();
resetLabel();
update();
}