103 lines
1.8 KiB
C
103 lines
1.8 KiB
C
#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);
|
|
}
|