From c559481af99c181d3f5565bf6b13d897104278e3 Mon Sep 17 00:00:00 2001 From: KikooDX Date: Thu, 18 Mar 2021 23:03:46 +0100 Subject: [PATCH] Build with raylib of ncurses. Not sure about this. This seems like a big overhead. I think I will focus on one target and keep the possibility to work on another later. --- CMakeLists.txt | 27 ++++++++++++++++++++++----- include/conf.h | 7 +++++++ include/renderer/init.h | 6 ++++++ src/main.c | 4 ++++ src/ncurses/init.c | 21 +++++++++++++++++++++ src/raylib/init.c | 14 ++++++++++++++ 6 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 include/conf.h create mode 100644 include/renderer/init.h create mode 100644 src/ncurses/init.c create mode 100644 src/raylib/init.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 2c3ff4a..8ea65bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,6 @@ cmake_minimum_required(VERSION 3.18) -project(kblec C) +# Add render targets here. +project(kble C) include_directories(include) @@ -8,10 +9,26 @@ set(SOURCES src/level.c ) -add_executable(${PROJECT_NAME} ${SOURCES}) -target_compile_options(${PROJECT_NAME} PRIVATE +set(SOURCES_NCURSES + src/ncurses/init.c +) + +set(SOURCES_RAYLIB + src/raylib/init.c +) + +set(FLAGS -Wall -Wextra -Wshadow -Wswitch-default -Wswitch-enum -Wunreachable-code -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Werror-implicit-function-declaration - -ansi -pedantic-errors -g -Os) -#target_link_libraries(${PROJECT_NAME} raylib) + -g -Os +) + +add_executable(kble-ncurses ${SOURCES} ${SOURCES_NCURSES}) +add_executable(kble-raylib ${SOURCES} ${SOURCES_RAYLIB}) + +target_compile_options(kble-ncurses PRIVATE ${FLAGS} -DNCURSES) +target_compile_options(kble-raylib PRIVATE ${FLAGS} -DRAYLIB) + +target_link_libraries(kble-ncurses ncurses) +target_link_libraries(kble-raylib raylib) diff --git a/include/conf.h b/include/conf.h new file mode 100644 index 0000000..e44d12d --- /dev/null +++ b/include/conf.h @@ -0,0 +1,7 @@ +#pragma once + +#if defined(RAYLIB) +# define WINDOW_WIDTH 640 +# define WINDOW_HEIGHT 480 +# define TARGET_FPS 60 +#endif diff --git a/include/renderer/init.h b/include/renderer/init.h new file mode 100644 index 0000000..58d00b2 --- /dev/null +++ b/include/renderer/init.h @@ -0,0 +1,6 @@ +#pragma once + +/* Initialize renderer. */ +void renderer_init(void); +/* Deinitialize renderer. */ +void renderer_deinit(void); diff --git a/src/main.c b/src/main.c index 79e4c38..33bb4d5 100644 --- a/src/main.c +++ b/src/main.c @@ -5,6 +5,7 @@ #include #include "level.h" +#include "renderer/init.h" int main(int argc, char **argv) { struct Level level; @@ -16,8 +17,11 @@ int main(int argc, char **argv) { } level_read(&level, argv[1]); + renderer_init(); + level_write(level, argv[2]); level_free(&level); + renderer_deinit(); return EXIT_SUCCESS; } diff --git a/src/ncurses/init.c b/src/ncurses/init.c new file mode 100644 index 0000000..2e337b0 --- /dev/null +++ b/src/ncurses/init.c @@ -0,0 +1,21 @@ +#include +#include +#include + +#include "renderer/init.h" + +void renderer_init(void) { + setlocale(LC_ALL, ""); + + initscr(); + cbreak(); + noecho(); + nonl(); + intrflush(stdscr, FALSE); + keypad(stdscr, TRUE); + curs_set(TRUE); +} + +void renderer_deinit(void) { + endwin(); +} diff --git a/src/raylib/init.c b/src/raylib/init.c new file mode 100644 index 0000000..125d685 --- /dev/null +++ b/src/raylib/init.c @@ -0,0 +1,14 @@ +#include + +#include "conf.h" + +#include "renderer/init.h" + +void renderer_init(void) { + InitWindow(WINDOW_WIDTH, WINDOW_HEIGHT, "KBLE"); + SetTargetFPS(TARGET_FPS); +} + +void renderer_deinit(void) { + CloseWindow(); +}