summaryrefslogtreecommitdiff
path: root/src/scenes
diff options
context:
space:
mode:
authorphysick <mynameisgennadiy@vk.com>2026-07-12 12:55:19 +0500
committerphysick <mynameisgennadiy@vk.com>2026-07-12 12:55:19 +0500
commit71e1f2dc8e9e1b3ee595a2712ec24d11ce243f1c (patch)
treefe5d83589ef618dee9c34ff1a229cee851300f09 /src/scenes
parent58a26ca05aacb4736e9e7e652badd43a8085d1f1 (diff)
Result view
Diffstat (limited to 'src/scenes')
-rw-r--r--src/scenes/puzzleScene.c4
-rw-r--r--src/scenes/resultView.c68
-rw-r--r--src/scenes/scenes.h1
3 files changed, 71 insertions, 2 deletions
diff --git a/src/scenes/puzzleScene.c b/src/scenes/puzzleScene.c
index 7c4e1b2..972335f 100644
--- a/src/scenes/puzzleScene.c
+++ b/src/scenes/puzzleScene.c
@@ -1,5 +1,4 @@
#include <raylib.h>
-#include <stdio.h>
#include <stdlib.h>
#include "scenes.h"
#include "../resources/resources.h"
@@ -89,8 +88,9 @@ bool updatePuzzleScene(void *self) {
HandleKeyboard(data->EditorInfo);
if (IsKeyPressed(KEY_F5)) {
char *txt = GetText(data->EditorInfo);
- EvaluateScript(txt);
+ char *outp = EvaluateScript(txt);
free(txt);
+ AddScene(CreateResultView(outp));
}
return true;
diff --git a/src/scenes/resultView.c b/src/scenes/resultView.c
new file mode 100644
index 0000000..9985319
--- /dev/null
+++ b/src/scenes/resultView.c
@@ -0,0 +1,68 @@
+#include <raylib.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include "scenes.h"
+#include "../ui_elements/UI.h"
+#include "../resources/resources.h"
+
+static const int PADDING = 10;
+static const int BORDER = 2;
+
+typedef struct {
+ char *value;
+ int scroll;
+} ResultViewData;
+
+Rectangle GetResultViewBodyRect() {
+ int HeaderOffset = PADDING * 2;
+ Rectangle outp = {
+ .x = PADDING,
+ .y = HeaderOffset,
+ .width = GetScreenWidth() - PADDING * 2,
+ .height = GetScreenHeight() - HeaderOffset - PADDING * 3,
+ };
+ return outp;
+}
+
+bool updateResultView(void *self) {
+ if (IsKeyDown(KEY_ESCAPE)) {
+ DeleteSceneFromStack();
+ return true;
+ }
+ return true;
+}
+
+bool drawResultView(void *self) {
+ ResultViewData *data = ((Scene *)self)->data;
+ DrawBackground();
+ Rectangle body = GetResultViewBodyRect();
+ DrawRecBordered(body, WHITE, COLORSCHEME_ORANGE, BORDER);
+ DrawTextInRec(body, data->value,
+ GetMainFont(), 20, COLORSCHEME_BROWN, 3, &data->scroll);
+ return true;
+}
+
+void deinitResultView(void *self) {
+ TraceLog(LOG_INFO, "Deleting a result view");
+ free((Scene *)self);
+}
+
+Scene *CreateResultView(char *result) {
+ TraceLog(LOG_INFO, "Creating a main menu");
+ Scene *outp = malloc(sizeof(Scene));
+ outp->Draw = drawResultView;
+ outp->Update = updateResultView;
+ outp->Deint = deinitResultView;
+
+ ResultViewData *data = malloc(sizeof(ResultViewData));
+ if (data == NULL) {
+ free(outp);
+ return NULL;
+ }
+ data->value = result;
+ data->scroll = 0;
+ outp->data = data;
+
+ return outp;
+}
diff --git a/src/scenes/scenes.h b/src/scenes/scenes.h
index 22d9a41..d243a6d 100644
--- a/src/scenes/scenes.h
+++ b/src/scenes/scenes.h
@@ -28,5 +28,6 @@ bool UpdateScene();
Scene *CreateMainMenu();
Scene *CreatePuzzleScene(Puzzle *puzzle);
+Scene *CreateResultView(char *result);
#endif // SCENES_H