aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui.c')
-rw-r--r--src/ui.c53
1 files changed, 47 insertions, 6 deletions
diff --git a/src/ui.c b/src/ui.c
index 707bb06..84a8f75 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -96,12 +96,11 @@ void updateInteractionChat(InteractionChat* chat, Game* game)
void resizeInteractionMenu(InteractionMenu* menu, const Settings* settings)
{
- menu->rect = (Rectangle){
- 0.0,
- 0.0,
- GetRenderWidth() - settings->mapPreviewWidth,
- GetRenderHeight() - settings->interactionChatHeight
- };
+ menu->rect.width = settings->interactionMenuWidth;
+ menu->rect.height = (INTERACTION_MENU_MAX + 4) * settings->interactionFontSize;
+ menu->rect.x = 0.0;
+ menu->rect.y = GetRenderHeight() - settings->interactionChatHeight -
+ menu->rect.height - settings->interactionOutlineSize;
}
void initInteractionMenu(InteractionMenu* menu, const Settings* settings)
@@ -112,12 +111,34 @@ void initInteractionMenu(InteractionMenu* menu, const Settings* settings)
menu->entityId = ENTITY_NONE;
}
+void setInteractionMenu(InteractionMenu* menu,
+ const InteractionItems items,
+ int itemCount)
+{
+ // Check for out of bounds.
+ if (itemCount > INTERACTION_MENU_MAX)
+ {
+ TraceLog(LOG_ERROR, "itemCount > INTERACTION_MENU_MAX");
+ return;
+ }
+
+ menu->itemCount = itemCount;
+
+ for (int index = 0; index < itemCount; ++index)
+ {
+ strncpy(menu->items[index], items[index],
+ INTERACTION_LABEL_MAX * sizeof(char) - 1);
+ }
+}
+
void resetInteractionMenu(InteractionMenu* menu)
{
for (int index = 0; index < INTERACTION_MENU_MAX; ++index)
{
memset(menu->items[index], 0, INTERACTION_LABEL_MAX * sizeof(char));
}
+
+ menu->itemCount = 0;
}
void showInteractionMenu(InteractionMenu* menu)
@@ -142,6 +163,7 @@ void updateInteractionMenu(InteractionMenu* menu, Game* game)
/* return; */
/* } */
+ // Draw background.
Color background = DARKGRAY;
background.a = game->settings.interactionAlpha;
DrawRectangleRec(menu->rect, background);
@@ -151,4 +173,23 @@ void updateInteractionMenu(InteractionMenu* menu, Game* game)
int fontSize = game->settings.interactionFontSize;
DrawRectangleLinesEx(menu->rect, lineThickness, BLACK);
+
+ Vector2 position = (Vector2){menu->rect.x + border,
+ menu->rect.y + border};
+
+ // Draw top information.
+ DrawText("Press a number key to select", position.x, position.y, fontSize,
+ WHITE);
+
+ position.y += fontSize + fontSize;
+
+
+ // Draw items.
+ for (int index = 0; index < menu->itemCount; ++index)
+ {
+ DrawText(TextFormat("%d: ", index + 1), position.x, position.y, fontSize, WHITE);
+ DrawText(TextFormat(" %s", menu->items[index]), position.x, position.y,
+ fontSize, GREEN);
+ position.y += fontSize;
+ }
}