예제 #1
0
    ////////////////////////////////////////////////////////////////////////////////////


    public override void OnTouchEndedAnywhere()
    {
        // on vérifie si on a appuyé sur le bouton de menu
        RetournerMenu();

        #region DIALOGUES
        // quete 1
        if (GameManagerJardin.curGameState == GameManagerJardin.GameState.queteJessicaP1)
        {
            ChangeState(GameManagerJardin.GameState.queteJessicaP1, GameManagerJardin.GameState.planterP1);
            AfficherBoutons();
        }

        // dialogue 1 de la tansition
        else if (GameManagerJardin.curGameState == GameManagerJardin.GameState.dialogueTransition1)
        {
            ChangeState(GameManagerJardin.GameState.dialogueTransition1, GameManagerJardin.GameState.transition);
        }

        // TEMPORARIRE
        // tansition
        else if (GameManagerJardin.curGameState == GameManagerJardin.GameState.transition)
        {
            ChangeState(GameManagerJardin.GameState.transition, GameManagerJardin.GameState.dialogueTransition2);
        }

        // dialogue 2 de la tansition 2
        else if (GameManagerJardin.curGameState == GameManagerJardin.GameState.dialogueTransition2)
        {
            ChangeState(GameManagerJardin.GameState.dialogueTransition2, GameManagerJardin.GameState.queteJessicaP2);
        }

        // quete 2
        else if (GameManagerJardin.curGameState == GameManagerJardin.GameState.queteJessicaP2)
        {
            ChangeState(GameManagerJardin.GameState.queteJessicaP2, GameManagerJardin.GameState.planterP2);
            AfficherBoutons();
        }

        // score
        else if (GameManagerJardin.curGameState == GameManagerJardin.GameState.score)
        {
            // on check si on a appuyer sur le bouton rejouer
            Rejouer();
        }
        #endregion


        #region PLANTATION on touch ended
        // si on touche une parcelle
        else if ((GameManagerJardin.curGameState == GameManagerJardin.GameState.planterP1) ||
                 (GameManagerJardin.curGameState == GameManagerJardin.GameState.planterP2))
        {
            // on vérifie si on a appuyé sur le bouton de validation
            ValiderLegumes();

            // on vérifie si on a appuyé sur le bouton d'info
            AfficherLegumesPlantes();

            ray = Camera.main.ScreenPointToRay(Input.touches[0].position);

            // si on a termine un touch en dehors d'une parcelle, sur le jardin
            if (Physics.Raycast(ray, out hit) && (hit.collider.gameObject.tag == "FloorJardin"))
            {
                // si on etait en train de dragger un legume
                if (dragging)
                {
                    AnnulerGraine();
                }

                /*
                 * // on deselectionne la parcelle couremment selectionne
                 * else if (selectedParcelle) {
                 *      selectedParcelle.GetComponent<Parcelle>().AEteDeSelectionne();
                 *      selectedParcelle = null;
                 *      NePasAfficherUILegumes();
                 * }
                 */
            }

            // si on a termine un touch sur une parcelle et qu'on est pas en train de tourner la camera
            else if (Physics.Raycast(ray, out hit) && (hit.collider.gameObject.layer == parcelles) && !rotatingCamera)
            {
                GameObject parcelle       = hit.collider.gameObject;
                Parcelle   scriptParcelle = parcelle.GetComponent <Parcelle>();

                // si on termine un touch sur une parcelle selectionne
                if (scriptParcelle.isSelected)
                {
                    // faire 3 petits swipe pour creuser
                    if (scriptParcelle.GetCurState() == Parcelle.ParcelleState.creuser)
                    {
                        // swipe action
                        #region swipe ended
                        if (((fp.x - lp.x) > dist) || ((fp.x - lp.x) < -dist) || ((fp.y - lp.y) < -dist) || ((fp.y - lp.y) > dist))
                        {
                            scriptParcelle.IncrementDigged();
                            scriptParcelle.AEteCreuse();
                        }
                        #endregion

                        if (scriptParcelle.IsFullyDigged())
                        {
                            AfficherUILegumes();
                        }
                    }

                    // on plante la graine, faire un drag and drop
                    // changement d'etat traité dans AjoutLegume(gTex), Appel dans TouchJardin
                    else if (scriptParcelle.GetCurState() == Parcelle.ParcelleState.graine)
                    {
                        #region drag ended
                        if (dragging && Input.touchCount == 1)
                        {
                            // si le legume a ete plante
                            if (AjoutLegume(legumeDragged))
                            {
                                ValiderGraine();
                            }
                            else
                            {
                                AnnulerGraine();
                            }
                        }
                        #endregion
                    }
                }

                // si on termine un touch sur une parcelle non selectionne
                else
                {
                    // si on etait en train de dragger, on annule le placement de la graine
                    if (dragging && Input.touchCount == 1)
                    {
                        AnnulerGraine();
                    }
                    // sinon on a termine le touch sur une parcelle non selectionne
                    else
                    {
                        if (selectedParcelle)
                        {
                            selectedParcelle.GetComponent <Parcelle>().AEteDeSelectionne();
                            NePasAfficherUILegumes();
                        }

                        // la nouvelle parcelle selectionné est celle qu'on a touché
                        selectedParcelle     = parcelle;
                        selectedParcelle.tag = parcelle.tag;
                        scriptParcelle.AEteSelectionne();


                        // si on reselectionne une parcelle qui attend une graine
                        if (scriptParcelle.GetCurState() == Parcelle.ParcelleState.graine)
                        {
                            AfficherUILegumes();
                        }
                    }
                }

                //print (hit.collider.tag + "   " + scriptParcelle.GetCurState() + "   " + scriptParcelle._legume);
            }
        }
        #endregion
    }
예제 #2
0
    ////////////////////////////////////////////////////////////////////////////////////



    public override void OnTouchBeganAnywhere()
    {
        #region PLANTATION on touch began
        // si on touche une parcelle
        if ((GameManagerJardin.curGameState == GameManagerJardin.GameState.planterP1) ||
            (GameManagerJardin.curGameState == GameManagerJardin.GameState.planterP2))
        {
            ray = Camera.main.ScreenPointToRay(Input.touches[0].position);

            #region swipe begin
            if (Physics.Raycast(ray, out hit) && (hit.collider.gameObject.layer == parcelles))
            {
                GameObject parcelle       = hit.collider.gameObject;
                Parcelle   scriptParcelle = parcelle.GetComponent <Parcelle>();


                if (scriptParcelle.isSelected && scriptParcelle.GetCurState() == Parcelle.ParcelleState.creuser)
                {
                    // si on commence le swipe sur la parcelle selectionne
                    if (Input.touchCount == 1 && selectedParcelle && selectedParcelle.tag == parcelle.tag)
                    {
                        fp = Input.GetTouch(0).position;
                        lp = Input.GetTouch(0).position;
                    }
                }
            }
            #endregion

            #region drag begin
            if (selectedParcelle)
            {
                if (selectedParcelle.GetComponent <Parcelle>().GetCurState() == Parcelle.ParcelleState.graine)
                {
                    if (Input.touchCount == 1)
                    {
                        if ((carotte.HitTest(Input.GetTouch(0).position)))
                        {
                            BeginDrag(carotte, hit.point);
                        }
                        else if (tomate.HitTest(Input.GetTouch(0).position))
                        {
                            BeginDrag(tomate, hit.point);
                        }
                        else if (choux.HitTest(Input.GetTouch(0).position))
                        {
                            BeginDrag(choux, hit.point);
                        }
                        else if (aubergine.HitTest(Input.GetTouch(0).position))
                        {
                            BeginDrag(aubergine, hit.point);
                        }
                        else if (patate.HitTest(Input.GetTouch(0).position))
                        {
                            BeginDrag(patate, hit.point);
                        }
                        else if (oignon.HitTest(Input.GetTouch(0).position))
                        {
                            BeginDrag(oignon, hit.point);
                        }
                    }
                }
            }
            #endregion
        }
        #endregion
    }
예제 #3
0
    ////////////////////////////////////////////////////////////////////////////////////


    public override void OnTouchMovedAnywhere()
    {
        #region PLANTATION on touch moved
        if ((GameManagerJardin.curGameState == GameManagerJardin.GameState.planterP1) ||
            (GameManagerJardin.curGameState == GameManagerJardin.GameState.planterP2))
        {
            ray = Camera.main.ScreenPointToRay(Input.touches[0].position);

            #region Camera rotate
            // si on a termine un touch en dehors d'une parcelle, sur le jardin
            if (Physics.Raycast(ray, out hit) && (hit.collider.gameObject.tag == "FloorJardin"))
            {
                if (!dragging)
                {
                    RotateCamera();

                    // si on est train d'arroser on veut que l'arrosoir reste face a la camera
                    if (selectedParcelle && selectedParcelle.GetComponent <Parcelle>().GetCurState() == Parcelle.ParcelleState.arrosage)
                    {
                        arrosoir.eulerAngles = Camera.main.transform.eulerAngles;
                    }
                }
            }
            #endregion


            #region drag moved
            // si on est en train de dragger, on met a jour la position de la graine
            if (dragging)
            {
                graineClone.position = new Vector3(hit.point.x, 1, hit.point.z);
            }
            #endregion

            // si on bouge sur une parcelle
            if (Physics.Raycast(ray, out hit) && (hit.collider.gameObject.layer == parcelles))
            {
                GameObject parcelle       = hit.collider.gameObject;
                Parcelle   scriptParcelle = parcelle.GetComponent <Parcelle>();

                // si on a une parcelle selectionné et que la parcelle touché est la parcelle sélectionné
                if (selectedParcelle && selectedParcelle.tag == parcelle.tag)
                {
                    #region swipe moved
                    if (scriptParcelle.GetCurState() == Parcelle.ParcelleState.creuser)
                    {
                        if (Input.touchCount == 1)
                        {
                            lp = Input.GetTouch(0).position;
                        }
                    }
                    #endregion
                }
                #region Camera rotate
                else
                {
                    if (!dragging)
                    {
                        RotateCamera();
                    }
                }
                #endregion
            }
        }
        #endregion
    }