diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2009-03-28 14:12:54 -0400 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2009-03-28 14:12:54 -0400 |
| commit | a99fcded51fde93d67e78b8e27cf2ca3046a4f95 (patch) | |
| tree | 11a7a787c07644bb682f3b47513200c3104cab56 /sigencore | |
| parent | 093be58a46a42e9c6af284783f094e4f74d0b835 (diff) | |
| download | sigen-a99fcded51fde93d67e78b8e27cf2ca3046a4f95.tar.gz sigen-a99fcded51fde93d67e78b8e27cf2ca3046a4f95.tar.xz sigen-a99fcded51fde93d67e78b8e27cf2ca3046a4f95.zip | |
Enable multiple canvases per client
Diffstat (limited to 'sigencore')
| -rw-r--r-- | sigencore/Client.cpp | 28 | ||||
| -rw-r--r-- | sigencore/Client.h | 9 |
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; }; } |
