/// <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(); }
/// <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); }
/// <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; }
/// <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; }
/// <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; }