From a70cd7b4d287bf8b52bf88784aca2c788b2372cf Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Mon, 11 Aug 2025 23:17:15 -0500 Subject: [PATCH] Draw console --- src/dusksdl2/display/CMakeLists.txt | 1 + src/dusksdl2/display/render.c | 3 ++- src/dusksdl2/display/renderconsole.c | 28 ++++++++++++++++++++++++++++ src/dusksdl2/display/renderconsole.h | 14 ++++++++++++++ src/dusksdl2/display/rendertext.c | 3 +-- src/dusksdl2/display/rendertext.h | 1 + 6 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 src/dusksdl2/display/renderconsole.c create mode 100644 src/dusksdl2/display/renderconsole.h diff --git a/src/dusksdl2/display/CMakeLists.txt b/src/dusksdl2/display/CMakeLists.txt index 93379ae..736e2db 100644 --- a/src/dusksdl2/display/CMakeLists.txt +++ b/src/dusksdl2/display/CMakeLists.txt @@ -9,6 +9,7 @@ target_sources(${DUSK_TARGET_NAME} render.c renderbackbuffer.c rendertext.c + renderconsole.c ) # Subdirs diff --git a/src/dusksdl2/display/render.c b/src/dusksdl2/display/render.c index 505c5d2..6885b2d 100644 --- a/src/dusksdl2/display/render.c +++ b/src/dusksdl2/display/render.c @@ -9,6 +9,7 @@ #include "assert/assert.h" #include "renderbackbuffer.h" #include "rendertext.h" +#include "renderconsole.h" SDL_Window *RENDER_WINDOW; SDL_Renderer *RENDER_RENDERER; @@ -70,7 +71,7 @@ errorret_t renderDraw(void) { renderBackBufferBind(); // Draw everything - renderTextDraw(0.0f, 0.0f, "Hello World!"); + renderConsoleDraw(); // Unbind the backbuffer renderBackBufferUnbind(); diff --git a/src/dusksdl2/display/renderconsole.c b/src/dusksdl2/display/renderconsole.c new file mode 100644 index 0000000..bd7fe83 --- /dev/null +++ b/src/dusksdl2/display/renderconsole.c @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2025 Dominic Masters + * + * This software is released under the MIT License. + * https://opensource.org/licenses/MIT + */ + +#include "renderconsole.h" +#include "console/console.h" +#include "rendertext.h" + +void renderConsoleDraw(void) { + // if(!CONSOLE.visible) return; + + // renderTextDraw(0, 0, "Dusk Console"); + + int32_t i = 0; + char_t *line; + do { + line = CONSOLE.line[i]; + if(line[0] == '\0') { + i++; + continue; + } + renderTextDraw(0, (CONSOLE_HISTORY_MAX - i - 1) * FONT_TILE_HEIGHT, line); + i++; + } while(i < CONSOLE_HISTORY_MAX); +} \ No newline at end of file diff --git a/src/dusksdl2/display/renderconsole.h b/src/dusksdl2/display/renderconsole.h new file mode 100644 index 0000000..0d90454 --- /dev/null +++ b/src/dusksdl2/display/renderconsole.h @@ -0,0 +1,14 @@ +/** + * Copyright (c) 2025 Dominic Masters + * + * This software is released under the MIT License. + * https://opensource.org/licenses/MIT + */ + +#pragma once +#include "dusksdl2.h" + +/** + * Draws the console overlay. + */ +void renderConsoleDraw(void); \ No newline at end of file diff --git a/src/dusksdl2/display/rendertext.c b/src/dusksdl2/display/rendertext.c index 38ea445..4d7e989 100644 --- a/src/dusksdl2/display/rendertext.c +++ b/src/dusksdl2/display/rendertext.c @@ -7,7 +7,6 @@ #include "rendertext.h" #include "render.h" -#include "ui/font.h" #include "assert/assert.h" SDL_Texture* RENDER_TEXT_TEXTURE = NULL; @@ -94,7 +93,7 @@ void renderTextDraw( const char_t *text ) { assertNotNull(text, "Text cannot be NULL"); - + float_t posX = x; float_t posY = y; diff --git a/src/dusksdl2/display/rendertext.h b/src/dusksdl2/display/rendertext.h index a408b34..048c0b5 100644 --- a/src/dusksdl2/display/rendertext.h +++ b/src/dusksdl2/display/rendertext.h @@ -7,6 +7,7 @@ #pragma once #include "dusksdl2.h" +#include "ui/font.h" extern SDL_Texture* RENDER_TEXT_TEXTURE;