summaryrefslogtreecommitdiffstats
path: root/sigencore/plugins
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-03-27 22:07:30 -0400
committerBen Boeckel <MathStuf@gmail.com>2009-03-27 22:07:30 -0400
commit280b2a47d4eafd59d72a0442a3ed0c54d4527a1b (patch)
treeb41c362a4df94092d971ee16349987bb756142ed /sigencore/plugins
parent7d96eac0395751555a7c5fd50f989313372368f3 (diff)
downloadsigen-280b2a47d4eafd59d72a0442a3ed0c54d4527a1b.tar.gz
sigen-280b2a47d4eafd59d72a0442a3ed0c54d4527a1b.tar.xz
sigen-280b2a47d4eafd59d72a0442a3ed0c54d4527a1b.zip
Implement QGSCanvas
Diffstat (limited to 'sigencore/plugins')
-rw-r--r--sigencore/plugins/canvases/qgraphicsscene/QGSCanvas.cpp54
-rw-r--r--sigencore/plugins/canvases/qgraphicsscene/QGSCanvas.h10
2 files changed, 63 insertions, 1 deletions
diff --git a/sigencore/plugins/canvases/qgraphicsscene/QGSCanvas.cpp b/sigencore/plugins/canvases/qgraphicsscene/QGSCanvas.cpp
index 033fc56c..6d3e17d6 100644
--- a/sigencore/plugins/canvases/qgraphicsscene/QGSCanvas.cpp
+++ b/sigencore/plugins/canvases/qgraphicsscene/QGSCanvas.cpp
@@ -18,19 +18,43 @@
// Header include
#include "QGSCanvas.h"
+// Canvas includes
+#include "QGSCanvasItem.h"
+
+// Sigencore includes
+#include <sigencore/RunScript.h>
+
+// Sigscript includes
+#include <sigscript/GameWrapper.h>
+#include <sigscript/SpriteWrapper.h>
+
// KDE includes
#include <KIcon>
+#include <kross/core/action.h>
+#include <kross/core/actioncollection.h>
+#include <kross/core/manager.h>
+
+// Qt includes
+#include <QtCore/QUuid>
+#include <QtGui/QGraphicsItem>
+#include <QtGui/QGraphicsScene>
+#include <QtGui/QGraphicsView>
using namespace Sigscript;
+using namespace Sigencore;
QGSCanvas::QGSCanvas(GameWrapper* game, Config* parent) :
Canvas(parent),
- m_game(game)
+ m_game(game),
+ m_scene(new QGraphicsScene),
+ m_collection(new Kross::ActionCollection(QString("canvas-%1").arg(QUuid::createUuid().toString()), Kross::Manager::self().actionCollection()))
{
}
QGSCanvas::~QGSCanvas()
{
+ delete m_scene;
+ delete m_collection;
}
QString QGSCanvas::name()
@@ -50,14 +74,37 @@ QIcon QGSCanvas::icon()
void QGSCanvas::runScript(const QString& name, const QVariantList& parameters)
{
+ Q_UNUSED(parameters)
+ ObjectMap objects;
+ objects["game"] = m_game;
+ objects["canvas"] = this;
+ Kross::Action* action = globalScript(m_game, name, QUuid::createUuid().toString(), objects, m_collection);
+ action->trigger();
}
void QGSCanvas::addSprite(const QString& name, const QString& sprite, const int x, const int y, const int zOrder)
{
+ // TODO: NOOP or refresh?
+ if (m_items.contains(name))
+ return;
+ SpriteWrapper* spr = m_game->sprite(sprite);
+ if (spr)
+ {
+ QGraphicsPixmapItem* item = new QGraphicsPixmapItem(spr->sprite());
+ item->setPos(x, y);
+ item->setZValue(zOrder);
+ m_scene->addItem(item);
+ m_items[name] = item;
+ }
}
void QGSCanvas::removeSprite(const QString& name)
{
+ if (m_items.contains(name))
+ {
+ delete m_items[name];
+ m_items.remove(name);
+ }
}
void QGSCanvas::transform(const QString& transform, const QString& object, const QVariantList& parameters)
@@ -66,8 +113,13 @@ void QGSCanvas::transform(const QString& transform, const QString& object, const
int QGSCanvas::type() const
{
+ return QGraphicsSceneCanvas;
}
QWidget* QGSCanvas::viewport()
{
+ // TODO: Only one view allowed? or as many as wanted?
+ QGraphicsView* view = new QGraphicsView;
+ view->setScene(m_scene);
+ return view;
}
diff --git a/sigencore/plugins/canvases/qgraphicsscene/QGSCanvas.h b/sigencore/plugins/canvases/qgraphicsscene/QGSCanvas.h
index da00df4f..1d6a9393 100644
--- a/sigencore/plugins/canvases/qgraphicsscene/QGSCanvas.h
+++ b/sigencore/plugins/canvases/qgraphicsscene/QGSCanvas.h
@@ -22,6 +22,13 @@
#include <sigencore/Canvas.h>
// Forward declarations
+namespace Kross
+{
+class ActionCollection;
+}
+class QGraphicsItem;
+class QGraphicsScene;
+class QGraphicsView;
namespace Sigscript
{
class GameWrapper;
@@ -49,6 +56,9 @@ class QGSCanvas : public Sigencore::Canvas
QWidget* viewport();
private:
Sigscript::GameWrapper* m_game;
+ QGraphicsScene* m_scene;
+ QMap<QString, QGraphicsItem*> m_items;
+ Kross::ActionCollection* m_collection;
};
#endif