/// <summary> /// Comprueba si el estado actual del juego consiste o no de una solución. Se comprueba cada vez que realizamos un movimiento. /// Actualizaos el score y comrobar si todos los colores de las esfera superiores son iguales a las de las inferiores. /// Si hay solución reproduce un sonido de aplausos usando altavozAplausos. Si el minijuego de Lines también ha sido completado /// los aplausos hacen un "fade out" disminuyendo su intensidad a medida que pasamos a un fundido a negro y abandonamos la sala /// </summary> private void checkSolution() { movementsMade++; if (movementsMade > 9) { GameInfo.IncreaseSecondScore(-1); } bool isSolution = true; for (int i = 0; i < bottomSpheres.Length; i++) { if (bottomSpheres[i].gameObject.GetComponent <Renderer>().material.color != upperSpheres[i].gameObject.GetComponent <Renderer>().material.color) { isSolution = false; } } if (isSolution) { completed = true; if (PanelsManagerScript.lineGameIsComplete()) { altavozAplausos.GetComponent <FinalSoundScript>().playClapsSound(); GameInfo.CompleteSecondGame(); } else { altavozAplausos.GetComponent <FinalSoundScript>().playClapsSoundWithoutFade(); } } }
/// <summary> /// Se llama cuando pasamos la mirada por encima de este panel. /// Realiza una petición a <c>PanelManagerScript</c> para desplazar este panel a un hueco vacío. /// Siempre y cuando el juego no haya sido completado y haya un hueco pegado a este panel (arriba, abajo, izquierda, o derecha) /// </summary> public void moveThisPanel() { int row = (int)transform.localPosition[1]; int col = (int)transform.localPosition[0]; if (PanelsManagerScript.lineGameIsComplete() == false) { if (PanelsManagerScript.movePanel(row, col, false)) { int[] move = PanelsManagerScript.getLastMovement(); transform.localPosition = new Vector3(move[1], move[0], transform.localPosition.z); audio.Play(); } } }
/// <summary> /// Cuando pasamos el puntero por encima del panel, se llamam a este método. Envía una petición a /// <c>PanelsManagerScript</c> para moverse a un hueco cercano, si existiese, dentro del juego. /// Si consigue moverse reproduce un sonido y actualiza el color de su linea dependiendo si su nueva posición /// es en la línea central o no /// </summary> public void moveThisPanel() { int row = (int)transform.localPosition[1]; int col = (int)transform.localPosition[0]; if (PanelsManagerScript.lineGameIsComplete() == false) { if (PanelsManagerScript.movePanel(row, col, true)) { int[] move = PanelsManagerScript.getLastMovement(); transform.localPosition = new Vector3(move[1], move[0], transform.localPosition.z); audio.Play(); if (move[0] == 1) { transform.GetChild(0).gameObject.GetComponent <Renderer>().material.color = Color.white; } else { transform.GetChild(0).gameObject.GetComponent <Renderer>().material.color = originalColor; } } } }