summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/game/game.c26
-rw-r--r--src/main/game/game.h6
-rw-r--r--src/main/main.c14
3 files changed, 34 insertions, 12 deletions
diff --git a/src/main/game/game.c b/src/main/game/game.c
index 117cf45..0aa4888 100644
--- a/src/main/game/game.c
+++ b/src/main/game/game.c
@@ -17,7 +17,33 @@
* along with Tris Game. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <stdlib.h>
#include "../engine/engine.h"
+#include "game.h"
+#include "../util.h"
+#include "../engine/ui/ui.h"
+
+TrisGame *
+game_init(int width, int height)
+{
+ TrisGame *game = malloc(sizeof(TrisGame));
+ if (game == NULL) {
+ log_error("Error allocating memory for the game");
+ exit(EXIT_FAILURE);
+ }
+ engine_init(width, height);
+ ui_set_title("Tris Game");
+
+ game_draw_field(0.5, 0, 0);
+
+ return game;
+}
+
+void
+game_start()
+{
+ engine_loop();
+}
void
game_draw_field(float box_size, float x, float y)
diff --git a/src/main/game/game.h b/src/main/game/game.h
index e98e109..298cafb 100644
--- a/src/main/game/game.h
+++ b/src/main/game/game.h
@@ -20,6 +20,12 @@
#ifndef __GAME_H__
#define __GAME_H__
+typedef struct TrisGame {
+ int width, height;
+} TrisGame;
+
+TrisGame *game_init(int width, int height);
+void game_start(void);
void game_draw_field(float box_size, float x, float y);
#endif /* __GAME_H__ */
diff --git a/src/main/main.c b/src/main/main.c
index 9014c3a..0f39200 100644
--- a/src/main/main.c
+++ b/src/main/main.c
@@ -21,25 +21,15 @@
#include <GL/glx.h>
#include <stdio.h>
#include <stdlib.h>
-#include "engine/ui/ui.h"
#include "engine/engine.h"
#include "game/game.h"
#define WIDTH 640
#define HEIGHT 480
-void
-draw_frame()
-{
- game_draw_field(0.5, 0, 0);
-}
-
int main(void) {
- engine_init(WIDTH, HEIGHT);
- ui_set_title("Tris Game");
- draw_frame();
-
- engine_loop();
+ game_init(WIDTH, HEIGHT);
+ game_start();
return EXIT_SUCCESS;
}