summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
new file mode 100644
index 0000000..4cbd53a
--- /dev/null
+++ b/src/main.c
@@ -0,0 +1,88 @@
+/*
+ * Tuxánci 2 - A first person shooter
+ * Copyright (C) 2007-2011 Tuxánci Development Team
+ * Copyright (C) 2025-2026 Connor Thomson
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include <stdlib.h>
+#include "window.h"
+#include "version.h"
+#include "ta_sdl.h"
+#include "logging.h"
+#include "forever.h"
+#include "gpu.h"
+#include "text.h"
+#include "events.h"
+#include "exit_key.h"
+#include "keyboard.h"
+#include "ta_sdl_ttf.h"
+#include "scale.h"
+#include "audio.h"
+#include "screen.h"
+#include "color.h"
+#include "teapot.h"
+#include "mouse.h"
+
+static void ta_main_init(void) {
+ ta_color_init();
+ ta_window_init();
+ ta_exit_key_init();
+ ta_sdl_ttf_init();
+ ta_text_init();
+ ta_gpu_init();
+ ta_teapot_init();
+#ifdef ENABLE_AUDIO
+ ta_audio_init();
+#endif // ENABLE_AUDIO
+ ta_screen_current = MAIN_MENU;
+}
+
+static void ta_main_update(void) {
+ ta_events_update();
+ ta_window_update();
+#ifdef ENABLE_AUDIO
+ ta_audio_update();
+#endif // ENABLE_AUDIO
+ ta_gpu_start_frame();
+ ta_mouse_update();
+ ta_screen_update();
+ ta_gpu_end_frame();
+}
+
+void ta_main_exit(int code) {
+ ta_keyboard_shutdown();
+#ifdef ENABLE_AUDIO
+ ta_audio_destroy();
+#endif // ENABLE_AUDIO
+ ta_text_shutdown();
+ ta_teapot_shutdown();
+ ta_window_shutdown();
+ ta_sdl_ttf_shutdown();
+ ta_sdl_shutdown();
+
+ ta_log("Exiting tuxanci2 with code %d", code);
+ exit(code);
+}
+
+int main(void) {
+ SDL_Log("tuxanci2 version " TA_VERSION "\n\n");
+
+ ta_main_init();
+
+ ta_forever(ta_main_update);
+
+ return 0;
+} \ No newline at end of file