/**
 * Copyright (c) 2021 Dominic Masters
 * 
 * This software is released under the MIT License.
 * https://opensource.org/licenses/MIT
 */

#include "vnconversation.h"

void vnConversationInit(vnconversation_t *convo, font_t *font, texture_t *tex) {
  vnTextBoxInit(&convo->textbox, font, tex);
  queueInit(&convo->actionQueue);
}

queueaction_t * vnConversationAdd(vnconversation_t *conversation) {
  queueaction_t *action;
  vnconversationitemdata_t *data;

  // Update action queue data item.
  data = conversation->itemData + conversation->actionQueue.count;
  data->conversation = conversation;

  // Add to queue
  action = queueAdd(&conversation->actionQueue);
  action->data = data;

  return action;
}

void vnConversationUpdate(vnconversation_t *convo, engine_t *engine) {
  vnTextBoxUpdate(&convo->textbox, engine);
  queueUpdate(&convo->actionQueue, engine->time.delta);
}

void vnConversationRender(
  vnconversation_t *convo, engine_t *engine, shader_t *shader
) {
  vnTextBoxRender(&convo->textbox, shader,
    0, engine->render.height - convo->textbox.height
  );
}

void vnConversationDispose(vnconversation_t *convo) {
  queueDispose(&convo->actionQueue);
  vnTextBoxDispose(&convo->textbox);
}