public int GetDistancia(Antena destino) { if (!_tablaDeRuteo.ContainsKey(destino.Id)) { Red.CalcularRutas(destino); } return(_tablaDeDistancias[destino.Id]); }
private void TransmitirPing() { _antenaTransmisoraPing = _antenaTransmisoraPing.GetRuta(_antenaDestinoPing); if (_pingingLlegoADestino && _antenaTransmisoraPing == _antenaOrigenPing) { ResultadoPing(); Destroy(_pingFisico); _pinging = false; } else { if (_antenaTransmisoraPing == _antenaDestinoPing) { _pingingLlegoADestino = true; _pingExitoso = _antenaDestinoPing.MensajeTrasnmitido || _antenaTransmisoraMensaje.GetRuta(RedCom.AntenaReceptora) == _antenaDestinoPing; _pingMensaje = "---INFORMACIÓN EN DESTINO / ANTENA #" + _antenaDestinoPing.Id + " ---\n"; int anchoMensaje = _pingMensaje.Count(); if (_pingExitoso) { RedCom.CalcularRutas(_antenaTransmisoraMensaje); int distancia = _antenaDestinoPing.GetDistancia(_antenaTransmisoraMensaje); if (_antenaDestinoPing.MensajeTrasnmitido) { if (distancia == 0) { _pingMensaje += " ! EMITIENDO MENSAJE !\n"; } else { _pingMensaje += "MENSAJE REEMITIDO - Distancia: " + distancia; if (distancia == 1) { _pingMensaje += " salto.\n"; } else { _pingMensaje += " saltos.\n"; } } } else { _pingMensaje += "! RECIBIENDO MENSAJE !\n"; } } else { _pingMensaje += "El mensaje no paso por aquí.\n"; } for (int i = 0; i < anchoMensaje - 1; i++) { _pingMensaje += "-"; } _antenaDestinoPing = _antenaOrigenPing; } } }