Ejemplo n.º 1
0
    private void handleTouch(TouchPhase action, Vector3 position, int fingerId)
    {
        object obj       = _touchs[fingerId];
        string touchArea = "";

        if (obj == null)
        {
            Ray        ray = cameraGUI.ScreenPointToRay(position);
            RaycastHit hit = new RaycastHit();
            if (Physics.Raycast(ray, out hit, 100))
            {
                touchArea         = hit.transform.gameObject.name;
                _touchs[fingerId] = touchArea;
            }
        }
        else
        {
            touchArea = obj.ToString();
        }

        //Debug.Log("ta=" + touchArea + " ac=" + action + " pos=" + position + " id=" + fingerId);

        switch (touchArea)
        {
        case "button_shoot":
            if (action == TouchPhase.Began || action == TouchPhase.Moved || action == TouchPhase.Stationary)
            {
                player.shoot(cameraMain.ScreenToWorldPoint(position));
            }
            else if (action == TouchPhase.Ended || action == TouchPhase.Canceled)
            {
                player.stopAttack();
            }
            break;

        case "ta_flare":
            if (action == TouchPhase.Ended)
            {
                player.shootFlare();
            }
            break;

        case "button_shield":
            buttonShield.handleTouchEvent(action);
            if (action == TouchPhase.Began || action == TouchPhase.Moved || action == TouchPhase.Stationary)
            {
                player.shield();
            }
            else if (action == TouchPhase.Ended || action == TouchPhase.Canceled)
            {
                player.unshield();
            }
            break;

        case "button_joystick":
            if (action == TouchPhase.Began || action == TouchPhase.Moved || action == TouchPhase.Stationary)
            {
                if (position.x < _joystickScreenPointX)
                {
                    player.moveLeft();
                }
                else
                {
                    player.moveRight();
                }
            }
            else
            {
                Debug.Log("move end");
                player.stand();
            }
            break;

        case "button_weapon_1":
        case "button_weapon_2":
        case "button_weapon_3":
        case "button_weapon_4":
        case "button_weapon_5":
            if (action == TouchPhase.Began)
            {
                WeaponButton wb = GameObject.Find(touchArea).GetComponent <WeaponButton>();
                setPlayerSelectedWeapon(wb);
            }
            break;

        case "button_start":
            if (buttonStart.handleTouchEvent(action))
            {
                setGameState(GameState.RUNNING);
            }
            break;

        case "button_home":
            if (buttonHome.handleTouchEvent(action))
            {
                setGameState(GameState.HOME);
            }
            break;

        case "ranking":
        case "button_g+":
            if (buttonGooglePlus.handleTouchEvent(action))
            {
                //Social.ShowAchievementsUI();
                ((PlayGamesPlatform)Social.Active).ShowLeaderboardUI(LEADERBOARD_HIGH_SCORE_ID);
            }
            break;

        case "button_restart":
            if (buttonRestart.handleTouchEvent(action))
            {
                setGameState(GameState.RUNNING);
            }
            break;

        case "button_resume":
            if (buttonResume.handleTouchEvent(action))
            {
                setGameState(GameState.RUNNING);
            }
            break;

        case "button_home2":
            if (buttonHome2.handleTouchEvent(action))
            {
                setGameState(GameState.HOME);
            }
            break;

        case "rank":
            if (action == TouchPhase.Ended)
            {
                Social.ShowAchievementsUI();
            }
            break;
        }
    }