void PanelEscenario::guardarCaracteristicasEscenario() const {
    // Abro el archivo asociado al nivel
    XMLDocument doc;
    doc.LoadFile(this->rutaNivel);
    // Obtengo el nodo raiz, que en teoria es el llamado Nivel.
    XMLNode* nivelNode = doc.RootElement();

    // Limpio el nodo de nivel
    this->limpiarNodoNivel(nivelNode);

    // Creo un nuevo nodo del escenario y cargo los atributos básicos.
    XMLNode* escenarioNode = new XMLNode("Escenario");
    // Convierto los valores flotantes a string.
    std::string sAncho = cfd::floatToString(anchoFlotante);
    std::string sAlto = cfd::floatToString(altoFlotante);
    // Seteo los atributos del nodo del escenario.
    escenarioNode->SetAttribute("ancho", sAncho);
    escenarioNode->SetAttribute("alto", sAlto);

    // Creo el nodo de la imagen del fondo.
    XMLNode* imageFondoNode = new XMLNode("ImagenFondo");
    XMLText* imageFondoText = new XMLText(rutaFondo);
    imageFondoNode->LinkEndChild(imageFondoText);

    // Creo el nodo de la imagen del suelo.
    XMLNode* imageSueloNode = new XMLNode("ImagenSuelo");
    // FIXME(eze) Esperar a que Tomás agrege el suelo para serializarlo en el XML.
    XMLText* imageSueloText = new XMLText(rutaSuelo);
    imageSueloNode->LinkEndChild(imageSueloText);

    // Creo el nodo con la cantidad de jugadores.
    XMLNode* jugadoresNode = new XMLNode("Jugadores");
    // Convierto el numero de jugadores a string.
    std::string sJugadores = cfd::intToString(cantidadJugadores);
    XMLText* jugadoresText = new XMLText(sJugadores);
    jugadoresNode->LinkEndChild(jugadoresText);

    // Linkeo los atributos del Escenario
    escenarioNode->LinkEndChild(imageFondoNode);
    escenarioNode->LinkEndChild(imageSueloNode);
    escenarioNode->LinkEndChild(jugadoresNode);

    // Linkeo el nodo de escenario en el nodo del nivel.
    nivelNode->LinkEndChild(escenarioNode);

    // Guardo el documento.
    doc.SaveFile();
}
Пример #2
0
void PanelMundo::actualizarArchivoMundos(const std::string rutaMundo) const {
	// Abro el archivo de los mundos
	XMLDocument doc;
	bool seAbrio = doc.LoadFile(pathFileMundos);
	// Si el archivo no existe, salgo
	if (!seAbrio)
		return;

	// Obtengo el nodo raiz
	XMLNode* root = doc.RootElement();
	// Si es nulo, salgo sin realizar nada
	if (root == 0)
		return;

	// Creo el nodo asociado al mundo
	XMLNode* nodoMundo = new XMLNode("Mundo");
	// Agrego el atributo de la cantidad de jugadores
	nodoMundo->SetAttribute("cantJugadores", creador->getCantidadJugadores());

	// Creo el nodo asociado al nombre del mundo
	XMLNode* nodoNombre = new XMLNode("Nombre");
	XMLText* textNombre = new XMLText(creador->getNombreElegido());
	nodoNombre->LinkEndChild(textNombre);

	// Creo el nodo asociado a al ruta del archivo que almacena el mundo
	XMLNode* nodoRuta = new XMLNode("Ruta");
	XMLText* textRuta = new XMLText(rutaMundo);
	nodoRuta->LinkEndChild(textRuta);

	// Linkeo los nodos de nombre y ruta al del mundo
	nodoMundo->LinkEndChild(nodoNombre);
	nodoMundo->LinkEndChild(nodoRuta);

	// Linkeo el nodo del nuevo mundo al nodo de mundos
	root->LinkEndChild(nodoMundo);

	// Guardo el archivo
	doc.SaveFile();
}