aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libjin/audio/SDL/je_sdl_audio.cpp2
-rw-r--r--src/libjin/audio/SDL/je_sdl_audio.h24
-rw-r--r--src/libjin/audio/je_audio_manager.h28
-rw-r--r--src/libjin/common/je_singleton.hpp16
-rw-r--r--src/libjin/common/je_subsystem.hpp12
-rw-r--r--src/libjin/game/je_application.cpp2
-rw-r--r--src/libjin/game/je_application.h12
-rw-r--r--src/libjin/graphics/je_window.cpp2
-rw-r--r--src/libjin/graphics/je_window.h25
-rw-r--r--src/libjin/graphics/shaders/je_jsl_compiler.h1
-rw-r--r--src/libjin/input/je_mouse.h11
-rw-r--r--src/libjin/net/je_net_manager.cpp2
-rw-r--r--src/libjin/net/je_net_manager.h8
13 files changed, 63 insertions, 82 deletions
diff --git a/src/libjin/audio/SDL/je_sdl_audio.cpp b/src/libjin/audio/SDL/je_sdl_audio.cpp
index c21d077..b89e8d3 100644
--- a/src/libjin/audio/SDL/je_sdl_audio.cpp
+++ b/src/libjin/audio/SDL/je_sdl_audio.cpp
@@ -31,7 +31,7 @@ namespace JinEngine
audio->unlock();
}
- /*call only once*/ bool SDLAudio::initSystem(const SettingBase* s)
+ /*call only once*/ bool SDLAudio::startSystem(const SettingBase* s)
{
jin_log_info("Initialize audio system.");
diff --git a/src/libjin/audio/SDL/je_sdl_audio.h b/src/libjin/audio/SDL/je_sdl_audio.h
index 77162d4..4263767 100644
--- a/src/libjin/audio/SDL/je_sdl_audio.h
+++ b/src/libjin/audio/SDL/je_sdl_audio.h
@@ -37,6 +37,16 @@ namespace JinEngine
};
///
+ /// SDL audio constructor.
+ ///
+ SDLAudio() {};
+
+ ///
+ /// SDL audio destructor.
+ ///
+ ~SDLAudio() {};
+
+ ///
/// Play all sources whose state is playing.
///
void play() override;
@@ -100,24 +110,12 @@ namespace JinEngine
void unlock();
private:
- singleton(SDLAudio);
-
- ///
- /// SDL audio constructor.
- ///
- SDLAudio() {};
-
- ///
- /// SDL audio destructor.
- ///
- ~SDLAudio() {};
-
///
/// Initialize audio system.
///
/// @param setting Audio setting.
///
- bool initSystem(const SettingBase* setting) override;
+ bool startSystem(const SettingBase* setting) override;
///
/// Quit audio system.
diff --git a/src/libjin/audio/je_audio_manager.h b/src/libjin/audio/je_audio_manager.h
index 120d38e..e0c7a4b 100644
--- a/src/libjin/audio/je_audio_manager.h
+++ b/src/libjin/audio/je_audio_manager.h
@@ -34,6 +34,19 @@ namespace JinEngine
};
///
+ /// AudioManager constructor.
+ ///
+ AudioManager()
+ : volume(1)
+ , state(State::PLAY)
+ {};
+
+ ///
+ /// AudioManager destructor.
+ ///
+ virtual ~AudioManager() {};
+
+ ///
/// Play all sources whose state is playing.
///
virtual void play() = 0;
@@ -59,21 +72,6 @@ namespace JinEngine
virtual void setVolume(float volume) = 0;
protected:
- singleton(AudioManager);
-
- ///
- /// AudioManager constructor.
- ///
- AudioManager()
- : volume(1)
- , state(State::PLAY)
- {};
-
- ///
- /// AudioManager destructor.
- ///
- virtual ~AudioManager() {};
-
float volume;
State state;
diff --git a/src/libjin/common/je_singleton.hpp b/src/libjin/common/je_singleton.hpp
index ba13b80..51dc9c5 100644
--- a/src/libjin/common/je_singleton.hpp
+++ b/src/libjin/common/je_singleton.hpp
@@ -2,6 +2,7 @@
#define __JE_SINGLETON_H__
#include "je_object.h"
+#include "je_exception.h"
namespace JinEngine
{
@@ -38,7 +39,12 @@ namespace JinEngine
///
/// Singleton constructor.
///
- Singleton() {};
+ Singleton()
+ {
+ // Check singleton.
+ if (_instance)
+ throw Exception("This is a singleton.");
+ };
///
/// Singleton destructor.
@@ -70,12 +76,8 @@ namespace JinEngine
///
/// Singleton instance.
///
- template<class T> T* Singleton<T>::_instance = nullptr;
-
- ///
- /// Singleton notation.
- ///
- #define singleton(T) friend Singleton<T>
+ template<class T>
+ T* Singleton<T>::_instance = nullptr;
} // namespace JinEngine
diff --git a/src/libjin/common/je_subsystem.hpp b/src/libjin/common/je_subsystem.hpp
index c015bef..0119b74 100644
--- a/src/libjin/common/je_subsystem.hpp
+++ b/src/libjin/common/je_subsystem.hpp
@@ -32,7 +32,7 @@ namespace JinEngine
///
bool init(const SettingBase* setting = nullptr)
{
- static bool success = initSystem(setting);
+ static bool success = startSystem(setting);
return success;
}
@@ -46,9 +46,6 @@ namespace JinEngine
Singleton<System>::destroy();
}
- protected:
- singleton(System);
-
///
/// Subsystem constructor.
///
@@ -57,14 +54,13 @@ namespace JinEngine
///
/// Subsystem destructor.
///
- virtual ~Subsystem()
- {
- };
+ virtual ~Subsystem() {}
+ protected:
///
/// Initializer callback.
///
- virtual bool initSystem(const Setting* setting) = 0;
+ virtual bool startSystem(const Setting* setting) = 0;
///
/// Quit subsystem callback.
diff --git a/src/libjin/game/je_application.cpp b/src/libjin/game/je_application.cpp
index 9460738..1a3c5ed 100644
--- a/src/libjin/game/je_application.cpp
+++ b/src/libjin/game/je_application.cpp
@@ -59,7 +59,7 @@ namespace JinEngine
quitloop:;
}
- bool Application::initSystem(const SettingBase* setting)
+ bool Application::startSystem(const SettingBase* setting)
{
if (setting == nullptr)
return false;
diff --git a/src/libjin/game/je_application.h b/src/libjin/game/je_application.h
index 094de6a..9de6e1c 100644
--- a/src/libjin/game/je_application.h
+++ b/src/libjin/game/je_application.h
@@ -21,12 +21,14 @@ namespace JinEngine
class Application : public Subsystem<Application>
{
public:
-
typedef void(*onLoad)();
typedef void(*onEvent)(JinEngine::Input::Event* e);
typedef void(*onUpdate)(int dt);
typedef void(*onDraw)();
+ Application();
+ ~Application() {};
+
///
/// Game setting.
///
@@ -62,12 +64,6 @@ namespace JinEngine
};
private:
-
- Application();
- ~Application() {};
-
- singleton(Application);
-
onEvent _onEvent;
onUpdate _onUpdate;
onDraw _onDraw;
@@ -75,7 +71,7 @@ namespace JinEngine
bool _running;
- bool initSystem(const SettingBase* setting);
+ bool startSystem(const SettingBase* setting);
void quitSystem();
};
diff --git a/src/libjin/graphics/je_window.cpp b/src/libjin/graphics/je_window.cpp
index 492fd22..148f1b9 100644
--- a/src/libjin/graphics/je_window.cpp
+++ b/src/libjin/graphics/je_window.cpp
@@ -20,7 +20,7 @@ namespace JinEngine
namespace Graphics
{
- bool Window::initSystem(const SettingBase* s)
+ bool Window::startSystem(const SettingBase* s)
{
jin_log_info("Initialize window system.");
diff --git a/src/libjin/graphics/je_window.h b/src/libjin/graphics/je_window.h
index 831f3e6..6e23445 100644
--- a/src/libjin/graphics/je_window.h
+++ b/src/libjin/graphics/je_window.h
@@ -35,6 +35,16 @@ namespace JinEngine
bool resizable; ///< resizable
};
+ ///
+ ///
+ ///
+ Window() {};
+
+ ///
+ ///
+ ///
+ virtual ~Window() {};
+
///
///
///
@@ -72,23 +82,10 @@ namespace JinEngine
private:
- // declare a singleton
- singleton(Window);
-
- ///
- ///
- ///
- Window() {};
-
- ///
- ///
- ///
- virtual ~Window() {};
-
///
///
///
- bool initSystem(const SettingBase* setting) override;
+ bool startSystem(const SettingBase* setting) override;
///
///
diff --git a/src/libjin/graphics/shaders/je_jsl_compiler.h b/src/libjin/graphics/shaders/je_jsl_compiler.h
index fb2f8bb..337d389 100644
--- a/src/libjin/graphics/shaders/je_jsl_compiler.h
+++ b/src/libjin/graphics/shaders/je_jsl_compiler.h
@@ -32,7 +32,6 @@ namespace JinEngine
bool compile(const std::string& jsl, std::string* glsl_vertex, std::string* glsl_fragment);
private:
- singleton(JSLCompiler);
};
diff --git a/src/libjin/input/je_mouse.h b/src/libjin/input/je_mouse.h
index a4e71fc..d129a07 100644
--- a/src/libjin/input/je_mouse.h
+++ b/src/libjin/input/je_mouse.h
@@ -19,25 +19,22 @@ namespace JinEngine
///
///
///
- void getState(int* x, int* y);
+ Mouse() {};
///
///
///
- void setVisible(bool visible);
-
- private:
- singleton(Mouse);
+ ~Mouse() {};
///
///
///
- Mouse() {};
+ void getState(int* x, int* y);
///
///
///
- ~Mouse() {};
+ void setVisible(bool visible);
};
diff --git a/src/libjin/net/je_net_manager.cpp b/src/libjin/net/je_net_manager.cpp
index c4f822e..7990d99 100644
--- a/src/libjin/net/je_net_manager.cpp
+++ b/src/libjin/net/je_net_manager.cpp
@@ -5,7 +5,7 @@ namespace JinEngine
namespace Net
{
- bool NetManager::initSystem(const SettingBase* setting)
+ bool NetManager::startSystem(const SettingBase* setting)
{
#ifdef _WIN32
#if jin_net == jin_net_tekcos
diff --git a/src/libjin/net/je_net_manager.h b/src/libjin/net/je_net_manager.h
index 62aa947..4efcd28 100644
--- a/src/libjin/net/je_net_manager.h
+++ b/src/libjin/net/je_net_manager.h
@@ -17,9 +17,7 @@ namespace JinEngine
///
class NetManager : public Subsystem<NetManager>
{
- protected:
- singleton(NetManager);
-
+ public:
///
///
///
@@ -33,7 +31,7 @@ namespace JinEngine
///
///
///
- bool initSystem(const SettingBase* setting) override;
+ bool startSystem(const SettingBase* setting) override;
///
///
@@ -47,4 +45,4 @@ namespace JinEngine
#endif // defined(jin_net)
-#endif // __JE_NET_H__
+#endif // __JE_NET_H__ \ No newline at end of file