Пример #1
0
        /// <summary>
        /// Abre el archivo de límites.
        /// </summary>
        /// <param name="elArchivo"></param>
        public void AbrirLímites(string elArchivo)
        {
            // Por ahora el único formato es el Polish.
            var limitsMapManager         = new ManejadorDeMapa(EscuchadorDeEstatus);
            LectorDeFormatoPolish lector = new LectorDeFormatoPolish(limitsMapManager, elArchivo);

            // Extrae los polígonos como los límites.
            IList <ElementoDelMapa> elementos = lector.ElementosDelMapa;

            misLímitesPorMapas.Clear();
            foreach (ElementoDelMapa elemento in elementos)
            {
                Polígono límite = elemento as Polígono;
                if (límite != null)
                {
                    string nombreDelMapa = límite.Nombre;
                    if (misLímitesPorMapas.ContainsKey(nombreDelMapa))
                    {
                        throw new ArgumentException(string.Format(
                                                        "El archivo de límites tiene el polígono del mapa '{0}' repetido.",
                                                        nombreDelMapa));
                    }
                    misLímitesPorMapas.Add(nombreDelMapa, límite);
                }
            }

            // Reportar los límites encontrados.
            EscuchadorDeEstatus.Estatus = string.Format("Leídos {0} límites.", misLímitesPorMapas.Count);

            // Actualizar los límites del mapa.
            ActualizaLímitesDelMapa();
        }
Пример #2
0
        /// <summary>
        /// Devuelve una copia de este objeto.
        /// </summary>
        public override object Clone()
        {
            // Como los campos son invariables entonces no necesitamos
            // hacer copias de ellos.
            List <Campo> camposNuevos = new List <Campo>(Campos.Count);

            foreach (Campo campo in Campos)
            {
                camposNuevos.Add(campo);
            }

            Polígono clone = new Polígono(ManejadorDeMapa, Número, Clase, camposNuevos);

            return(clone);
        }
Пример #3
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="elPolígono">El polígono.</param>
        /// <param name="elIndice">El índice de la ciudad.</param>
        public Ciudad(
            Polígono elPolígono,
            CampoIndiceDeCiudad elIndice)
        {
            Nombre                = elPolígono.Nombre;
            Tipo                  = elPolígono.Tipo;
            Indice                = elIndice;
            Coordenadas           = elPolígono.Coordenadas;
            CoordenadasComoPuntos = new PointF[Coordenadas.Length];
            for (int i = 0; i < Coordenadas.Length; ++i)
            {
                CoordenadasComoPuntos[i] = Coordenadas[i];
            }

            // Calcula el centro de la ciudad.
            PolygonF poligonoDeLaCiudad = new PolygonF(CoordenadasComoPuntos);

            Centro = poligonoDeLaCiudad.CenterPointOfBounds;
        }
Пример #4
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="elPolígono">El polígono.</param>
        /// <param name="elIndice">El índice de la ciudad.</param>
        public Ciudad(
            Polígono elPolígono,
            CampoIndiceDeCiudad elIndice)
        {
            Nombre = elPolígono.Nombre;
              Tipo = elPolígono.Tipo;
              Indice = elIndice;
              Coordenadas = elPolígono.Coordenadas;
              CoordenadasComoPuntos = new PointF[Coordenadas.Length];
              for (int i = 0; i < Coordenadas.Length; ++i)
              {
            CoordenadasComoPuntos[i] = Coordenadas[i];
              }

              // Calcula el centro de la ciudad.
              PolygonF poligonoDeLaCiudad = new PolygonF(CoordenadasComoPuntos);
              Centro = poligonoDeLaCiudad.CenterPointOfBounds;
        }
Пример #5
0
        /// <summary>
        /// Devuelve una copia de este objeto.
        /// </summary>
        public override object Clone()
        {
            // Como los campos son invariables entonces no necesitamos
              // hacer copias de ellos.
              List<Campo> camposNuevos = new List<Campo>(Campos.Count);
              foreach (Campo campo in Campos)
              {
            camposNuevos.Add(campo);
              }

              Polígono clone = new Polígono(ManejadorDeMapa, Número, Clase, camposNuevos);
              return clone;
        }