CreationOptions::CreationOptions(std::string name,
                                 int seed,
                                 bool flat,
                                 bool different)
  : m_name{std::move(name)}
  , m_seed{seed}
  , m_flat{flat}
  , m_differentCubeForEachChunk{different} {

  tinyxml2::XMLDocument doc;
  tinyxml2::XMLNode* root{doc.NewElement("xml")};
  doc.InsertFirstChild(root);

  {
    {
      tinyxml2::XMLElement* name{doc.NewElement("name")};
      name->SetText(m_name.c_str());
      root->InsertEndChild(name);
    }

    {
      tinyxml2::XMLElement* seed{doc.NewElement("seed")};
      seed->SetText(m_seed);
      root->InsertEndChild(seed);
    }

    {
      tinyxml2::XMLElement* flat{doc.NewElement("flat")};
      flat->SetText(m_flat);
      root->InsertEndChild(flat);
    }

    {
      tinyxml2::XMLElement* different{
        doc.NewElement("different_cube_for_each_chunk")};
      different->SetText(config::graphics_data::fullScreen);
      root->InsertEndChild(different);
    }
  }

  tinyxml2::XMLError errorCode{doc.SaveFile(createFileName(m_name).c_str())};

  if (errorCode) {
    std::cout << "Error while creating xml file for world options. \n";
  }
}