aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/cpp/Subconscious.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/cpp/Subconscious.cpp')
-rw-r--r--src/main/cpp/Subconscious.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/main/cpp/Subconscious.cpp b/src/main/cpp/Subconscious.cpp
new file mode 100644
index 0000000..942b0b4
--- /dev/null
+++ b/src/main/cpp/Subconscious.cpp
@@ -0,0 +1,60 @@
+#include "Subconscious.hpp"
+#include "WorldScene.hpp"
+
+#include <SFML/Graphics.hpp>
+
+/*** public methods ***/
+
+Subconscious::Subconscious()
+ : _window(sf::VideoMode(800, 600), "Subconscious")
+{
+ _window.setVerticalSyncEnabled(true);
+ _window.setFramerateLimit(90);
+}
+
+Subconscious::~Subconscious()
+{}
+
+void Subconscious::run()
+{
+ _running = true;
+ while (_running && _window.isOpen()) {
+ gameUpdate();
+ gameRender();
+ }
+}
+
+void Subconscious::demo()
+{
+ Scene *demoScene = new WorldScene();
+
+ _currentScene = demoScene;
+ _scenes.push_back(demoScene);
+
+ run();
+}
+
+
+/*** private methods ***/
+
+void Subconscious::gameUpdate()
+{
+ sf::Event event;
+
+ while (_window.pollEvent(event)) {
+ if (event.type == sf::Event::Closed) {
+ _window.close();
+ }
+ }
+}
+
+void Subconscious::gameRender()
+{
+ _window.clear();
+
+ if (_currentScene != nullptr) {
+ _currentScene->render(_window);
+ }
+
+ _window.display();
+}