summaryrefslogtreecommitdiffstats
path: root/sigencore
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-03-28 14:12:54 -0400
committerBen Boeckel <MathStuf@gmail.com>2009-03-28 14:12:54 -0400
commita99fcded51fde93d67e78b8e27cf2ca3046a4f95 (patch)
tree11a7a787c07644bb682f3b47513200c3104cab56 /sigencore
parent093be58a46a42e9c6af284783f094e4f74d0b835 (diff)
downloadsigen-a99fcded51fde93d67e78b8e27cf2ca3046a4f95.tar.gz
sigen-a99fcded51fde93d67e78b8e27cf2ca3046a4f95.tar.xz
sigen-a99fcded51fde93d67e78b8e27cf2ca3046a4f95.zip
Enable multiple canvases per client
Diffstat (limited to 'sigencore')
-rw-r--r--sigencore/Client.cpp28
-rw-r--r--sigencore/Client.h9
2 files changed, 30 insertions, 7 deletions
diff --git a/sigencore/Client.cpp b/sigencore/Client.cpp
index 5cbbca9b..b4cb2007 100644
--- a/sigencore/Client.cpp
+++ b/sigencore/Client.cpp
@@ -18,6 +18,9 @@
// Header include
#include "Client.h"
+// Sigencore includes
+#include "Canvas.h"
+
using namespace Sigscript;
using namespace Sigencore;
@@ -25,8 +28,7 @@ Client::Client(GameWrapper* game, Config* parent) :
Config(parent),
m_game(game),
m_arena(NULL),
- m_world(NULL),
- m_canvas(NULL)
+ m_world(NULL)
{
}
@@ -66,7 +68,25 @@ void Client::exitWorld()
m_world = NULL;
}
-Canvas* Client::canvas()
+bool Client::addCanvas(const QString& name, Canvas* canvas)
+{
+ if (!m_canvases.contains(name))
+ {
+ m_canvases[name] = canvas;
+ return true;
+ }
+ return false;
+}
+
+void Client::removeCanvas(const QString& canvas)
+{
+ if (m_canvases.contains(canvas))
+ m_canvases[canvas]->cleanup();
+}
+
+Canvas* Client::canvas(const QString& canvas)
{
- return m_canvas;
+ if (m_canvases.contains(canvas))
+ return m_canvases[canvas];
+ return NULL;
}
diff --git a/sigencore/Client.h b/sigencore/Client.h
index 3b3f1372..8274dc68 100644
--- a/sigencore/Client.h
+++ b/sigencore/Client.h
@@ -43,15 +43,18 @@ class SIGENCORE_EXPORT Client : public Sigscript::Config
public:
Q_SCRIPTABLE Arena* arena();
Q_SCRIPTABLE Overworld* world();
- Q_SCRIPTABLE Canvas* canvas();
+ Q_SCRIPTABLE Canvas* canvas(const QString& canvas);
public slots:
virtual bool enterWorld(Overworld* world);
virtual void exitWorld();
virtual bool enterArena(Arena* arena);
virtual void exitArena();
+
+ virtual bool addCanvas(const QString& name, Canvas* canvas);
+ virtual void removeCanvas(const QString& canvas);
signals:
- void cleanupClient();
+ void cleanupClient(const QString& canvas);
protected:
Client(Sigscript::GameWrapper* game, Sigscript::Config* parent);
virtual ~Client();
@@ -59,7 +62,7 @@ class SIGENCORE_EXPORT Client : public Sigscript::Config
Sigscript::GameWrapper* m_game;
Arena* m_arena;
Overworld* m_world;
- Canvas* m_canvas;
+ QMap<QString, Canvas*> m_canvases;
};
}