diff options
Diffstat (limited to 'src/ui.c')
| -rw-r--r-- | src/ui.c | 53 |
1 files changed, 47 insertions, 6 deletions
@@ -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; + } } |
