Ejemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        menuCurrentPosition     = mainMenu.position;
        menuCurrentSize         = mainMenu.localScale;
        underMenuImage.rotation = Quaternion.Euler(0, 0, BGrotation);

        //Fait simplement tourner l'arrière plan du sous-menu
        if (BGrotation >= 360)
        {
            BGrotation = 0;
        }
        else
        {
            BGrotation = BGrotation + rotationSpeed;
        }

        if (functions.GetDialogueMode() == false)
        {
            //Grace a la touche Escape, on peut ouvrir et fermer le menu principal et également fermer les sous-menus
            if (Input.GetKeyDown(KeyCode.Escape))
            {
                //On vérifie tout d'abord si un menu est ouvert ou non
                if (menuOpened == true)                //si oui, s'agit-il du menu principal ou non
                {
                    if (idUnderMenu == 0)              //S'il s'agit du menu principal, on le ferme tout simplement
                    {
                        menuOpened = false;
                        functions.SetPauseMode(false);
                        idMenuAnimation = 2;
                    }
                    else                     //S'il s'agit d'un sous-menu, on le ferme et on revient au menu principal
                    {
                        idMenuAnimation = 4;
                        idUnderMenu     = 0;
                    }
                }
                else                 //Sinon on ouvre simplement le menu principal
                {
                    menuOpened = true;
                    mainMenu.gameObject.SetActive(menuOpened);
                    functions.SetPauseMode(true);
                    idMenuAnimation = 1;
                }
            }
        }

        //Animations d'ouverture et de fermeture du menu principal et des sous-menus (4 animations en tout)
        if (idMenuAnimation == 1)        //Ouverture du menu principal

        {
            BGrotation       = -90;
            screenCenter     = new Vector3(Screen.width / 2, Screen.height / 2, 0);
            mainMenuPosition = new Vector3(menuStartPosition.x, screenCenter.y, menuStartPosition.z);            //Position exacte du menu principal calculée automatiquement d'après la taille de l'écran

            functions.MoveAt(mainMenu, mainMenuPosition, menuSpeed);

            if (menuCurrentPosition.y == mainMenuPosition.y && menuCurrentPosition.x == mainMenuPosition.x)
            {
                idMenuAnimation = 0;
            }
        }
        else if (idMenuAnimation == 2)        //Fermeture du menu principal

        {
            functions.MoveAt(mainMenu, menuStartPosition, menuSpeed);

            if (menuCurrentPosition.y == menuStartPosition.y && menuCurrentPosition.x == menuStartPosition.x)
            {
                menuOpened = false;
                mainMenu.gameObject.SetActive(menuOpened);
                idMenuAnimation = 0;
            }
        }
        else if (idMenuAnimation == 3)                                                                                                                          //Ouverture d'un sous-menu
        {
            underMenuPosition = new Vector3(mainMenuPosition.x + (Screen.width / 5.0f), mainMenuPosition.y, mainMenuPosition.z);                                //Position exacte du sous-menu calculée automatiquement d'après la taille de l'écran
            if (underMenuPosition.x != menuCurrentPosition.x || underMenuPosition.y != menuCurrentPosition.y || menuCurrentSize.x < menuStartSize.x + zoomMenu) //Si les positions X et Y actuelles du menu ne sont pas les mêmes que les positions X et Y du sous-menu
            {
                functions.MoveAt(mainMenu, underMenuPosition, menuSpeed);
                functions.Scaling(mainMenu, zoomSpeed, zoomMenu, zoomMenu);
            }
            else
            {
                idMenuAnimation = 0;
            }
        }
        else if (idMenuAnimation == 4)        //Fermeture d'un sous-menu
        {
            float dezoomMenu = zoomMenu * -1;
            if (menuCurrentPosition.x != mainMenuPosition.x || menuCurrentPosition.y != mainMenuPosition.y || menuCurrentSize.x > menuStartSize.x)
            {
                functions.MoveAt(mainMenu, mainMenuPosition, menuSpeed);
                functions.Scaling(mainMenu, zoomSpeed, dezoomMenu, dezoomMenu);
            }
            else
            {
                idMenuAnimation = 0;
            }
        }

        if (idUnderMenu == 1)
        {
            //Debug.Log("Magic menu activated!");
        }
        else if (idUnderMenu == 2)
        {
            inventory.gameObject.SetActive(true);
            //Debug.Log("Inventory menu activated!");
        }
        else if (idUnderMenu == 3)
        {
            //Debug.Log("Equipment menu activated!");
        }
        else if (idUnderMenu == 4)
        {
            //Debug.Log("Tactics menu activated!");
        }
        else if (idUnderMenu == 5)
        {
            //Debug.Log("Save menu activated!");
        }
        else if (idUnderMenu == 6)
        {
            //Debug.Log("Options menu activated!");
        }
        else if (idUnderMenu == 7)
        {
            //Debug.Log("Status menu activated!");
        }
        else
        {
            inventory.gameObject.SetActive(false);
        }

        //Active ou désactive la fenêtre de dialogue
        if (activeDialogue == 1)
        {
            dialogue.GetChild(0).gameObject.SetActive(true);
        }
        else if (activeDialogue == 2)
        {
            dialogue.GetChild(1).gameObject.SetActive(true);
        }
        else
        {
            dialogue.GetChild(0).gameObject.SetActive(false);
            dialogue.GetChild(1).gameObject.SetActive(false);
        }

        //Active ou désactive la fenêtre de réponse du personnage
        if (answerWindow == 1)
        {
            dialogue.GetChild(2).gameObject.SetActive(true);
        }
        else if (answerWindow == 2)
        {
            dialogue.GetChild(3).gameObject.SetActive(true);
        }
        else
        {
            dialogue.GetChild(2).gameObject.SetActive(false);
            dialogue.GetChild(3).gameObject.SetActive(false);
        }
    }