public void GuardarPartidaSinglePlayer() { int bitMapProgreso = 0; //TODO convertir esto a guardar objetivos de mision GameLevelMission gameLevel = MissionManager.instance.GetGameLevelMission(GameplayService.gameLevelMission.MissionName); GameplayService.gameLevelMission.UnFreeze(); MissionAchievement[] retosAntes = GameplayService.gameLevelMission.GetAchievements().ToArray(); //MissionAchievement[] retosDespues = MissionManager.instance.GetMission().Achievements.ToArray(); if (gameLevel == null) { Debug.LogWarning(">>> No hay informacion del nivel " + GameplayService.gameLevelMission.MissionName); } else { string claveNivel = "prog" + gameLevel.MissionName; bitMapProgreso = EncryptedPlayerPrefs.GetInt(claveNivel, 0); for (int i = 0; i < retosAntes.Length; i++) { int flag = (bitMapProgreso % ((int)Mathf.Pow(10, i + 1))) / (int)Mathf.Pow(10, i); if (retosAntes[i].IsAchieved() && (flag == 0)) //importante el isAchieved() primero para que lo haga, evitar el lazy { bitMapProgreso += (int)Mathf.Pow(10, retosAntes[i].Code); } } EncryptedPlayerPrefs.SetInt(claveNivel, bitMapProgreso); } // guardar las preferencias PlayerPrefs.Save(); }
public GameLevel GetMissionLevel(GameLevelMission _mission) { foreach (GameLevel level in m_levels) { if (level.ListaMisiones.Contains(_mission)) { return(level); } } return(null); }
/// <summary> /// Muestra la informacion asociada al nivel recibido como parametro /// </summary> /// <param name="_glm"></param> /// <param name="_numBoton">Numero de boton asociado a esta mision</param> public void ShowLevelMission(GameLevelMission _glm, int _numBoton) { GetReferencias(); // guardar la mision como seleccionada m_currentLevelMission = _glm; // mostrar la info de la mision y actualizar el estado del boton "jugar" bool misionDesbloqueada = _numBoton <= Interfaz.ultimaMisionDesbloqueada; m_levelSelectionTooltip.SetInfo(_glm, misionDesbloqueada); Debug.Log(">>> Nombre mision = " + _glm.MissionFileName); // hacer que se muestre el modelo del portero o del jugador en la interfaz Interfaz.instance.RefrescarModelosJugadores(_glm.MissionGameMode == GameMode.Shooter, _glm.MissionGameMode == GameMode.GoalKeeper); }
/// <summary> /// Devuelve un GameLevelMission por su nombre con el que lo identifican los WebServices /// </summary> /// <param name="_missionId"></param> /// <returns></returns> public GameLevelMission GetGameLevelMission(string _missionId) { if (m_levels != null) { for (int i = 0; i < m_levels.Count; ++i) { // comprobar si este nivel contiene la mision que se esta buscando GameLevelMission mision = m_levels[i].GetGameLevelMission(_missionId); if (mision != null) { return(mision); } } } Debug.LogWarning(">>> No se ha encontrado una mision con id=" + _missionId); return(null); }
/// <summary> /// Inicializa este control /// </summary> /// <param name="_numMision">Número de misison (de 0 a 9)</param> /// <param name="_glm"></param> /// <param name="_misionDesbloqueada">Indica si esta mision ha sido desbloqueada o no</param> public void Init(int _numMision, GameLevelMission _glm, bool _misionDesbloqueada) { // obtener las referencias a los elementos de esta interfaz GetReferencias(); m_misionDesbloqueada = _misionDesbloqueada; // pintar el numero de mision m_txtNumMision.text = (_numMision + 1).ToString(); // asignarle el icono que corresponda en funcion del estado y tipo de mision if (m_misionDesbloqueada) { m_imgIcono.texture = (_glm.MissionGameMode == GameMode.Shooter) ? m_texturaLanzador : m_texturaPortero; } else { m_imgIcono.texture = (_glm.MissionGameMode == GameMode.Shooter) ? m_texturaLanzadorOff : m_texturaPorteroOff; } // pintar los objetivos conseguidos en esta mision List <MissionAchievement> logros = _glm.GetAchievements(); for (int i = 0; i < logros.Count; ++i) { m_imgsObjetivos[i].gameObject.SetActive(logros[i].IsAchieved()); } // boton m_boton.action = (_name) => { Debug.Log(">>> _glm=" + _glm + " _numMision=" + _numMision); cntMissions.instance.ShowLevelMission(_glm, _numMision); cntMissions.instance.MostrarBotonSeleccionado(_numMision % 10); GeneralSounds_menu.instance.select(); }; // fondo del boton m_boton.m_current = (_misionDesbloqueada) ? m_texturaBotonUp : m_texturaBotonBlock; }
/// <summary> /// Inicio de la partida /// </summary> public void Inicializar() { ResetInfo(); // instante de inicio de la mision m_instanteInicio = Time.timeSinceLevelLoad; // calcular los objetivos que ya hay cumplidos al inicio de la mision GameLevelMission mision = GameplayService.gameLevelMission; if (mision == null) { Debug.LogWarning("No hay mision cargada"); } else { List <MissionAchievement> objetivosMision = mision.GetAchievements(); if (objetivosMision == null) { Debug.LogWarning("La mision " + GameplayService.gameLevelMission.MissionName + " no tiene objetivos definidos."); } else { for (int i = 0; i < objetivosMision.Count; ++i) { if (objetivosMision[i].IsAchieved()) { Debug.Log("En la mision " + GameplayService.gameLevelMission.MissionName + " el objetivo " + objetivosMision[i].Code + " SI esta conseguido."); m_listaObjetivosIncioMision.Add(objetivosMision[i]); } else { Debug.Log("En la mision " + GameplayService.gameLevelMission.MissionName + " el objetivo " + objetivosMision[i].Code + " aun NO esta conseguido."); } } } } //misionInfo.SetAchivementState(objetivosConseguido.ToString(), true); }
private void UpdateMissionButtons() { GameLevel gameLevel = MissionManager.instance.GetGameLevel(m_numCurrentLevel); // actualizar la pagina de misiones for (int i = 0; i < m_missionButtons.Length; ++i) { GameLevelMission glm = gameLevel.GetGameLevelMission(i); bool misionDesbloqueada = (m_numCurrentLevel * 10 + i) <= Interfaz.ultimaMisionDesbloqueada; m_missionButtons[i].Init(glm.Index, glm, misionDesbloqueada); } // actualizar la pagina de misiones /* * GameLevel gameLevel = MissionManager.instance.GetGameLevel(m_numCurrentLevel); * for ( int i = 0; i < NUM_MISSIONS_PAGE; ++i ) { * if ( i < gameLevel.numMissions && Interfaz.ultimaMisionDesbloqueada >= gameLevel.GetGameLevelMission(i).Index) { * btnMissionButton bm = m_missionButtons[ i ]; * GameLevelMission glm = gameLevel.GetGameLevelMission(i); * int numBoton = i; * bm.Init( ( i + 1 ).ToString(), glm.MissionGameMode, * glm.MissionUnlocked, glm.numEstrellas, * (_name) => { * ShowLevelMission(glm); * MostrarBotonSeleccionado(numBoton); * } ); * m_missionButtons[ i ].gameObject.SetActive( true ); * } * else { * m_missionButtons[ i ].gameObject.SetActive( false ); * } * } */ }
/// <summary> /// Actualiza la informacion de la mision a mostrar /// </summary> /// <param name="gameLevel"></param> /// <param name="_misionDesbloqueada"></param> public void SetInfo(GameLevelMission gameLevel, bool _misionDesbloqueada) { BuscarReferencias(); // guardar en el "ifcCarrera" si la mision es de lanzador o de portero ifcCarrera.instance.estoyMostrandoMisionDeLanzador = (gameLevel.MissionGameMode == GameMode.Shooter); // mostrar el nombre de la mision m_missionNameLabel.text = LocalizacionManager.instance.GetTexto(11).ToUpper() + " " + (gameLevel.Index + 1);//int.Parse(partesNombreMision[2]);// + " (" + gameLevel.GetRoundsCount() + " " + LocalizacionManager.instance.GetTexto(145) + ")"; m_missionNameLabelSombra.text = m_missionNameLabel.text; //SetMissionIcon( gameLevel.MissionGameMode ); // mostrar los objetivos de mision int idx = 0; foreach (var achievement in gameLevel.GetAchievements()) { bool objetivoConseguido = achievement.IsAchieved(); // pintar el texto del objetivo de mision con la opacidad que corresponda m_missionAchievementLabels[idx].text = achievement.DescriptionID; Color colorTexto = m_missionAchievementLabels[idx].color; colorTexto.a = objetivoConseguido ? 1.0f : 0.5f; m_missionAchievementLabels[idx].color = colorTexto; // pintar la sombra del texto m_missionAchievementLabelsSombra[idx].text = achievement.DescriptionID; m_missionAchievementLabelsSombra[idx].gameObject.SetActive(objetivoConseguido); // pintar la estrella con la opacidad que corresponda Color colorEstrella = m_iconoObjetivoConseguido[idx].color; colorEstrella.a = achievement.IsAchieved() ? 1.0f : 0.2f; m_iconoObjetivoConseguido[idx].color = colorEstrella; m_iconoObjetivoConseguido[idx].texture = objetivoConseguido ? m_texturasPrimasConseguidas[idx] : m_texturasPrimasNoConseguidas[idx]; idx++; } // actualizar el estado del boton jugar m_playButton.gameObject.SetActive(_misionDesbloqueada); //m_missionModeIcon.gameObject.SetActive(_misionDesbloqueada); if (_misionDesbloqueada) { m_playButton.action = (_name) => { GeneralSounds_menu.instance.playOneShot(GeneralSounds_menu.instance.confirmClip); // almacenar el modo de juego que se ha seleccionado GameplayService.initialGameMode = gameLevel.MissionGameMode; GameplayService.modoJuego = InfoModosJuego.instance.GetModoJuego("SHOOTER_NORMAL_MODE"); GameplayService.gameLevelMission = gameLevel; // inicializar la pantalla de vestuario ifcBase.activeIface = ifcVestuario.instance; ifcVestuario.instance.SetPantallaBack(ifcCarrera.instance); ifcVestuario.instance.SetVisible(true); ifcVestuario.instance.ShowAs(ifcCarrera.instance.estoyMostrandoMisionDeLanzador ? ifcVestuario.TipoVestuario.LANZADOR : ifcVestuario.TipoVestuario.PORTERO); // mostrar el vestuario new SuperTweener.move(ifcCarrera.instance.gameObject, 0.25f, new Vector3(-1.0f, 0.0f, 0.0f), SuperTweener.CubicOut, (_target) => { ifcCarrera.instance.SetVisible(false); }); new SuperTweener.move(ifcVestuario.instance.gameObject, 0.25f, new Vector3(0.5f, 0.5f, 0.0f), SuperTweener.CubicOut, (_target) => { }); //Cortinilla.instance.Play(); }; } }