Ejemplo n.º 1
0
    void OnMouseDown()
    {
        if (SpawnManager.Instance.tutorialPanel.eTutorialState == TutorialOrder.E_TUTORIAL_START_IMAGE01 || SpawnManager.Instance.tutorialPanel.eTutorialState == TutorialOrder.E_TUTORIAL_START_IMAGE02)
        {
            return;
        }

        if (Input.GetMouseButtonDown(0) && (E_STATE == ENORMAL_STATE.WAIT || WeaponBackground.activeSelf))
        {
            //onPointerDown 보다 먼저 호출
            //if (!EventSystem.current.IsPointerOverGameObject ()) {

            m_bIsRepair = true;

            //현재 아르바이트가 수리중인지 확인
            ArbaitBatch arbait = SpawnManager.Instance.OverlapArbaitData(gameObject);

            if (arbait != null)
            {
                arbait.ResetWeaponData();
            }

            RepairShowObject.GetWeapon(gameObject, weaponData, m_dComplate, m_fTemperator);

            backGround.sprite = PlayerRepairSpeech;
            //}
        }
    }
Ejemplo n.º 2
0
    IEnumerator CharacterAction()
    {
        switch (E_STATE)
        {
        case ENORMAL_STATE.WALK:

            m_anim.SetBool("bIsWalk", true);

            //Move 함수를 통해 지정된 위치로 자연스럽게 이동하기 위해 MoveTowards 함수를 사용
            transform.position = Vector3.MoveTowards(transform.position, m_VecMoveDistance, fSpeed * Time.deltaTime);

            //만약 도착했다면
            if ((transform.position.x == m_VecMoveDistance.x))
            {
                //처음일 경우 true로 바꿔주고 수리 할 수 있는 무기를 보여줌
                if (m_bIsFirst == false)
                {
                    m_bIsFirst = true;

                    WeaponBackground.SetActive(true);
                    TimerGameobject.SetActive(true);
                }

                //만약 수리중이라면 도착했다는것으로 간주하고 리턴
                if (m_bIsRepair)
                {
                    m_bIsArrival = true;
                    yield break;
                }

                //만약 현재 수리중인 오브젝트가 없을 경우
                //수리 중 및 도착한것으로 바꾸고 현재 무기를 넣어준다.
                if (RepairShowObject.AfootObject == null)
                {
                    m_bIsRepair  = true;
                    m_bIsArrival = true;

                    RepairShowObject.GetWeapon(gameObject, weaponData, m_fComplate, m_fTemperator);

                    SpeechSelect((int)E_SPEECH.E_PLAYER);
                    yield break;
                }

                //지정된 위치로 도착했다면
                if (m_bIsArrival == false)
                {
                    m_bIsArrival = true;

                    //수리할 수 있는 아르바이트가 있는지 체크한다.
                    m_nCheck = SpawnManager.Instance.InsertArbatiWeaponCheck(weaponData.nGrade);

                    if (m_nCheck != (int)E_CHECK.E_FAIL)
                    {
                        m_bIsRepair = true;

                        SpeechSelect(m_nCheck);

                        SpawnManager.Instance.InsertArbaitWeapon(m_nCheck, gameObject, weaponData, m_fComplate, m_fTemperator);
                    }
                }
            }
            break;

        case ENORMAL_STATE.WAIT:
            m_anim.SetBool("bIsWalk", false);
            break;

        case ENORMAL_STATE.BACK:

            //딱 한번만 호출 되야 하는 부분
            if (!m_bIsFirstBack)
            {
                m_bIsFirstBack = true;

                boxCollider.isTrigger = true;

                m_anim.SetBool("bIsWalk", true);

                //이미지 변경이나 효과 애니메이션 변경등을 진행
                mySprite.flipX = false;

                mySprite.sortingOrder = (int)E_SortingSprite.E_BACK;

                //현재 오브젝트를 보내서 있는지 확인
                RepairShowObject.CheckMyObject(gameObject);

                //현재 캐릭터를 지움
                SpawnManager.Instance.DeleteObject(gameObject);

                if (RepairShowObject.AfootObject == null && m_bIsAllBack == false)
                {
                    SpawnManager.Instance.AutoInputWeaponData();
                }

                //결과값 호출
                Complate(m_fComplate);

                //현재 아르바이트가 수리중인지 확인
                ArbaitBatch arbait = SpawnManager.Instance.OverlapArbaitData(gameObject);

                //수리 중 이였다면 아르바이트 초기화
                if (arbait != null)
                {
                    arbait.ResetWeaponData();
                }

                WeaponBackground.SetActive(false);
                TimerGameobject.SetActive(false);
            }

            transform.position = Vector3.MoveTowards(transform.position, m_VecStartPos, fSpeed * Time.deltaTime);

            if (Vector3.Distance(transform.position, m_VecStartPos) < 0.5f)
            {
                gameObject.SetActive(false);
            }
            break;

        default:
            break;
        }

        yield return(null);
    }