changeset 23:bc9637a2601b

core: add basic system routines
author David Demelier <markand@malikania.fr>
date Fri, 10 Jan 2020 12:37:59 +0100
parents 5519ad48822e
children 4a06503641eb
files Makefile src/main.c src/sys.c src/sys.h
diffstat 4 files changed, 98 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Thu Jan 09 20:48:01 2020 +0100
+++ b/Makefile	Fri Jan 10 12:37:59 2020 +0100
@@ -28,13 +28,14 @@
                 src/font.c \
                 src/image.c \
                 src/sprite.c \
+                src/sys.c \
                 src/texture.c \
                 src/window.c
 OBJS=           ${SRCS:.c=.o}
 DEPS=           ${SRCS:.c=.d}
 
-SDL_CFLAGS=     `pkg-config --cflags sdl2 SDL2_image SDL2_ttf`
-SDL_LDFLAGS=    `pkg-config --libs sdl2 SDL2_image SDL2_ttf`
+SDL_CFLAGS=     `pkg-config --cflags sdl2 SDL2_image SDL2_mixer SDL2_ttf`
+SDL_LDFLAGS=    `pkg-config --libs sdl2 SDL2_image SDL2_mixer SDL2_ttf`
 
 EXPAT_CFLAGS=   `pkg-config --cflags expat`
 EXPAT_LDFLAGS=  `pkg-config --libs expat`
--- a/src/main.c	Thu Jan 09 20:48:01 2020 +0100
+++ b/src/main.c	Fri Jan 10 12:37:59 2020 +0100
@@ -26,10 +26,7 @@
 #include "sprite.h"
 #include "texture.h"
 #include "window.h"
-
-#include <SDL.h>
-#include <SDL_ttf.h>
-#include <SDL_image.h>
+#include "sys.h"
 
 int
 main(int argc, char **argv)
@@ -37,17 +34,12 @@
 	(void)argc;
 	(void)argv;
 
-	SDL_Init(SDL_INIT_VIDEO);
-	TTF_Init();
-	IMG_Init(IMG_INIT_PNG);
-
-	window_init("Molko's Adventure", 640, 480);
+	sys_init();
+	window_init("Molko's Adventure", 1280, 720);
 	window_set_color(0x667788ff);
 
 	for (;;) {
-		union event ev;
-
-		while (event_poll(&ev)) {
+		for (union event ev; event_poll(&ev); ) {
 			switch (ev.type) {
 			case EVENT_QUIT:
 				return 0;
@@ -64,8 +56,9 @@
 
 		window_clear();
 		window_present();
-		SDL_Delay(50);
 	}
 
+	sys_close();
+
 	return 0;
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sys.c	Fri Jan 10 12:37:59 2020 +0100
@@ -0,0 +1,48 @@
+/*
+ * sys.c -- system routines
+ *
+ * Copyright (c) 2020 David Demelier <markand@malikania.fr>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <SDL.h>
+#include <SDL_image.h>
+#include <SDL_mixer.h>
+#include <SDL_ttf.h>
+
+#include "sys.h"
+
+bool
+sys_init(void)
+{
+	if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) < 0)
+		return false;
+	if (IMG_Init(IMG_INIT_PNG) != IMG_INIT_PNG)
+		return false;
+	if (TTF_Init() < 0)
+		return false;
+	if (Mix_Init(MIX_INIT_OGG) != MIX_INIT_OGG)
+		return false;
+
+	return true;
+}
+
+void
+sys_close(void)
+{
+	Mix_Quit();
+	TTF_Quit();
+	IMG_Quit();
+	SDL_Quit();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sys.h	Fri Jan 10 12:37:59 2020 +0100
@@ -0,0 +1,41 @@
+/*
+ * sys.h -- system routines
+ *
+ * Copyright (c) 2020 David Demelier <markand@malikania.fr>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef MOLKO_SYS_H
+#define MOLKO_SYS_H
+
+/**
+ * \file sys.h
+ * \brief System routines.
+ */
+
+#include <stdbool.h>
+
+/**
+ * Initialize the system, should be called in the beginning of the main.
+ */
+bool
+sys_init(void);
+
+/**
+ * Close the system.
+ */
+void
+sys_close(void);
+
+#endif /* !MOLKO_SYS_H */