#pragma once #include "defaults/defaults.hpp" #include "resource/resource_data.hpp" #include #include class Game; class Inventory; enum class MessageType { CHARACTER, DISCOVERY, INVENTORY, RESOURCE, VEGETABLE, VEGETABLE_SEED, }; struct Message_s { float duration = 0; MessageType message_type = MessageType::CHARACTER; std::string message = ""; void* type_data = nullptr; }; enum class MessageKey { MOIN, BUILDING_TOOL_REQUIRED, PLAYER_EXHAUSTED, DISCOVERED_RESOURCE, DISCOVERED_VEGETABLE, DISCOVERED_BUILDING, THIRST_20, THIRST_0, WATER_APPRECIATION, EAT_APPRECIATION, CRAFTED_ITEM, ADD_INVENTORY, ADD_RESOURCE, ADD_VEGETABLE, ADD_VEGETABLE_SEED, NOTHING_TO_INTERACT, }; class Messages { public: std::unordered_multimap messages; std::unordered_map messages_data; Messages(); void Add(MessageKey, void* type_data = nullptr); void Update(); void Render(SDL_Renderer*, float center_x, float start_y); void render_InventoryMessages(Game*, Inventory* inventory); };