summaryrefslogtreecommitdiff
path: root/src/scenes/resultView.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/scenes/resultView.c')
-rw-r--r--src/scenes/resultView.c68
1 files changed, 68 insertions, 0 deletions
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;
+}