summaryrefslogtreecommitdiffstats
path: root/sigencore/Client.cpp
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/Client.cpp
parent093be58a46a42e9c6af284783f094e4f74d0b835 (diff)
downloadsigen-a99fcded51fde93d67e78b8e27cf2ca3046a4f95.tar.gz
sigen-a99fcded51fde93d67e78b8e27cf2ca3046a4f95.tar.xz
sigen-a99fcded51fde93d67e78b8e27cf2ca3046a4f95.zip
Enable multiple canvases per client
Diffstat (limited to 'sigencore/Client.cpp')
-rw-r--r--sigencore/Client.cpp28
1 files changed, 24 insertions, 4 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;
}