aboutsummaryrefslogtreecommitdiff
path: root/src/games/Game.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/games/Game.cpp')
-rw-r--r--src/games/Game.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/games/Game.cpp b/src/games/Game.cpp
new file mode 100644
index 0000000..628f5d4
--- /dev/null
+++ b/src/games/Game.cpp
@@ -0,0 +1,39 @@
+#include <basic/defs.hpp>
+#include <games/Game.hpp>
+#include <games/tetris/Tetris.hpp>
+#include <games/snake/Snake.hpp>
+#include <games/minesweeper/Minesweeper.hpp>
+
+#include <assert.h>
+#include <memory>
+
+
+std::unique_ptr<Game>
+Game::Select(GameType type)
+{
+ switch (type) {
+ case NO_GAME: {
+ return nullptr;
+ }
+
+ case TETRIS: {
+ return std::make_unique<Tetris>();
+ } break;
+
+ case SNAKE: {
+ return std::make_unique<Snake>();
+ } break;
+
+ case MINESWEEPER: {
+ return std::make_unique<Minesweeper>();
+ } break;
+
+ InvalidDefaultCase;
+ }
+
+ return nullptr;
+}
+
+
+Game::~Game() {}
+