aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-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
-rw-r--r--engines/sword25/math/regionregistry.cpp7
-rw-r--r--engines/sword25/math/regionregistry.h15
7 files changed, 30 insertions, 38 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
diff --git a/engines/sword25/math/regionregistry.cpp b/engines/sword25/math/regionregistry.cpp
index 1509ea9e5e..bcfb2cbc43 100644
--- a/engines/sword25/math/regionregistry.cpp
+++ b/engines/sword25/math/regionregistry.cpp
@@ -39,9 +39,12 @@
#include "sword25/math/regionregistry.h"
#include "sword25/math/region.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::RegionRegistry)
-Common::SharedPtr<RegionRegistry> RegionRegistry::_instancePtr;
+namespace Sword25 {
void RegionRegistry::logErrorLn(const char *message) const {
BS_LOG_ERRORLN(message);
diff --git a/engines/sword25/math/regionregistry.h b/engines/sword25/math/regionregistry.h
index 78c2c08fc3..560d4ae4a9 100644
--- a/engines/sword25/math/regionregistry.h
+++ b/engines/sword25/math/regionregistry.h
@@ -35,7 +35,8 @@
#ifndef SWORD25_REGIONREGISTRY_H
#define SWORD25_REGIONREGISTRY_H
-#include "common/ptr.h"
+#include "common/singleton.h"
+
#include "sword25/kernel/common.h"
#include "sword25/kernel/persistable.h"
#include "sword25/kernel/objectregistry.h"
@@ -44,21 +45,17 @@ namespace Sword25 {
class Region;
-class RegionRegistry : public ObjectRegistry<Region>, public Persistable {
+class RegionRegistry :
+ public ObjectRegistry<Region>,
+ public Persistable,
+ public Common::Singleton<RegionRegistry> {
public:
- static RegionRegistry &instance() {
- if (!_instancePtr.get()) _instancePtr = Common::SharedPtr<RegionRegistry>(new RegionRegistry());
- return *_instancePtr.get();
- }
-
virtual bool persist(OutputPersistenceBlock &writer);
virtual bool unpersist(InputPersistenceBlock &reader);
private:
virtual void logErrorLn(const char *message) const;
virtual void logWarningLn(const char *message) const;
-
- static Common::SharedPtr<RegionRegistry> _instancePtr;
};
} // End of namespace Sword25