diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2009-03-27 22:07:30 -0400 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2009-03-27 22:07:30 -0400 |
| commit | 280b2a47d4eafd59d72a0442a3ed0c54d4527a1b (patch) | |
| tree | b41c362a4df94092d971ee16349987bb756142ed /sigencore/plugins | |
| parent | 7d96eac0395751555a7c5fd50f989313372368f3 (diff) | |
| download | sigen-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.cpp | 54 | ||||
| -rw-r--r-- | sigencore/plugins/canvases/qgraphicsscene/QGSCanvas.h | 10 |
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 |
