summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-03-29 15:05:13 -0400
committerBen Boeckel <MathStuf@gmail.com>2009-03-29 15:05:13 -0400
commitbf9bf987affee51525fbc7d847dc0289535cf133 (patch)
tree65f686da9194f6e60257cf8c53f009a730f9a1f9
parentd296d2f6717a01eb2e7d3c55d82b68c503830d96 (diff)
downloadsigen-bf9bf987affee51525fbc7d847dc0289535cf133.tar.gz
sigen-bf9bf987affee51525fbc7d847dc0289535cf133.tar.xz
sigen-bf9bf987affee51525fbc7d847dc0289535cf133.zip
Pass the map to MapItem as wellso that it can check bounds when moving
-rw-r--r--sigmodr/widgets/mapeditor/EffectItem.cpp4
-rw-r--r--sigmodr/widgets/mapeditor/EffectItem.h2
-rw-r--r--sigmodr/widgets/mapeditor/MapItem.cpp20
-rw-r--r--sigmodr/widgets/mapeditor/MapItem.h7
-rw-r--r--sigmodr/widgets/mapeditor/MapScene.cpp10
-rw-r--r--sigmodr/widgets/mapeditor/TileItem.cpp4
-rw-r--r--sigmodr/widgets/mapeditor/TileItem.h2
-rw-r--r--sigmodr/widgets/mapeditor/TrainerItem.cpp4
-rw-r--r--sigmodr/widgets/mapeditor/TrainerItem.h2
-rw-r--r--sigmodr/widgets/mapeditor/WarpItem.cpp4
-rw-r--r--sigmodr/widgets/mapeditor/WarpItem.h2
11 files changed, 39 insertions, 22 deletions
diff --git a/sigmodr/widgets/mapeditor/EffectItem.cpp b/sigmodr/widgets/mapeditor/EffectItem.cpp
index 08942907..354b095c 100644
--- a/sigmodr/widgets/mapeditor/EffectItem.cpp
+++ b/sigmodr/widgets/mapeditor/EffectItem.cpp
@@ -30,8 +30,8 @@
using namespace Sigmod;
using namespace Sigmodr::Widgets;
-EffectItem::EffectItem(MapEffect* effect, QGraphicsScene* parent) :
- MapItem(parent),
+EffectItem::EffectItem(Sigmod::Map* map, MapEffect* effect, QGraphicsScene* parent) :
+ MapItem(map, parent),
m_effect(effect)
{
connect(m_effect, SIGNAL(changed()), this, SLOT(effectChanged()));
diff --git a/sigmodr/widgets/mapeditor/EffectItem.h b/sigmodr/widgets/mapeditor/EffectItem.h
index 578f9c6a..84c9f838 100644
--- a/sigmodr/widgets/mapeditor/EffectItem.h
+++ b/sigmodr/widgets/mapeditor/EffectItem.h
@@ -36,7 +36,7 @@ class SIGMODRWIDGETS_NO_EXPORT EffectItem : public MapItem
Q_OBJECT
public:
- EffectItem(Sigmod::MapEffect* effect, QGraphicsScene* parent);
+ EffectItem(Sigmod::Map* map, Sigmod::MapEffect* effect, QGraphicsScene* parent);
QRectF boundingRect() const;
diff --git a/sigmodr/widgets/mapeditor/MapItem.cpp b/sigmodr/widgets/mapeditor/MapItem.cpp
index 388cef05..6ecf3b8f 100644
--- a/sigmodr/widgets/mapeditor/MapItem.cpp
+++ b/sigmodr/widgets/mapeditor/MapItem.cpp
@@ -18,6 +18,9 @@
// Header include
#include "MapItem.h"
+// Sigmod includes
+#include <sigmod/Map.h>
+
// KDE includes
#include <KColorScheme>
@@ -28,10 +31,12 @@
#include <QtGui/QPainter>
#include <QtGui/QStyleOptionGraphicsItem>
+using namespace Sigmod;
using namespace Sigmodr::Widgets;
-MapItem::MapItem(QGraphicsScene* parent) :
+MapItem::MapItem(Map* map, QGraphicsScene* parent) :
QObject(parent),
+ m_map(map),
m_tag(new QGraphicsSimpleTextItem(this)),
m_label(new QGraphicsSimpleTextItem(this))
{
@@ -72,7 +77,14 @@ void MapItem::hoverLeaveEvent(QGraphicsSceneHoverEvent* event)
void MapItem::mouseMoveEvent(QGraphicsSceneMouseEvent* event)
{
- QGraphicsItem::mouseMoveEvent(event);
- moveTo(scenePos().toPoint());
- update();
+ QRect mapRect = QRect(0, 0, m_map->width(), m_map->height());
+ QRect rect = QRectF(event->scenePos() - event->buttonDownPos(Qt::LeftButton), boundingRect().size()).toRect();
+ if (!mapRect.contains(rect))
+ event->ignore();
+ else
+ {
+ QGraphicsItem::mouseMoveEvent(event);
+ moveTo(scenePos().toPoint());
+ update();
+ }
}
diff --git a/sigmodr/widgets/mapeditor/MapItem.h b/sigmodr/widgets/mapeditor/MapItem.h
index b0d29c76..53a6ea2a 100644
--- a/sigmodr/widgets/mapeditor/MapItem.h
+++ b/sigmodr/widgets/mapeditor/MapItem.h
@@ -27,6 +27,10 @@
// Forward declarations
class QGraphicsScene;
+namespace Sigmod
+{
+class Map;
+}
namespace Sigmodr
{
@@ -37,7 +41,7 @@ class SIGMODRWIDGETS_NO_EXPORT MapItem : public QObject, public QGraphicsItem
Q_OBJECT
public:
- MapItem(QGraphicsScene* parent);
+ MapItem(Sigmod::Map* map, QGraphicsScene* parent);
virtual QRectF boundingRect() const = 0;
@@ -53,6 +57,7 @@ class SIGMODRWIDGETS_NO_EXPORT MapItem : public QObject, public QGraphicsItem
virtual void resetLabel() = 0;
+ Sigmod::Map* m_map;
QGraphicsSimpleTextItem* m_tag;
QGraphicsSimpleTextItem* m_label;
};
diff --git a/sigmodr/widgets/mapeditor/MapScene.cpp b/sigmodr/widgets/mapeditor/MapScene.cpp
index 20a04328..6e5872d9 100644
--- a/sigmodr/widgets/mapeditor/MapScene.cpp
+++ b/sigmodr/widgets/mapeditor/MapScene.cpp
@@ -56,28 +56,28 @@ MapScene::MapScene(Map* map, QObject* parent) :
// for (int i = 0; i < m_map->effectCount(); ++i)
// {
// MapEffect* effect = m_map->effect(i);
-// EffectItem* item = new EffectItem(effect, this);
+// EffectItem* item = new EffectItem(m_map, effect, this);
// m_effects[effect] = item;
// addItem(item);
// }
for (int i = 0; i < m_map->tileCount(); ++i)
{
MapTile* tile = m_map->tile(i);
- TileItem* item = new TileItem(tile, this);
+ TileItem* item = new TileItem(m_map, tile, this);
m_tiles[tile] = item;
addItem(item);
}
for (int i = 0; i < m_map->trainerCount(); ++i)
{
MapTrainer* trainer = m_map->trainer(i);
- TrainerItem* item = new TrainerItem(trainer, this);
+ TrainerItem* item = new TrainerItem(m_map, trainer, this);
m_trainers[trainer] = item;
addItem(item);
}
// for (int i = 0; i < m_map->warpCount(); ++i)
// {
// MapWarp* warp = m_map->warp(i);
-// WarpItem* item = new WarpItem(warp, this);
+// WarpItem* item = new WarpItem(m_map, warp, this);
// m_warps[warp] = item;
// addItem(item);
// }
@@ -126,7 +126,7 @@ void MapScene::addTile()
QList<QGraphicsView*> viewList = views();
if (viewList.size())
tile->setPosition(viewList[0]->mapToScene(QPoint(0, 0)).toPoint());
- TileItem* item = new TileItem(tile, this);
+ TileItem* item = new TileItem(m_map, tile, this);
m_tiles[tile] = item;
addItem(item);
emit(changed());
diff --git a/sigmodr/widgets/mapeditor/TileItem.cpp b/sigmodr/widgets/mapeditor/TileItem.cpp
index 6f7e2484..20f8b8d7 100644
--- a/sigmodr/widgets/mapeditor/TileItem.cpp
+++ b/sigmodr/widgets/mapeditor/TileItem.cpp
@@ -36,8 +36,8 @@
using namespace Sigmod;
using namespace Sigmodr::Widgets;
-TileItem::TileItem(MapTile* tile, QGraphicsScene* parent) :
- MapItem(parent),
+TileItem::TileItem(Sigmod::Map* map, MapTile* tile, QGraphicsScene* parent) :
+ MapItem(map, parent),
m_tile(tile),
m_tileIndex(INT_MIN)
{
diff --git a/sigmodr/widgets/mapeditor/TileItem.h b/sigmodr/widgets/mapeditor/TileItem.h
index c11c2189..93afa51d 100644
--- a/sigmodr/widgets/mapeditor/TileItem.h
+++ b/sigmodr/widgets/mapeditor/TileItem.h
@@ -36,7 +36,7 @@ class SIGMODRWIDGETS_NO_EXPORT TileItem : public MapItem
Q_OBJECT
public:
- TileItem(Sigmod::MapTile* tile, QGraphicsScene* parent);
+ TileItem(Sigmod::Map* map, Sigmod::MapTile* tile, QGraphicsScene* parent);
QRectF boundingRect() const;
diff --git a/sigmodr/widgets/mapeditor/TrainerItem.cpp b/sigmodr/widgets/mapeditor/TrainerItem.cpp
index 2ea7cae7..2a97b3d7 100644
--- a/sigmodr/widgets/mapeditor/TrainerItem.cpp
+++ b/sigmodr/widgets/mapeditor/TrainerItem.cpp
@@ -33,8 +33,8 @@
using namespace Sigmod;
using namespace Sigmodr::Widgets;
-TrainerItem::TrainerItem(MapTrainer* trainer, QGraphicsScene* parent) :
- MapItem(parent),
+TrainerItem::TrainerItem(Sigmod::Map* map, MapTrainer* trainer, QGraphicsScene* parent) :
+ MapItem(map, parent),
m_trainer(trainer)
{
connect(m_trainer, SIGNAL(changed()), this, SLOT(trainerChanged()));
diff --git a/sigmodr/widgets/mapeditor/TrainerItem.h b/sigmodr/widgets/mapeditor/TrainerItem.h
index f8c4cd6e..7baa7d46 100644
--- a/sigmodr/widgets/mapeditor/TrainerItem.h
+++ b/sigmodr/widgets/mapeditor/TrainerItem.h
@@ -36,7 +36,7 @@ class SIGMODRWIDGETS_NO_EXPORT TrainerItem : public MapItem
Q_OBJECT
public:
- TrainerItem(Sigmod::MapTrainer* trainer, QGraphicsScene* parent);
+ TrainerItem(Sigmod::Map* map, Sigmod::MapTrainer* trainer, QGraphicsScene* parent);
QRectF boundingRect() const;
diff --git a/sigmodr/widgets/mapeditor/WarpItem.cpp b/sigmodr/widgets/mapeditor/WarpItem.cpp
index 39dadcb4..fd8474cb 100644
--- a/sigmodr/widgets/mapeditor/WarpItem.cpp
+++ b/sigmodr/widgets/mapeditor/WarpItem.cpp
@@ -30,8 +30,8 @@
using namespace Sigmod;
using namespace Sigmodr::Widgets;
-WarpItem::WarpItem(MapWarp* warp, QGraphicsScene* parent) :
- MapItem(parent),
+WarpItem::WarpItem(Sigmod::Map* map, MapWarp* warp, QGraphicsScene* parent) :
+ MapItem(map, parent),
m_warp(warp)
{
connect(m_warp, SIGNAL(changed()), this, SLOT(warpChanged()));
diff --git a/sigmodr/widgets/mapeditor/WarpItem.h b/sigmodr/widgets/mapeditor/WarpItem.h
index d574202c..5fc74666 100644
--- a/sigmodr/widgets/mapeditor/WarpItem.h
+++ b/sigmodr/widgets/mapeditor/WarpItem.h
@@ -36,7 +36,7 @@ class SIGMODRWIDGETS_NO_EXPORT WarpItem : public MapItem
Q_OBJECT
public:
- WarpItem(Sigmod::MapWarp* warp, QGraphicsScene* parent);
+ WarpItem(Sigmod::Map* map, Sigmod::MapWarp* warp, QGraphicsScene* parent);
QRectF boundingRect() const;