private static Campo LeeCampoIndiceDeCiudad(string elTexto) { int índice = Convert.ToInt32(elTexto); CampoIndiceDeCiudad campoIndiceDeCiudad = new CampoIndiceDeCiudad(índice); return(campoIndiceDeCiudad); }
/// <summary> /// Remueve el campo de índice de ciudad. /// </summary> /// <param name="laRazón">La razón.</param> /// <returns>Una variable lógica que indica si el elemento se modificó.</returns> public bool RemueveCampoIndiceDeCiudad(string laRazón) { bool cambió = false; if (miCampoIndiceDeCiudad != null) { RemueveCampo(miCampoIndiceDeCiudad, laRazón); miCampoIndiceDeCiudad = null; cambió = true; } return(cambió); }
/// <summary> /// Devuelve una variable lógica que indica si un objeto /// dado es igual. /// </summary> /// <param name="elObjecto">EL objecto dado.</param> public override bool Equals(object elObjecto) { // Verifica objectos nulos y compara el tipo. if (elObjecto == null || (GetType() != elObjecto.GetType())) { return(false); } // Compara objecto. CampoIndiceDeCiudad comparador = (CampoIndiceDeCiudad)elObjecto; bool esIgual = (Indice == comparador.Indice); return(esIgual); }
/// <summary> /// Remueve un campo dado. /// </summary> /// <param name="elCampoARemover">El campo a remover.</param> /// <param name="laRazón">La razón.</param> private void RemueveCampo(Campo elCampoARemover, string laRazón) { // Avísale al manejador de mapa que se va a cambiar un elemento. SeVaAModificarElemento(); // Añade la razón del cambio. misModificaciones.Add(string.Format( "[Removido {0}: {1}]", elCampoARemover.Identificador, laRazón)); // Remueve el campo. misCampos.Remove(elCampoARemover); miCampoIndiceDeCiudad = null; // Avísale al manejador de mapa que se cambió un elemento. miManejadorDeMapa.SeModificóElemento(this); }
/// <summary> /// Constructor. /// </summary> /// <param name="elManejadorDeMapa">El manejador del mapa.</param> /// <param name="elNúmero">El número del elemento.</param> /// <param name="laClase">La clase de elemento.</param> /// <param name="lasDescripcionesPorTipo">Las descripciones por tipo.</param> /// <param name="losCampos">Los campos del elemento.</param> protected ElementoDelMapa( ManejadorDeMapa elManejadorDeMapa, int elNúmero, string laClase, IDictionary <Tipo, string> lasDescripcionesPorTipo, IList <Campo> losCampos) { // Guarda variables. miManejadorDeMapa = elManejadorDeMapa; miNúmero = elNúmero; miClase = laClase; misCampos = losCampos; misDescripcionesPorTipo = lasDescripcionesPorTipo; // Busca los campos conocidos. foreach (Campo campo in losCampos) { CampoTipo campoTipo; CampoNombre campoNombre; CampoIndiceDeCiudad campoIndiceDeCiudad; if ((campoTipo = campo as CampoTipo) != null) { miCampoTipo = campoTipo; } else if ((campoNombre = campo as CampoNombre) != null) { if (campoNombre.Número == null) { miCampoNombre = campoNombre; } } else if ((campoIndiceDeCiudad = campo as CampoIndiceDeCiudad) != null) { miCampoIndiceDeCiudad = campoIndiceDeCiudad; } } bool existe = (Tipo != null) && (misDescripcionesPorTipo.TryGetValue((Tipo)Tipo, out miDescripción)); if (!existe) { miDescripción = string.Empty; } }
/// <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> /// Actualiza el Campo de Indice de Ciudad. /// </summary> /// <param name="elCampoIndiceDeCiudadNuevo">El Campo de Indice de Ciudad nuevo.</param> /// <param name="laRazón">La razón del cambio.</param> /// <returns>Una variable lógica que indica si el elemento se modificó.</returns> public bool ActualizaCampoIndiceDeCiudad(CampoIndiceDeCiudad elCampoIndiceDeCiudadNuevo, string laRazón) { return(ActualizaCampo(elCampoIndiceDeCiudadNuevo, ref miCampoIndiceDeCiudad, laRazón)); }
private static void Guarda(CampoIndiceDeCiudad elCampoIndiceDeCiudad, StreamWriter elEscritor) { string texto = elCampoIndiceDeCiudad.Indice.ToString(CultureInfo.InvariantCulture); Guarda(elCampoIndiceDeCiudad, texto, elEscritor); }
private static Campo LeeCampoIndiceDeCiudad(string elTexto) { int índice = Convert.ToInt32(elTexto); CampoIndiceDeCiudad campoIndiceDeCiudad = new CampoIndiceDeCiudad(índice); return campoIndiceDeCiudad; }
/// <summary> /// Crea un mapa nuevo. /// </summary> /// <param name="losElementos">Los elementos del mapa nuevo.</param> private void CreaMapaNuevo(IEnumerable <ElementoDelMapa> losElementos) { // Busca el encabezado y crea todas las listas especializadas. Encabezado = null; misElementos.Clear(); misPdis.Clear(); misVías.Clear(); Polilíneas.Clear(); Polígonos.Clear(); Ciudades.Clear(); NodosRuteables.Clear(); foreach (ElementoDelMapa elemento in losElementos) { misElementos.Add(elemento); Pdi pdi; Vía vía; Polilínea polilínea; Polígono polígono; if (elemento.Clase == "IMG ID") { Encabezado = elemento; } else if ((pdi = elemento as Pdi) != null) { misPdis.Add(pdi); } else if ((vía = elemento as Vía) != null) { misVías.Add(vía); foreach (var nodo in vía.Nodos) { if (nodo.EsRuteable) { var identificadorGlobal = nodo.IdentificadorGlobal; IList <Nodo> nodosRuteables; if (NodosRuteables.TryGetValue(identificadorGlobal, out nodosRuteables)) { nodosRuteables.Add(nodo); } else { List <Nodo> nodos = new List <Nodo> { nodo }; NodosRuteables.Add(identificadorGlobal, nodos); } } } } else if ((polilínea = elemento as Polilínea) != null) { Polilíneas.Add(polilínea); } else if ((polígono = elemento as Polígono) != null) { Polígonos.Add(polígono); // Busca los polígonos de ciudades. Tipo?tipo = polígono.Tipo; if (tipo != null) { switch (((Tipo)tipo).TipoPrincipal) { case 0x1: case 0x2: case 0x3: case 0x4a: foreach (Campo campo in polígono.Campos) { CampoIndiceDeCiudad campoIndiceDeCiudad = campo as CampoIndiceDeCiudad; if (campoIndiceDeCiudad != null) { Ciudades.Add(new Ciudad( polígono, campoIndiceDeCiudad)); } } break; } } } } // Borra el estado de eventos de modificación. miHayEventosDeModificaciónDeElementoPendientes = false; // Actualiza los límites del mapa. ActualizaLímitesDelMapa(); // Genera el evento de mapa nuevo. HayUnMapaNuevo(); }