aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui.c')
-rw-r--r--src/ui.c68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/ui.c b/src/ui.c
new file mode 100644
index 0000000..a250b01
--- /dev/null
+++ b/src/ui.c
@@ -0,0 +1,68 @@
+#include "ui.h"
+#include "game.h"
+#include "settings.h"
+
+// TODO: byebye magic numbers
+
+void resizeInteractionChat(InteractionChat* chat)
+{
+ float renderWidth = GetRenderWidth();
+ float renderHeight = GetRenderHeight();
+ float height = 200.0;
+
+ chat->rect = (Rectangle){
+ 0.0,
+ renderHeight - height,
+ renderWidth,
+ height
+ };
+}
+
+void initInteractionChat(InteractionChat* chat)
+{
+ memset(&chat->text, 0, INTERACTION_CHAT_MAX * sizeof(char));
+ chat->visible = true;
+
+ resizeInteractionChat(chat);
+ writeToInteractionChat(chat, "test test test test test\ntest test test test test test test test");
+}
+
+void showInteractionChat(InteractionChat* chat)
+{
+ chat->visible = true;
+}
+
+void hideInteractionChat(InteractionChat* chat)
+{
+ chat->visible = false;
+}
+
+void writeToInteractionChat(InteractionChat* chat, const char* text)
+{
+ strncat(chat->text, text, INTERACTION_CHAT_MAX * sizeof(char) - 1);
+}
+
+void clearInteractionChat(InteractionChat* chat)
+{
+ memset(&chat->text, 0, INTERACTION_CHAT_MAX * sizeof(char));
+}
+
+void updateInteractionChat(InteractionChat* chat, Game* game)
+{
+ if (IsWindowResized())
+ {
+ resizeInteractionChat(chat);
+ }
+
+ if (!chat->visible)
+ {
+ return;
+ }
+
+ Color background = DARKGRAY;
+ background.a = game->settings.interactionChatAlpha;
+ DrawRectangleRec(chat->rect, background);
+
+ DrawRectangleLinesEx(chat->rect, 2.0, BLACK);
+ DrawText(chat->text, chat->rect.x + 3.0, chat->rect.y + 3.0, 20, GREEN);
+}