aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui.c
blob: 17a5c9fdf08290bf77a63e08a6cf8928f13b4557 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include "ui.h"
#include "game.h"
#include "settings.h"

void resizeInteractionChat(InteractionChat* chat, const Settings* settings)
{
  float renderWidth = GetRenderWidth();
  float renderHeight = GetRenderHeight();
  float height = settings->interactionChatHeight;
  
  chat->rect = (Rectangle){
    0.0,
    renderHeight - height,
    renderWidth,
    height
  };
}

void initInteractionChat(InteractionChat* chat, const Settings* settings)
{
  memset(&chat->text, 0, INTERACTION_CHAT_MAX * sizeof(char));
  chat->visible = false;
  chat->entityId = ENTITY_NONE;

  resizeInteractionChat(chat, settings);
}

void showInteractionChat(InteractionChat* chat)
{
  chat->visible = true;
}

void hideInteractionChat(InteractionChat* chat)
{
  chat->visible = false;
}

void setInteractionChat(InteractionChat* chat, const char* text)
{
  strncpy(chat->text, text, INTERACTION_CHAT_MAX * sizeof(char) - 1);
}

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, &game->settings);
  }
    
  if (!chat->visible)
  {
    return;
  }

  Color background = DARKGRAY;
  background.a = game->settings.interactionChatAlpha;
  DrawRectangleRec(chat->rect, background);

  float lineThickness = 2.0;
  float border = 3.0;
  int fontSize = game->settings.interactionChatFontSize;
  
  DrawRectangleLinesEx(chat->rect, lineThickness, BLACK);

  if (chat->entityId != ENTITY_NONE)
  {
    DrawText(TextFormat("%s says:", getEntityName(chat->entityId)),
             chat->rect.x + border,
             chat->rect.y + border,
             fontSize,
             WHITE);
  }

  DrawText(chat->text,
           chat->rect.x + border,
           chat->rect.y + (border * 2.0) + fontSize,
           fontSize,
           GREEN);

  DrawText("Hit enter to continue...",
           chat->rect.x + border,
           chat->rect.y + chat->rect.height - fontSize - border,
           fontSize,
           WHITE);
}