#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.interactionAlpha; DrawRectangleRec(chat->rect, background); float lineThickness = game->settings.interactionOutlineSize; float border = lineThickness + 1.0; int fontSize = game->settings.interactionFontSize; 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); } void resizeInteractionMenu(InteractionMenu* menu, const Settings* settings) { menu->rect = (Rectangle){ 0.0, 0.0, GetRenderWidth() - settings->mapPreviewWidth, GetRenderHeight() - settings->interactionChatHeight }; } void initInteractionMenu(InteractionMenu* menu, const Settings* settings) { resetInteractionMenu(menu); resizeInteractionMenu(menu, settings); menu->visible = false; menu->entityId = ENTITY_NONE; } void resetInteractionMenu(InteractionMenu* menu) { for (int index = 0; index < INTERACTION_MENU_MAX; ++index) { memset(menu->items[index], 0, INTERACTION_LABEL_MAX * sizeof(char)); } } void showInteractionMenu(InteractionMenu* menu) { menu->visible = true; } void hideInteractionMenu(InteractionMenu* menu) { menu->visible = false; } void updateInteractionMenu(InteractionMenu* menu, Game* game) { if (IsWindowResized()) { resizeInteractionMenu(menu, &game->settings); } /* if (!menu->visible) */ /* { */ /* return; */ /* } */ Color background = DARKGRAY; background.a = game->settings.interactionAlpha; DrawRectangleRec(menu->rect, background); float lineThickness = game->settings.interactionOutlineSize; float border = lineThickness + 1.0; int fontSize = game->settings.interactionFontSize; DrawRectangleLinesEx(menu->rect, lineThickness, BLACK); }