aboutsummaryrefslogtreecommitdiff
path: root/engines/sword25/gfx
diff options
context:
space:
mode:
authorMax Horn2010-10-13 15:41:34 +0000
committerMax Horn2010-10-13 15:41:34 +0000
commit9b4d41d2d2a165a95b3b9223f53196fe51c0b14f (patch)
tree155156c08186657d76bdd9235b60fdafc3633960 /engines/sword25/gfx
parent8f4f0d16fc4e5cd4803203f2aaeb0ddc99e57204 (diff)
downloadscummvm-rg350-9b4d41d2d2a165a95b3b9223f53196fe51c0b14f.tar.gz
scummvm-rg350-9b4d41d2d2a165a95b3b9223f53196fe51c0b14f.tar.bz2
scummvm-rg350-9b4d41d2d2a165a95b3b9223f53196fe51c0b14f.zip
SWORD25: Convert object registries to singletons
svn-id: r53431
Diffstat (limited to 'engines/sword25/gfx')
-rw-r--r--engines/sword25/gfx/animationtemplateregistry.cpp7
-rw-r--r--engines/sword25/gfx/animationtemplateregistry.h14
-rw-r--r--engines/sword25/gfx/graphicengine.h1
-rw-r--r--engines/sword25/gfx/renderobjectregistry.cpp7
-rw-r--r--engines/sword25/gfx/renderobjectregistry.h17
5 files changed, 19 insertions, 27 deletions
diff --git a/engines/sword25/gfx/animationtemplateregistry.cpp b/engines/sword25/gfx/animationtemplateregistry.cpp
index 6f4af690c6..84ea026ce1 100644
--- a/engines/sword25/gfx/animationtemplateregistry.cpp
+++ b/engines/sword25/gfx/animationtemplateregistry.cpp
@@ -39,9 +39,12 @@
#include "sword25/gfx/animationtemplateregistry.h"
#include "sword25/gfx/animationtemplate.h"
-namespace Sword25 {
+// TODO: Destroy the singletons when closing the engine;
+// even better, turn them into non-singleton members of
+// e.g. Sword25Engine.
+DECLARE_SINGLETON(Sword25::AnimationTemplateRegistry)
-Common::ScopedPtr<AnimationTemplateRegistry> AnimationTemplateRegistry::_instancePtr;
+namespace Sword25 {
void AnimationTemplateRegistry::logErrorLn(const char *message) const {
BS_LOG_ERRORLN(message);
diff --git a/engines/sword25/gfx/animationtemplateregistry.h b/engines/sword25/gfx/animationtemplateregistry.h
index 9c7140e585..c5308bb124 100644
--- a/engines/sword25/gfx/animationtemplateregistry.h
+++ b/engines/sword25/gfx/animationtemplateregistry.h
@@ -39,19 +39,17 @@
#include "sword25/kernel/persistable.h"
#include "sword25/kernel/objectregistry.h"
-#include "common/ptr.h"
+#include "common/singleton.h"
namespace Sword25 {
class AnimationTemplate;
-class AnimationTemplateRegistry : public ObjectRegistry<AnimationTemplate>, public Persistable {
+class AnimationTemplateRegistry :
+ public ObjectRegistry<AnimationTemplate>,
+ public Persistable,
+ public Common::Singleton<AnimationTemplateRegistry> {
public:
- static AnimationTemplateRegistry &instance() {
- if (!_instancePtr.get())
- _instancePtr.reset(new AnimationTemplateRegistry);
- return *_instancePtr.get();
- }
virtual bool persist(OutputPersistenceBlock &writer);
virtual bool unpersist(InputPersistenceBlock &reader);
@@ -59,8 +57,6 @@ public:
private:
virtual void logErrorLn(const char *message) const;
virtual void logWarningLn(const char *message) const;
-
- static Common::ScopedPtr<AnimationTemplateRegistry> _instancePtr;
};
} // End of namespace Sword25
diff --git a/engines/sword25/gfx/graphicengine.h b/engines/sword25/gfx/graphicengine.h
index d3443f42f2..857183db32 100644
--- a/engines/sword25/gfx/graphicengine.h
+++ b/engines/sword25/gfx/graphicengine.h
@@ -46,6 +46,7 @@
// Includes
#include "common/array.h"
#include "common/rect.h"
+#include "common/ptr.h"
#include "common/str.h"
#include "graphics/surface.h"
#include "sword25/kernel/common.h"
diff --git a/engines/sword25/gfx/renderobjectregistry.cpp b/engines/sword25/gfx/renderobjectregistry.cpp
index edfdbd23a8..347d5fb7cd 100644
--- a/engines/sword25/gfx/renderobjectregistry.cpp
+++ b/engines/sword25/gfx/renderobjectregistry.cpp
@@ -34,14 +34,15 @@
#include "sword25/gfx/renderobjectregistry.h"
-#include "common/ptr.h"
+// TODO: Destroy the singletons when closing the engine;
+// even better, turn them into non-singleton members of
+// e.g. Sword25Engine.
+DECLARE_SINGLETON(Sword25::RenderObjectRegistry)
namespace Sword25 {
#define BS_LOG_PREFIX "RENDEROBJECTREGISTRY"
-Common::ScopedPtr<RenderObjectRegistry> RenderObjectRegistry::_instancePtr;
-
void RenderObjectRegistry::logErrorLn(const char *message) const {
BS_LOG_ERRORLN(message);
}
diff --git a/engines/sword25/gfx/renderobjectregistry.h b/engines/sword25/gfx/renderobjectregistry.h
index 416da27f08..ff5d8997ec 100644
--- a/engines/sword25/gfx/renderobjectregistry.h
+++ b/engines/sword25/gfx/renderobjectregistry.h
@@ -42,7 +42,7 @@
#include "sword25/kernel/common.h"
#include "sword25/kernel/objectregistry.h"
-#include "common/ptr.h"
+#include "common/singleton.h"
namespace Sword25 {
@@ -56,21 +56,12 @@ class RenderObject;
// Klassendeklaration
// -----------------------------------------------------------------------------
-class RenderObjectRegistry : public ObjectRegistry<RenderObject> {
-public:
- static RenderObjectRegistry &instance() {
- if (!_instancePtr.get())
- _instancePtr.reset(new RenderObjectRegistry);
- return *_instancePtr.get();
- }
-
- virtual ~RenderObjectRegistry() {}
-
+class RenderObjectRegistry :
+ public ObjectRegistry<RenderObject>,
+ public Common::Singleton<RenderObjectRegistry> {
private:
virtual void logErrorLn(const char *message) const;
virtual void logWarningLn(const char *message) const;
-
- static Common::ScopedPtr<RenderObjectRegistry> _instancePtr;
};
} // End of namespace Sword25