summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBardur Arantsson <bardur@scientician.net>2016-09-17 09:58:15 +0200
committerBardur Arantsson <bardur@scientician.net>2016-09-17 09:58:15 +0200
commit5eec61dd05577623c1d5b9eed3a22d1352dcd990 (patch)
treef929b41a5222c9be7fc8dd49f9ed51d4ee838772
parentdc261d2c9732554d9f510e11711ac84d028e5ac1 (diff)
Introduce Game struct
Motivation: SIOF is such a huge chore to work around at this point that it's probably best to just start the looong task of getting rid of the globals. Currently we allocate a single global Game instance which we leak. The idea here is to start moving global game state into the single global Game singleton and eventually allocating the Game variable on the stack such that everything works out nicely wrt. freeing allocated memory and such. Once all the game state has been moved into Game we can start plumbing all the functions, classes, &c such that we don't have to reference game state via the "game" global.
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/game.cc3
-rw-r--r--src/game.hpp15
-rw-r--r--src/game_fwd.hpp4
-rw-r--r--src/init2.cc2
5 files changed, 25 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index bf970c59..5f06bcec 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -28,6 +28,7 @@ SET(SRCS_COMMON
dice.cc
dungeon.cc
files.cc
+ game.cc
gen_evol.cc
gen_maze.cc
generate.cc
diff --git a/src/game.cc b/src/game.cc
new file mode 100644
index 00000000..284c9ccc
--- /dev/null
+++ b/src/game.cc
@@ -0,0 +1,3 @@
+#include "game.hpp"
+
+Game *game;
diff --git a/src/game.hpp b/src/game.hpp
new file mode 100644
index 00000000..e0ebb9ea
--- /dev/null
+++ b/src/game.hpp
@@ -0,0 +1,15 @@
+#pragma once
+
+#include "game_fwd.hpp"
+
+/**
+ * All structures for the game itself.
+ */
+struct Game {
+
+};
+
+/**
+ * Game instance
+ */
+extern Game *game;
diff --git a/src/game_fwd.hpp b/src/game_fwd.hpp
new file mode 100644
index 00000000..840e5f3b
--- /dev/null
+++ b/src/game_fwd.hpp
@@ -0,0 +1,4 @@
+#pragma once
+
+struct Game;
+extern Game *game;
diff --git a/src/init2.cc b/src/init2.cc
index fa07bb02..7cb3a5cd 100644
--- a/src/init2.cc
+++ b/src/init2.cc
@@ -1256,6 +1256,8 @@ void init_angband(void)
/* Close it */
(void)fd_close(fd);
+ // Initialize game structure
+ game = new Game();
/* Allocate the wilderness */
wilderness_ptr = new grid<wilderness_map>();