#include "layer.h"

#include "xml_.h"

using namespace anm2ed::util;
using namespace tinyxml2;

namespace anm2ed::anm2
{
  Layer::Layer(XMLElement* element, int& id)
  {
    if (!element) return;
    element->QueryIntAttribute("Id", &id);
    xml::query_string_attribute(element, "Name", &name);
    element->QueryIntAttribute("SpritesheetId", &spritesheetID);
  }

  XMLElement* Layer::to_element(XMLDocument& document, int id)
  {
    auto element = document.NewElement("Layer");
    element->SetAttribute("Id", id);
    element->SetAttribute("Name", name.c_str());
    element->SetAttribute("SpritesheetId", spritesheetID);
    return element;
  }

  void Layer::serialize(XMLDocument& document, XMLElement* parent, int id)
  {
    parent->InsertEndChild(to_element(document, id));
  }

  std::string Layer::to_string(int id)
  {
    XMLDocument document{};
    document.InsertEndChild(to_element(document, id));
    return xml::document_to_string(document);
  }

  bool Layer::is_spritesheet_valid()
  {
    return spritesheetID > -1;
  }
}