/// <summary> /// Muestra la informacion asociada a un logro /// </summary> /// <param name="_idLogroDesbloqueado"></param> /// <param name="_onCloseCallback"></param> public void ShowLogroDesbloqueado(string _idLogroDesbloqueado, btnButton.guiAction _onCloseCallback = null) { // obtener las referencias a los elementos de esta interfaz GetReferencias(); // obtener la informacion del logro y del grupo al que pertenece GrupoLogros grupoContenedorLogroDesbloqueado = null; Logro logroDesbloqueado = LogrosManager.instance.GetLogro(_idLogroDesbloqueado, ref grupoContenedorLogroDesbloqueado); // textura de la moneda m_imgCash.texture = m_textureRewardHardCash; ShowImagen(m_imgCash); // textos m_txtTitulo.text = string.Format(LocalizacionManager.instance.GetTexto(287), "<color=#ddf108>" + grupoContenedorLogroDesbloqueado.nombre + "</color>").ToUpper(); m_txtTituloSombra.text = string.Format(LocalizacionManager.instance.GetTexto(287), grupoContenedorLogroDesbloqueado.nombre).ToUpper(); m_txtTexto.text = string.Format(grupoContenedorLogroDesbloqueado.descriptionConFormato, "<color=#ddf108>" + logroDesbloqueado.valorSuperarLogro + "</color>"); m_txtCantidadCash.text = logroDesbloqueado.recompensa.ToString(); m_txtCantidadCashSombra.text = m_txtCantidadCash.text; // boton cancelar => ocultarlo m_btnCancelar.gameObject.SetActive(false); // mostrar este dialogo transform.gameObject.SetActive(true); MostrarDialogoConSuperTweener(_onCloseCallback); }
/// <summary> /// Metodo para comparar dos grupos de logros por su porcentaje de logro superado /// NOTA: como se va a utilizar para ordenar grupos de logros de mayor a menor, el resultado devuelto esta invertido /// </summary> /// <param name="_grupo1"></param> /// <param name="_grupo2"></param> /// <returns></returns> public static int CompararPorPorcentajeSuperadoLogro(GrupoLogros _grupo1, GrupoLogros _grupo2) { if (_grupo1 == null) { if (_grupo2 == null) { return(0); } else { return(-1); } } else { if (_grupo2 == null) { return(1); } else { // NOTA1: multiplico por 100 los valores para convertirlos en enteros return((int)(_grupo2.porcentajeSuperadoLogro * 100 - _grupo1.porcentajeSuperadoLogro * 100)); // <= devuelve el resultado inverito: grupo2 - grupo1 } } }
/// <summary> /// Devuelve la informacion de un determinado logro (null si el logro solicitado no existe) /// </summary> /// <param name="_idLogro"></param> /// <param name="_grupoContenedor">Grupo contenedor de este logro</param> /// <returns></returns> public Logro GetLogro(string _idLogro, ref GrupoLogros _grupoContenedor) { Logro logro = null; // comprobar si el logro es un logro de lanzador if (m_logrosLanzador != null) { for (int i = 0; (i < m_logrosLanzador.Count) && (logro == null); ++i) { _grupoContenedor = m_logrosLanzador[i]; logro = m_logrosLanzador[i].GetLogro(_idLogro); } } // comprobar si el logro es un logro de portero if (m_logrosPortero != null) { for (int i = 0; (i < m_logrosPortero.Count) && (logro == null); ++i) { _grupoContenedor = m_logrosPortero[i]; logro = m_logrosPortero[i].GetLogro(_idLogro); } } // comprobar si el logro es un logro de duelo if (m_logrosDuelo != null) { for (int i = 0; (i < m_logrosDuelo.Count) && (logro == null); ++i) { _grupoContenedor = m_logrosDuelo[i]; logro = m_logrosDuelo[i].GetLogro(_idLogro); } } // si no se ha encontrado el logro => indicar que no esta contenido en ningun grupo if (logro == null) { _grupoContenedor = null; } return(logro); }
/// <summary> /// Muestra en el control los valores asociados a un logro /// </summary> /// <param name="_grupoLogros"></param> public void ShowValues(GrupoLogros _grupoLogros) { if (_grupoLogros != null) { // obtener las referencias a los elementos de la interfaz GetReferencias(); // actualizar los textos m_txtTitulo.text = _grupoLogros.nombre.ToUpper(); m_txtSubtitulo.text = _grupoLogros.descripcion; // progreso del logro m_txtProgreso.text = _grupoLogros.progreso.ToString() + " / " + _grupoLogros.valorSuperarLogro.ToString(); m_txtProgresoSombra.text = m_txtProgreso.text; // mostrar el nivel if (_grupoLogros.nivelAlcanzado < 0) { m_txtNivel.text = ""; } else { m_txtNivel.text = (LocalizacionManager.instance.GetTexto(31) + " " + (_grupoLogros.nivelAlcanzado + 1).ToString()).ToUpper(); } m_txtNivelSombra.text = m_txtNivel.text; // mostrar la recompensa if (_grupoLogros.recompensa < 0) { m_txtRecompensa.text = ""; } else { m_txtRecompensa.text = _grupoLogros.recompensa.ToString() + " §"; } // actualizar el valor de la barra de progreso Rect rectBarraProgreso = transform.FindChild("BarraProgreso/fondo").GetComponent <GUITexture>().pixelInset; transform.FindChild("BarraProgreso/barra").GetComponent <GUITexture>().pixelInset = new Rect(rectBarraProgreso.xMin, rectBarraProgreso.yMin, (rectBarraProgreso.width * _grupoLogros.porcentajeSuperadoLogro), rectBarraProgreso.height); // texturas por defecto m_barraProgreso.texture = m_texturaBarraBrogresoNormal; m_barraProgresoFront.texture = m_texturaFrontNormal; m_barraProgresoBack.texture = m_texturaBackNormal; // comprobar si hay que destacar el logro de alguna manera en especial ------------------- // comprobar si se han completado todos los niveles del logro if (_grupoLogros.superadosTodosLosLogros) { m_txtProgreso.text = LocalizacionManager.instance.GetTexto(288).ToUpper(); m_txtProgresoSombra.text = m_txtProgreso.text; m_barraProgreso.texture = m_texturaBarraBrogresoLogroCompletado; m_barraProgresoFront.texture = m_texturaFrontLogroCompletado; } // comprobar si el logro se ha obtenido recientemente (es nuevo) if (_grupoLogros.subidaNivelReciente) { m_barraProgreso.texture = m_texturaBarraBrogresoLogroNuevo; m_barraProgresoFront.texture = m_texturaFrontLogroNuevo; m_barraProgresoBack.texture = m_texturaBackNuevo; _grupoLogros.subidaNivelReciente = false; // <= haciendo esto ya no se vuelve a destacar la subida de nivel en este grupo de logros } } }
// ------------------------------------------------------------------------------ // --- METODOS ---------------------------------------------------------------- // ---------------------------------------------------------------------------- /// <summary> /// Genera toda la informacion asociada a los logros del juego /// </summary> private void InicializarListasLogros() { // F4KE: crear los grupos de logros de LANZADOR if (m_logrosLanzador == null) { List <Logro> logrosDianas = new List <Logro>(); logrosDianas.Add(new Logro("ACH_KICK_DIA_01", 65, 5)); logrosDianas.Add(new Logro("ACH_KICK_DIA_02", 225, 25)); logrosDianas.Add(new Logro("ACH_KICK_DIA_03", 1250, 60)); logrosDianas.Add(new Logro("ACH_KICK_DIA_04", 2750, 125)); GrupoLogros grupoDianas = new GrupoLogros("ACH_KICK_DIA", LocalizacionManager.instance.GetTexto(166), LocalizacionManager.instance.GetTexto(167), logrosDianas, GrupoLogros.Magnitud.DIANAS_ACERTADAS); List <Logro> logrosPuntuacionLanzamientos = new List <Logro>(); logrosPuntuacionLanzamientos.Add(new Logro("ACH_KICK_TPU_01", 6500, 5)); logrosPuntuacionLanzamientos.Add(new Logro("ACH_KICK_TPU_02", 27500, 30)); logrosPuntuacionLanzamientos.Add(new Logro("ACH_KICK_TPU_03", 95000, 75)); logrosPuntuacionLanzamientos.Add(new Logro("ACH_KICK_TPU_04", 235000, 120)); logrosPuntuacionLanzamientos.Add(new Logro("ACH_KICK_TPU_05", 750000, 250)); GrupoLogros grupoPuntuacionLanzamientos = new GrupoLogros("ACH_KICK_TPU", LocalizacionManager.instance.GetTexto(168), LocalizacionManager.instance.GetTexto(169), logrosPuntuacionLanzamientos, GrupoLogros.Magnitud.PUNTUACION_TOTAL_LANZADOR); List <Logro> logrosDianasPerfectas = new List <Logro>(); logrosDianasPerfectas.Add(new Logro("ACH_KICK_PER_01", 80, 10)); logrosDianasPerfectas.Add(new Logro("ACH_KICK_PER_02", 250, 35)); logrosDianasPerfectas.Add(new Logro("ACH_KICK_PER_03", 750, 60)); logrosDianasPerfectas.Add(new Logro("ACH_KICK_PER_04", 1800, 125)); logrosDianasPerfectas.Add(new Logro("ACH_KICK_PER_05", 6000, 240)); GrupoLogros grupoDianasPerfectas = new GrupoLogros("ACH_KICK_PER", LocalizacionManager.instance.GetTexto(170), LocalizacionManager.instance.GetTexto(171), logrosDianasPerfectas, GrupoLogros.Magnitud.DIANAS_PERFECTAS); // crear la lista de logros de lanzador m_logrosLanzador = new List <GrupoLogros>(); m_logrosLanzador.Add(grupoDianas); m_logrosLanzador.Add(grupoPuntuacionLanzamientos); m_logrosLanzador.Add(grupoDianasPerfectas); } // F4KE: crear los grupos de logros de PORTERO if (m_logrosPortero == null) { List <Logro> logrosPuntuacionParadas = new List <Logro>(); logrosPuntuacionParadas.Add(new Logro("ACH_KICK_PPU_01", 5500, 5)); logrosPuntuacionParadas.Add(new Logro("ACH_KICK_PPU_02", 28000, 30)); logrosPuntuacionParadas.Add(new Logro("ACH_KICK_PPU_03", 85000, 80)); logrosPuntuacionParadas.Add(new Logro("ACH_KICK_PPU_04", 245000, 150)); logrosPuntuacionParadas.Add(new Logro("ACH_KICK_PPU_05", 650000, 250)); GrupoLogros grupoPuntuacionParadas = new GrupoLogros("ACH_KICK_PPU", LocalizacionManager.instance.GetTexto(172), LocalizacionManager.instance.GetTexto(173), logrosPuntuacionParadas, GrupoLogros.Magnitud.PUNTUACION_TOTAL_PORTERO); List <Logro> logrosDespejes = new List <Logro>(); logrosDespejes.Add(new Logro("ACH_KICK_DES_01", 70, 5)); logrosDespejes.Add(new Logro("ACH_KICK_DES_02", 280, 25)); logrosDespejes.Add(new Logro("ACH_KICK_DES_03", 825, 65)); logrosDespejes.Add(new Logro("ACH_KICK_DES_04", 2250, 120)); logrosDespejes.Add(new Logro("ACH_KICK_DES_05", 6500, 215)); GrupoLogros grupoDespejes = new GrupoLogros("ACH_KICK_DES", LocalizacionManager.instance.GetTexto(174), LocalizacionManager.instance.GetTexto(175), logrosDespejes, GrupoLogros.Magnitud.DESPEJES); List <Logro> logrosParadas = new List <Logro>(); logrosParadas.Add(new Logro("ACH_KICK_ATR_01", 20, 15)); logrosParadas.Add(new Logro("ACH_KICK_ATR_02", 100, 50)); logrosParadas.Add(new Logro("ACH_KICK_ATR_03", 500, 175)); logrosParadas.Add(new Logro("ACH_KICK_ATR_04", 1500, 300)); logrosParadas.Add(new Logro("ACH_KICK_ATR_05", 3000, 500)); GrupoLogros grupoParadas = new GrupoLogros("ACH_KICK_ATR", LocalizacionManager.instance.GetTexto(176), LocalizacionManager.instance.GetTexto(177), logrosParadas, GrupoLogros.Magnitud.PARADAS); // crear la lista de logros de portero m_logrosPortero = new List <GrupoLogros>(); m_logrosPortero.Add(grupoPuntuacionParadas); m_logrosPortero.Add(grupoDespejes); m_logrosPortero.Add(grupoParadas); } // F4KE: crear los grupos de logro de DUELO if (m_logrosDuelo == null) { List <Logro> logrosJugarDuelos = new List <Logro>(); logrosJugarDuelos.Add(new Logro("ACH_KICK_MUL_DUEL_01", 20, 5)); logrosJugarDuelos.Add(new Logro("ACH_KICK_MUL_DUEL_02", 125, 35)); logrosJugarDuelos.Add(new Logro("ACH_KICK_MUL_DUEL_03", 400, 80)); logrosJugarDuelos.Add(new Logro("ACH_KICK_MUL_DUEL_04", 700, 150)); GrupoLogros grupoJugarDuelos = new GrupoLogros("ACH_KICK_MUL_DUEL", LocalizacionManager.instance.GetTexto(178), LocalizacionManager.instance.GetTexto(179), logrosJugarDuelos, GrupoLogros.Magnitud.DUELOS_JUGADOS); List <Logro> logrosVencerDuelos = new List <Logro>(); logrosVencerDuelos.Add(new Logro("ACH_KICK_MUL_WON_01", 10, 10)); logrosVencerDuelos.Add(new Logro("ACH_KICK_MUL_WON_02", 50, 45)); logrosVencerDuelos.Add(new Logro("ACH_KICK_MUL_WON_03", 125, 110)); logrosVencerDuelos.Add(new Logro("ACH_KICK_MUL_WON_04", 600, 225)); logrosVencerDuelos.Add(new Logro("ACH_KICK_MUL_WON_05", 2000, 450)); GrupoLogros grupoVencerDuelos = new GrupoLogros("ACH_KICK_MUL_WON", LocalizacionManager.instance.GetTexto(180), LocalizacionManager.instance.GetTexto(181), logrosVencerDuelos, GrupoLogros.Magnitud.DUELOS_GANADOS); List <Logro> logrosDueloPerfecto = new List <Logro>(); logrosDueloPerfecto.Add(new Logro("ACH_KICK_MUL_PFCT_01", 1, 20)); GrupoLogros grupoDueloPerfecto = new GrupoLogros("ACH_KICK_MUL_PFCT", LocalizacionManager.instance.GetTexto(182), LocalizacionManager.instance.GetTexto(183), logrosDueloPerfecto, GrupoLogros.Magnitud.DUELOS_PERFECTOS); // crear la lista de logros de portero m_logrosDuelo = new List <GrupoLogros>(); m_logrosDuelo.Add(grupoJugarDuelos); m_logrosDuelo.Add(grupoVencerDuelos); m_logrosDuelo.Add(grupoDueloPerfecto); } }