From 3fa74d5844e441f0cccf711791066efaab054b63 Mon Sep 17 00:00:00 2001 From: ilotterytea Date: Sun, 19 Jan 2025 20:42:57 +0500 Subject: feat: save/load .xd files (wip) --- src/screens.c | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) (limited to 'src/screens.c') diff --git a/src/screens.c b/src/screens.c index f7bda99..03b1441 100644 --- a/src/screens.c +++ b/src/screens.c @@ -1,15 +1,56 @@ #include "screens.h" +#include +#include + #include "editor.h" #include "raylib.h" +#include "xd.h" + +#define RAYGUI_IMPLEMENTATION +#include "raygui.h" + +void SE_DrawMenuScreen(GameScreen *currentScreen, Editor *editor, XdData *data, + XdData *datas[]) { + if (IsKeyPressed(KEY_N)) { + *currentScreen = SCREEN_EDITOR; + data = malloc(sizeof(XdData)); + editor->data = data; + + data->name = "xd"; + + // Creating an empty level + data->levels[0] = malloc(sizeof(XdLevel)); + data->levels[0]->floors[0] = malloc(sizeof(XdFloor)); + data->levels[0]->floors[0]->width = 30; + data->levels[0]->floors[0]->height = 30; + } -void SE_DrawMenuScreen() { BeginDrawing(); ClearBackground(RAYWHITE); + + for (int i = 0; i < sizeof(*datas) / sizeof(*datas[0]); i++) { + printf("xd\n"); + XdData *data = datas[i]; + bool button = GuiButton((Rectangle){10, 10 * i, GetScreenWidth() - 10, 40}, + data->name); + } + + GuiLabel((Rectangle){0, GetScreenHeight() - 20, GetScreenWidth(), 20}, + "Press N to create a new campaign"); EndDrawing(); } -void SE_DrawEditorScreen(Editor *editor, Camera2D *camera) { +void SE_DrawEditorScreen(GameScreen *currentScreen, Editor *editor, + Camera2D *camera) { + if (IsKeyPressed(KEY_S)) { + Xd_SaveFile("test.xd", editor->data); + *currentScreen = SCREEN_MENU; + free(editor->data); + editor->data = NULL; + return; + } + if (GetMouseWheelMove() != 0.0) { camera->zoom += (int)GetMouseWheelMove(); -- cgit v1.2.3