summaryrefslogtreecommitdiffstats
path: root/sigmodr
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-03-19 19:52:51 -0400
committerBen Boeckel <MathStuf@gmail.com>2009-03-19 19:52:51 -0400
commite5985d56f8ff4ed33a3c282661cc9bf084c76e96 (patch)
treed696f29be45318744f2f8d03c7f023d311a6dea9 /sigmodr
parent48a39876252c617fa67cd108f4c4ad76ebd05e7d (diff)
downloadsigen-e5985d56f8ff4ed33a3c282661cc9bf084c76e96.tar.gz
sigen-e5985d56f8ff4ed33a3c282661cc9bf084c76e96.tar.xz
sigen-e5985d56f8ff4ed33a3c282661cc9bf084c76e96.zip
Get the size of the trainer from the skin
Diffstat (limited to 'sigmodr')
-rw-r--r--sigmodr/widgets/TrainerItem.cpp15
-rw-r--r--sigmodr/widgets/TrainerItem.h1
2 files changed, 14 insertions, 2 deletions
diff --git a/sigmodr/widgets/TrainerItem.cpp b/sigmodr/widgets/TrainerItem.cpp
index 00e7bf1a..55f1ee19 100644
--- a/sigmodr/widgets/TrainerItem.cpp
+++ b/sigmodr/widgets/TrainerItem.cpp
@@ -19,7 +19,10 @@
#include "TrainerItem.h"
// Sigmod includes
+#include <sigmod/Game.h>
#include <sigmod/MapTrainer.h>
+#include <sigmod/Skin.h>
+#include <sigmod/Trainer.h>
// Qt includes
#include <QtGui/QPainter>
@@ -43,7 +46,7 @@ TrainerItem::TrainerItem(MapTrainer* trainer, QGraphicsScene* parent) :
QRectF TrainerItem::boundingRect() const
{
- return QRect(m_trainer->position(), QSize(32, 32));
+ return QRect(m_trainer->position(), m_size);
}
void TrainerItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
@@ -61,6 +64,14 @@ void TrainerItem::moveTo(const QPoint& point)
void TrainerItem::trainerChanged()
{
+ const Trainer* trainer = m_trainer->game()->trainerById(m_trainer->trainerClass());
+ m_size = QSize(32, 32);
+ if (trainer)
+ {
+ const Skin* skin = m_trainer->game()->skinById(trainer->skin());
+ if (skin)
+ m_size = skin->size();
+ }
setPos(m_trainer->position());
m_label->setText(m_trainer->name());
resetLabel();
@@ -69,6 +80,6 @@ void TrainerItem::trainerChanged()
void TrainerItem::resetLabel()
{
- QSizeF size = m_label->boundingRect().size() / 2 - QSize(32, 32) / 2;
+ QSizeF size = m_label->boundingRect().size() / 2 - m_size / 2;
m_label->setPos(-size.width(), -size.height());
}
diff --git a/sigmodr/widgets/TrainerItem.h b/sigmodr/widgets/TrainerItem.h
index d0fd3daf..f8c4cd6e 100644
--- a/sigmodr/widgets/TrainerItem.h
+++ b/sigmodr/widgets/TrainerItem.h
@@ -49,6 +49,7 @@ class SIGMODRWIDGETS_NO_EXPORT TrainerItem : public MapItem
void resetLabel();
Sigmod::MapTrainer* m_trainer;
+ QSize m_size;
};
}
}