Example #1
0
    /// <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;
                }
            }
        }
    }