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

#include "SimpleVNScene.hpp"
#include "prefabs/ui/VisualNovelTextboxPrefab.hpp"

using namespace Dawn;

SimpleVNScene::SimpleVNScene(DawnGame *game) : Scene(game) {

}

void SimpleVNScene::vnStage() {
  
}

std::vector<Asset*> SimpleVNScene::getRequiredAssets() {
  auto assMan = &this->game->assetManager;
  std::vector<Asset*> assets;
  vectorAppend(&assets, VisualNovelTextboxPrefab::getRequiredAssets(assMan));
  return assets;
}

void SimpleVNScene::stage() {
  auto assMan = &this->game->assetManager;

  // Camera
  this->camera = Camera::create(this);
  this->camera->transform->lookAt(
    glm::vec3(0, 0, 2),
    glm::vec3(0, 0, 0)
  );

  this->background = SimpleVisualNovelBackground::create(this);
  this->canvas = UICanvas::create(this);

  // Stage VN Items
  this->vnStage();

  // UI
  this->textbox = VisualNovelTextboxPrefab::create(this->canvas);

  // VN Manager
  auto vnManagerItem = this->createSceneItem();
  this->vnManager = vnManagerItem->addComponent<VisualNovelManager>();
  
  // Audio
  auto listenerItem = this->createSceneItem();
  this->audioListener = listenerItem->addComponent<AudioListener>();

  auto audioBackgroundItem = this->createSceneItem();
  vnManager->audioBackground = audioBackgroundItem->addComponent<AudioSource>();
  
  auto audioCharacterItem = this->createSceneItem();
  vnManager->audioCharacter = audioCharacterItem->addComponent<AudioSource>();

  // Fader (Drawn over the top of everything else)
  this->vnFader = VisualNovelFader::create(canvas);
}