#include "text_queue.h" void level_text_queue_set(Level* self); void level_text_queue_add(Level* self, const char* string); void level_text_queue_clear(Level* self); void level_text_queue_set(Level* self) { self->ecs->isLog = false; for (s32 i = 0; i < (s32)self->textQueue.count; i++) { EntityID* id; ComponentDeleteOnTimer* deleteOnTimer; id = vector_get(&self->textQueue, i); deleteOnTimer = ecs_component_get(self->ecs, COMPONENT_DELETE_ON_TIMER, *id); if (!deleteOnTimer) { vector_remove(&self->textQueue, i); i--; } } self->ecs->isLog = true; for (s32 i = 0; i < (s32)self->textQueue.count; i++) { EntityID* id; ComponentText* text; id = vector_get(&self->textQueue, i); text = ecs_component_get(self->ecs, COMPONENT_TEXT, *id); glm_vec3_copy(LEVEL_TEXT_QUEUE_POSITION, text->position); text->position[1] -= self->ecs->resources->fonts[FONT_SMALL].size * i; } } void level_text_queue_clear(Level* self) { self->ecs->isLog = false; for (s32 i = 0; i < (s32)self->textQueue.count; i++) { EntityID* id; id = vector_get(&self->textQueue, i); if (id) ecs_entity_delete(self->ecs, *id); } vector_clear(&self->textQueue); self->ecs->isLog = true; } void level_text_queue_add(Level* self, const char* string) { EntityID id; id = entity_text_queue_entry_add ( self->ecs, &self->ecs->resources->fonts[FONT_SMALL], RENDERER_BUFFER_UI, string, LEVEL_TEXT_QUEUE_POSITION, -1, LEVEL_TEXT_QUEUE_TIMER ); vector_push(&self->textQueue, &id); level_text_queue_set(self); } void level_text_queue_init(Level* self) { vector_init(&self->textQueue, sizeof(EntityID)); } void level_text_queue_tick(Level* self) { level_text_queue_set(self); } void level_text_queue_free(Level* self) { vector_free(&self->textQueue); }