Beispiel #1
0
 /// <summary>
 /// Crea un paseo virtual a partir de un archivo XML.
 /// </summary>
 /// <param name="pvfile">Archivo XML con la configuracion del PaseoVirtual.</param>
 /// <returns>El paseo virtual editado</returns>
 public void CreatePaseoVirtual(string pvfile)
 {
     System.Diagnostics.Debug.WriteLine("Leyendo paseo virtual...");
     _lastPaseoVirtual = new PaseoVirtual();
     Task task = new Task(() => CreatePaseo(pvfile));
     task.ContinueWith((t) => CreatePaseoFinished());
     task.Start();
     System.Diagnostics.Debug.WriteLine("Paseo virtual leyendose...");
 }
Beispiel #2
0
        /// <summary>
        /// Metodo auxiliar. Se encarga de procesar un muro del HotSpace.
        /// </summary>
        /// <param name="reader">Reader XML con el archivo asociado.</param>
        /// <param name="paseo">PaseoVirtual que se esta modificando.</param>
        /// <param name="wall">Identificador del wall que se esta editando.</param>
        /// <param name="hotSpaceIndex">Indice dentro de paseo que indica el HotSpace que se esta editando.</param>
        /// <returns>El paseo virtual editado</returns>
        private static PaseoVirtual procesarMuro(XmlReader reader, PaseoVirtual paseo, HotSpace.WALL wall, int hotSpaceIndex)
        {
            reader.MoveToNextAttribute();
            if (reader.Name == "img")
            {
                paseo.addTextureToHotSpace(hotSpaceIndex, @reader.Value, wall);
            }

            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.EndElement && reader.Name == mapWallString[wall])
                {
                    break;
                }

                if (reader.NodeType == XmlNodeType.Element && reader.IsStartElement())
                {
                    switch (reader.Name)
                    {
                        case "GoTo":
                            int x = 0, y = 0;
                            String where = null;
                            for (int j = 0; j < 3; ++j)
                            {
                                reader.MoveToNextAttribute();

                                switch (reader.Name)
                                {
                                    case "coordX":
                                        x = Convert.ToInt32(reader.Value);
                                        break;
                                    case "coordY":
                                        y = Convert.ToInt32(reader.Value);
                                        break;
                                    case "where":
                                        where = reader.Value;
                                        break;
                                    default:
                                        break;
                                }

                            }
                            paseo.addGoToToSpace(hotSpaceIndex, x, y, wall, where);

                            reader.Read();
                            break;
                        case "HotSpot":
                            reader.Read();
                            break;
                        default:
                            break;
                    }
                }
            }

            return paseo;
        }
Beispiel #3
0
        private void CreatePaseo(String pvfile)
        {
            using (FileStream fileStream = File.OpenRead(pvfile))
            {
                XmlReaderSettings settings;
                settings = new XmlReaderSettings();
                settings.ConformanceLevel = ConformanceLevel.Document;

                using (XmlReader reader = XmlReader.Create(fileStream, settings))
                {
                    //Nombre del paseo
                    reader.Read();
                    reader.MoveToNextAttribute();
                    _lastPaseoVirtual.Name = reader.Value;
                    while (reader.Read())
                    {
                        if (reader.NodeType == XmlNodeType.Element && reader.Name == "HotSpace")
                        {
                            if (reader.IsStartElement())
                            {
                                //<HotSpace>
                                _lastPaseoVirtual = procesarHotSpace(reader, _lastPaseoVirtual);
                            }
                        }
                    }
                }
                _lastPaseoVirtual.LoadContentCurrentHotSpace();
            }
            System.Diagnostics.Debug.WriteLine("Create Paseo Finished v1");
        }
Beispiel #4
0
        /// <summary>
        /// Metodo auxiliar. Se encarga de procesar un HotSpace.
        /// </summary>
        /// <param name="reader">Reader XML con el archivo asociado.</param>
        /// <param name="paseo">PaseoVirtual que se esta modificando.</param>
        /// <returns>El paseo virtual editado</returns>
        private static PaseoVirtual procesarHotSpace(XmlReader reader, PaseoVirtual paseo)
        {
            reader.MoveToNextAttribute();
            int thisHotSpaceIndex = paseo.addHotSpace(reader.Value);

            //Leer norte, sur, este y oeste

            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.EndElement && reader.Name == "HotSpace")
                {
                    break;
                }

                if (reader.NodeType == XmlNodeType.Element) {
                    if (reader.IsStartElement())
                    {
                        switch (reader.Name)
                        {
                            case "North":
                                paseo = procesarMuro(reader,paseo, HotSpace.WALL.NORTH, thisHotSpaceIndex);
                                break;
                            case "West":
                                paseo = procesarMuro(reader,paseo, HotSpace.WALL.WEST, thisHotSpaceIndex);
                                break;
                            case "South":
                                paseo = procesarMuro(reader,paseo, HotSpace.WALL.SOUTH, thisHotSpaceIndex);
                                break;
                            case "East":
                                paseo = procesarMuro(reader,paseo, HotSpace.WALL.EAST, thisHotSpaceIndex);
                                break;
                            default:
                                break;
                        }
                    }
                }
            }

            return paseo;
        }