#include "utils.h" #include "entity.h" #include "assets.h" #include "world.h" #ifndef UI_H #define UI_H #define INTERACTION_COLUMN_MAX 80 #define INVENTORY_MAX 10 #define INVENTORY_SPRITE_SIZE 42 typedef char InteractionItems[INTERACTION_MENU_MAX][INTERACTION_LABEL_MAX]; typedef struct { char text[INTERACTION_CHAT_MAX]; char displayedText[INTERACTION_CHAT_MAX]; size_t textSize; int displayUpTo; // Used for cool animation. double lastCharacterUpdate; Rectangle rect; bool visible; EntityId entityId; } InteractionChat; typedef struct { InteractionItems items; int itemCount; Rectangle rect; bool visible; EntityId entityId; } InteractionMenu; typedef struct { Rectangle rect; bool visable; EntityItem items[INVENTORY_MAX]; int itemCount; } Inventory; // Interaction chat procedures. void initInteractionChat(InteractionChat* chat, const Settings* settings); void showInteractionChat(InteractionChat* chat); void hideInteractionChat(InteractionChat* chat); void setInteractionChat(InteractionChat* chat, const char* text); void writeToInteractionChat(InteractionChat* chat, const char* text); void clearInteractionChat(InteractionChat* chat); bool isInteractionChatAnimationDone(InteractionChat* chat); void endInteractionChatAnimation(InteractionChat* chat); void updateInteractionChat(InteractionChat* chat, Game* game); // Interaction menu procedures. void initInteractionMenu(InteractionMenu* menu, const Settings* settings); void setInteractionMenu(InteractionMenu* menu, const InteractionItems items, int itemCount); void resetInteractionMenu(InteractionMenu* menu); void showInteractionMenu(InteractionMenu* menu); void hideInteractionMenu(InteractionMenu* menu); void updateInteractionMenu(InteractionMenu* menu, Game* game); // Inventory void initInventory(Inventory* inventory); void showInventory(Inventory* inventory); void hideInventory(Inventory* inventory); void addItemToInventory(Inventory* inventory, EntityItem item); void updateInventory(Inventory* inventory); #endif