Пример #1
0
    /// <summary>
    /// 소울 메모리 데이터를 읽습니다.
    /// </summary>
    /// <param name="TALK_CODE"></param>
    /// <param name="_soulMemory"></param>
    /// <returns></returns>
    IEnumerator ProcessSoulMemory(int TALK_CODE, SoulMemory _soulMemory)
    {
        talkUI.SetActive(true);
        //isTalkStart = true;
        //isTalkEnd = false;

        currentSoulMemory = _soulMemory;


        PlayerController.Instance.isInteractingSoulMemory = true;
        isNextPressed = false;

        currentTalkCode = (int)soulMemoryData[TALK_CODE][_TALK_CODE];
        currentCharCode = (int)soulMemoryData[TALK_CODE][_TALK_CHAR_NAME];


        currentTalkMove = (int)soulMemoryData[TALK_CODE][_TALK_MOVE];

        currentCharName = charDict[currentCharCode];

        currentTalkText = soulMemoryData[TALK_CODE][_TALK_NAEYONG] as string;

        //talkWindow.SetActive(true);

        nameText.text = currentCharName;

        // bool isSkip = false;
        for (int s = 0; s < currentTalkText.Length + 1; s++)
        {
            talkText.text = currentTalkText.Substring(0, s);

            if (isNextPressed)         //아직 텍스트가 다 나오지도 않았는데 다음 버튼이 눌렸다면
            {
                isNextPressed = false; // 일단 펄스로 바고
                talkText.text = currentTalkText;
                // isSkip = true;//스킵을 했다고 처리한다.
                break; //for 벗어나기
            }
            yield return(new WaitForSecondsRealtime(talkSpeed));
        }

        yield return(new WaitUntil(() => isNextPressed)); //TRUE일때까지 대기

        isNextPressed = false;                            //지나갔으면 분명 true인 상태일테니까, false로 변경

        switch (currentTalkMove)
        {
        case -1:    //다음으로 이동
            ProcessGoSoulMemory(TALK_CODE + 1, currentSoulMemory);
            break;

        case -25:     // 종료
            SetSoulMemoryClose();
            break;
        }
    }
Пример #2
0
    /// <summary>
    /// 내부에서 사용하는 소울메모리 읽기 시작 함수입니다.
    /// </summary>
    /// <param name="TALK_CODE"></param>
    /// <param name="_npc"></param>
    private void ProcessGoSoulMemory(int TALK_CODE, SoulMemory _soulMemory)
    {
        //PlayerController.Instance.isTalking = true;

        if (ReadSoulMemoryCoroutine != null)
        {
            StopCoroutine(ReadSoulMemoryCoroutine);
            ReadSoulMemoryCoroutine = null;
        }
        ReadSoulMemoryCoroutine = ProcessSoulMemory(TALK_CODE, _soulMemory);
        StartCoroutine(ReadSoulMemoryCoroutine);
    }
Пример #3
0
    /// <summary>
    /// 외부에서 호출하는 사념 읽기 시작 함수입니다.
    /// </summary>
    /// <param name="TALK_CODE"></param>
    /// <param name="_npc"></param>
    public void StartReadSoulMemory(int TALK_CODE, SoulMemory _soulMemory)
    {
        if (ReadSoulMemoryCoroutine != null)
        {
            Debug.Log("이상함");
            StopCoroutine(ReadSoulMemoryCoroutine);
            ReadSoulMemoryCoroutine = null;
        }

        ReadSoulMemoryCoroutine = ProcessSoulMemory(TALK_CODE, _soulMemory);

        StartCoroutine(ReadSoulMemoryCoroutine);
    }
Пример #4
0
 public void Init()
 {
     if (talkText == null)
     {
         Debug.Log("토크텍스트가 널");
     }
     //currentTalkStarter = null;
     currentTalkNPC    = null;
     currentSoulMemory = null;
     isTalkEnd         = false;
     isTalkStart       = false;
     talkData          = new List <Dictionary <string, object> >();
     charData          = new List <Dictionary <string, object> >();
     soulMemoryData    = new List <Dictionary <string, object> >();
 }
Пример #5
0
    public void SetSoulMemoryClose()
    {
        talkUI.SetActive(false);
        if (ReadSoulMemoryCoroutine != null)
        {
            StopCoroutine(ReadSoulMemoryCoroutine);
            ReadSoulMemoryCoroutine = null;
        }

        if (currentSoulMemory != null)
        {
            currentSoulMemory.DisappearSoulMemory();
            currentSoulMemory = null;
            ////UI에 추가하는건 사념이 알아서 하기로 함
            //currentSoulMemory.isEnd = true;
        }
    }
Пример #6
0
    public void Init()
    {
        playerStateMachine = new PlayerStateMachine(this);
        if (playerSkillManager == null)
        {
            playerSkillManager = GetComponent <PlayerSkillManager>();
        }
        playerRigidbody       = GetComponent <Rigidbody2D>();
        playerCollider        = GetComponent <BoxCollider2D>();
        playerCapsuleCollider = GetComponent <CapsuleCollider2D>();
        animator = GetComponent <Animator>();
        puppet   = gameObject.transform;


        Init_LayerMask();

        Init_AnimatorParameter();

        isRight             = true;
        isWater             = false;
        isInputCatchKey     = false;
        isTalkReady         = false;
        isGliding           = false;
        existInteractObject = false;

        isInteractingSoulMemory = false;

        currentNPC    = null;
        catchedObject = null;
        //pushedObject = null;
        touchedObject     = null;
        currentSoulMemory = null;

        originalMoveSpeed = movementSpeed;
        //animator.SetFloat("WindBlend", 0);
        currentGlideAngle = glideAngle + 90f;

        footPosition = lightningPosition;
        myRigidbody  = playerRigidbody;

        Init_ContactFilter();
    }
Пример #7
0
 public Quest_CheckTheSoulMemory(SquirrelDoritos _doritos, SoulMemory _soulMemory)
 {
     doritos    = _doritos;
     soulMemory = _soulMemory;
 }
Пример #8
0
 /// <summary>
 /// 소울메모리 리스트에 추가합니다. 그리고, 상태를 체크합니다.
 /// </summary>
 public void AddSoulMemory(SoulMemory _soulMemory)
 {
     soulMemoryList.Add(_soulMemory);
     CheckClearCondition_SoulMemory();
 }