Exemple #1
0
    void Talk(int id, bool isNpc)
    {
        int    questTalkIndex = questManager.GetQuestTalkIndex(id);
        string talkData       = talkManager.GetTalk(id + questTalkIndex, talkIndex);

        if (talkData == null)
        {
            isAction  = false;
            talkIndex = 0;
            questManager.CheckQuest(id);
            return;
        }
        if (isNpc)
        {
            talk.SetMsg(talkData.Split(':')[0]);

            portraitImg.sprite = talkManager.GetPortrait(id, int.Parse(talkData.Split(':')[1]));
            portraitImg.color  = new Color(1, 1, 1, 1);
        }
        else
        {
            talk.SetMsg(talkData);

            portraitImg.color = new Color(1, 1, 1, 0);
        }

        isAction = true;
        talkIndex++;
    }
Exemple #2
0
    void Talk(int id, bool isNpc)
    {
        //Set Talk Data
        int    questTalkIndex = 0;
        string talkData       = "";

        if (talk.isAnim)
        {
            talk.SetMsg("");
            return;
        }

        else
        {
            questTalkIndex = questManager.GetQuestTalkIndex(id);
            //퀘스트번호 + NPC Id = 퀘스트 대화 데이터 Id
            talkData = talkManager.GetTalk(id + questTalkIndex, talkIndex);
        }
        //End Talk
        if (talkData == null)
        {
            isAction       = false;
            talkIndex      = 0;
            questText.text = questManager.CheckQuest(id);
            return; //강제종료역할
        }

        //Continue Talk
        if (isNpc)
        {
            //Split(): 구분자를 통하여 배열로 나눠주는 문자열 함수
            talk.SetMsg(talkData.Split(':')[0]);

            //Show Portrait
            //Parse(): 문자열을 해당 타입으로 변환해주는 함수
            portraitImg.sprite = talkManager.GetPortrait(id, int.Parse(talkData.Split(':')[1]));
            portraitImg.color  = new Color(1, 1, 1, 1); //NPC일때만 초상화가 보이도록 설정

            //Animation Portrait
            if (prevPortrait != portraitImg.sprite)
            {
                portraitAnim.SetTrigger("doEffect");
                prevPortrait = portraitImg.sprite;
            }
        }

        else
        {
            talk.SetMsg(talkData);

            //Hide Portrait
            portraitImg.color = new Color(1, 1, 1, 0);
        }
        //Next Talk
        isAction = true;
        talkIndex++;
    }
    void Talk(int id, bool isNpc)
    {
        int    questTalkIndex = 0;
        string talkData       = "";

        //저장 //Set Talk Data
        if (talk.isAnim)     //매니저에서도 플래그 변수를 이용하여 분기점 로직 작성
        {
            talk.SetMsg(""); //빈값
            return;
        }
        else
        {
            questTalkIndex = questManager.GetQuestTalkIndex(id);
            talkData       = talkManager.GetTalk(id + questTalkIndex, talkIndex); //퀘스트번호 + NPC Id = 퀘스트 대화 데이터 Id
        }

        //대화 끝났을때 //End Talk
        if (talkData == null)
        {
            isAction = false;
            //talkIndex는 대화가 끝날때 0으로 초기화
            talkIndex      = 0;
            questText.text = questManager.CheckQuest(id);
            return;
        }

        //대화 진행 중 //Continue Talk
        if (isNpc)
        {
            //Split() : 구분자를 통하여 배열로 나눠주는 문자열 함수 , :를 통해 배열로 나눠졌으니까 []로 만들어줘.
            talk.SetMsg(talkData.Split(':')[0]);

            //Show Portrait
            PortraitImg.sprite = talkManager.GetPortrait(id, int.Parse(talkData.Split(':')[1])); //Parse():문자열을 해당 타입으로 변환해주는 함수(형변환같은거) -> string을 int로 변환
            //npc일때만 Image가 보이도록 작성
            PortraitImg.color = new Color(1, 1, 1, 1);                                           //4번째가 alpha값 투명한게 0, 안투명한게 1

            //Animation Portrait
            if (prevPortrait != PortraitImg.sprite)  //과거 스프라이트를 저장해두어 비교후, 애니메이션 실행
            {
                PortraitAnim.SetTrigger("doEffect");
                prevPortrait = PortraitImg.sprite; //과거 스프라이트 현재 스프라이트로 갱신
            }
        }
        else
        {
            talk.SetMsg(talkData);

            //Hide Portrait
            PortraitImg.color = new Color(1, 1, 1, 0); //npc아닐때는 숨겨두고 npc일때만 보이도록 설정
        }
        //Next Talk
        isAction = true;
        talkIndex++; //문장 뽑아냇으면 그다음 문장 나오게 하기위해
    }
Exemple #4
0
    void Talk(int id, bool isNpc)
    {
        // Set Talk Data
        int    questTalkIndex = 0;
        string talkData       = "";

        if (talk.isAnim)
        {
            talk.SetMsg("");
            return;
        }
        else
        {
            questTalkIndex = questManager.GetQuestTalkIndex(id);
            talkData       = talkManager.GetTalk(id + questTalkIndex, talkIndex);
        }


        // End Talk
        if (talkData == null)
        {
            isAction       = false;
            talkIndex      = 0;
            questText.text = questManager.CheckQuest(id);
            return;
        }

        // Continue Talk
        if (isNpc)
        {
            talk.SetMsg(talkData.Split(':')[0]);

            // Show Portrait
            portraitImg.sprite = talkManager.GetPortrait(id, int.Parse(talkData.Split(':')[1]));
            portraitImg.color  = new Color(1, 1, 1, 1);

            // Animation Portrait
            if (prevPortarit != portraitImg.sprite)
            {
                portraitAnim.SetTrigger("doEffect");
                prevPortarit = portraitImg.sprite;
            }
        }
        else
        {
            talk.SetMsg(talkData);

            // Hide Portrait
            portraitImg.color = new Color(1, 1, 1, 0);
        }

        // Next Talk
        isAction = true;
        talkIndex++;
    }
    void Talk(int id, bool isNPC, string Name)
    {
        int    questTalkIndex = 0;
        string talkData       = "";

        //Set Talk Data
        if (talk.isanim)//현재 텍스트애니메이션이 출력중일때 조사키 다시입력시 대화문스킵
        {
            talk.SetMsg("");
            return;
        }
        else
        {
            questTalkIndex = questManager.GetQuestTalkIndex(id);
            talkData       = talkManager.GetTalk(id + questTalkIndex, talkIndex);
        }

        //대화 종료
        if (talkData == null)
        {
            isAction       = false;
            talkIndex      = 0;
            questText.text = questManager.CheckQuest(id);
            npcName.gameObject.SetActive(false);
            return;//강제종료
        }


        //대화 진행
        if (isNPC)
        {
            npcName.gameObject.SetActive(true);
            talk.SetMsg(talkData.Split(':')[0]);//대화문
            npcName.text = Name;

            //Show Portrait
            portraitImg.sprite = talkManager.GetPortait(id, int.Parse(talkData.Split(':')[1]));  //스프라이트
            portraitImg.color  = new Color(1, 1, 1, 1);

            //Animation Portrait
            if (prevPortarit != portraitImg.sprite)
            {
                portraitanim.SetTrigger("doEffect");
                prevPortarit = portraitImg.sprite;
            }
        }
        else
        {
            talk.SetMsg(talkData);
            portraitImg.color = new Color(1, 1, 1, 0);
        }
        isAction = true;
        talkIndex++;
    }
Exemple #6
0
    void Talk(int id, bool isNpc)
    {
        int    questTalkIndex = 0;
        string talkData       = "";

        if (TalkEffect.isAnim)
        {
            TalkEffect.SetMsg("");
            return;
        }
        else
        {
            questTalkIndex  = questManager.GetQuestTalkIndex(id);
            questTalkIndex += id;
            talkData        = talkManager.GetTalk(questTalkIndex, talkIndex);
        }

        //string talkData = talkManager.GetTalk(id , talkIndex);



        if (talkData == null)
        {
            isAction  = false;
            talkIndex = 0;
            CloseTalk();
            return;
        }
        if (isNpc)
        {
            TalkEffect.SetMsg(talkData.Split(':')[0]);
            portraitImg.sprite = talkManager.GetPortrait(id, int.Parse(talkData.Split(':')[1]));
            portraitImg.color  = new Color(1, 1, 1, 1);

            if (prevPortrait != portraitImg.sprite)
            {
                AniChange.SetTrigger("doEffect");
                prevPortrait = portraitImg.sprite;
            }
        }
        else
        {
            TalkEffect.SetMsg(talkData);
            portraitImg.color = new Color(0, 0, 0, 0);
        }
        talkIndex++;
    }
    private void Talk(int id, bool isNPC)
    {
        int    questTalkIndex = 0;
        string talkData       = "";

        if (typeEffect.isAnim)
        {
            typeEffect.SetMsg("");
            return;
        }
        else
        {
            questTalkIndex = questManager.GetQuestTalkIndex(id);
            talkData       = talkManager.GetTalk(id + questTalkIndex, talkIndex);
        }

        if (talkData == null)
        {
            isAction       = false;
            talkIndex      = 0;
            questText.text = questManager.CheckQuest(id);
            return;
        }
        if (isNPC)
        {
            typeEffect.SetMsg(talkData.Split(':')[0]);
            portraitImg.sprite = talkManager.GetPortrait(id, int.Parse(talkData.Split(':')[1]));
            portraitImg.color  = new Color(1, 1, 1, 1);

            //초상화 이펙트
            if (prevPortrait != portraitImg.sprite)
            {
                portraitAnim.SetTrigger("doEffect");
                prevPortrait = portraitImg.sprite;
            }
        }
        else
        {
            typeEffect.SetMsg(talkData);
            portraitImg.color = new Color(1, 1, 1, 0);
        }

        isAction = true;
        talkIndex++;
    }
Exemple #8
0
    void talk(int id, bool isNpc)//playerMove에서 isAction이 false면 안움직임. 그래서 계속 이야기 할 수 있는 것임.
    {
        int    questTalkIndex = 0;
        string talkData       = "";

        if (typeEffect.isAnim)
        {
            typeEffect.SetMsg("");
            return;
        }
        else
        {
            questTalkIndex = questManager.GetQuestTalkIndex(id);
            talkData       = talkManager.GetTalk(id + questTalkIndex, talkIndex); //조니 id : 20000, +10
        }

        if (talkData == null)//얘기가 더이상 없을 때 (대화가 끝났을 때, 물건 조사가 끝났을 때)
        {
            isAction  = false;
            talkIndex = 0;
            Debug.Log(questManager.CheckQuest(id));

            eraseItem();
            return;
        }

        int portraitNum = int.Parse(talkData.Split(':')[1]);

        if (isNpc)//npc와 말할 때
        {
            typeEffect.SetMsg(talkData.Split(':')[0]);

            /* 말하는 대상이 Fitra 일때만 오른쪽 portrait 활성화
             * 혼잣말을 할 때는 아무 캐릭터도 보이지 않게 하기 위해서 투명도를 올림.
             */
            if (portraitNum >= 1 && portraitNum <= 4)  // 피트라가 말할 때라면
            {
                portraitRightImg.sprite = talkManager.GetPortrait(portraitNum);
                portraitLeftImg.color   = new Color(1, 1, 1, 0);
                portraitRightImg.color  = new Color(1, 1, 1, 1);
                portraitBigImg.color    = new Color(1, 1, 1, 0);

                if (prevPortrait != portraitRightImg.sprite)
                {
                    if (talkIndex > 0)
                    {
                        portraitRightAnimator.SetTrigger("doEffect");
                    }
                    prevPortrait = portraitRightImg.sprite;
                }
            }

            else if (portraitNum == 0) // portrait가 안보여야 할 떄라면
            {
                portraitLeftImg.color  = new Color(1, 1, 1, 0);
                portraitRightImg.color = new Color(1, 1, 1, 0);
                portraitBigImg.color   = new Color(1, 1, 1, 0);
            }

            else if (portraitNum == 200)                             //대화도중 npc에게 booster을 받았다면 (jhonny만 booster을 주기때문에 portrait는 조니로 고정해둠)
            {
                portraitLeftImg.sprite = talkManager.GetPortrait(5); // jhonny의 웃는얼굴임.
                portraitLeftImg.color  = new Color(1, 1, 1, 1);
                portraitRightImg.color = new Color(1, 1, 1, 0);
                portraitBigImg.color   = new Color(1, 1, 1, 0);
                energyBooster.getBooster();
            }
            else if (portraitNum == 4000)                             //정전 수리 component를 발견했다면
            {
                portraitRightImg.sprite = talkManager.GetPortrait(1); // jhonny의 웃는얼굴임.
                portraitLeftImg.color   = new Color(1, 1, 1, 0);
                portraitRightImg.color  = new Color(1, 1, 1, 1);
                portraitBigImg.color    = new Color(1, 1, 1, 0);

                componentItem.getComponentItem();
            }
            else if (portraitNum == 23)
            {
                portraitBigImg.sprite  = talkManager.GetPortrait(portraitNum); // 폐기 문서
                portraitLeftImg.color  = new Color(1, 1, 1, 0);
                portraitRightImg.color = new Color(1, 1, 1, 0);
                portraitBigImg.color   = new Color(1, 1, 1, 1);
            }
            else
            {
                portraitLeftImg.sprite = talkManager.GetPortrait(portraitNum);
                portraitLeftImg.color  = new Color(1, 1, 1, 1);
                portraitRightImg.color = new Color(1, 1, 1, 0);
                portraitBigImg.color   = new Color(1, 1, 1, 0);

                if (prevPortrait != portraitLeftImg.sprite)
                {
                    if (talkIndex > 0)
                    {
                        portraitLeftAnimator.SetTrigger("doEffect");
                    }
                    prevPortrait = portraitLeftImg.sprite;
                }
            }
        }
        else // 물건을 조사할 때
        {
            if (portraitNum == 200) // energybooster 을 발견했을 때. (energy booster의 대화 끝에는 200번 써줌)
            {
                if (objData.isChecked)//이미 확인했던 Locker 라면 아이템이 계속 나오면 안됨
                {
                    typeEffect.SetMsg("\n" + "\n" + "..이미 열었던 곳이야");
                }
                else//처음 확인하는 Locker 이라면 energy booster을 얻는다.
                {
                    typeEffect.SetMsg(talkData.Split(':')[0]);
                    energyBooster.getBooster();
                    objData.isChecked = true;
                }
            }
            else
            {
                typeEffect.SetMsg(talkData.Split(':')[0]);
            }

            portraitLeftImg.color  = new Color(1, 1, 1, 0);
            portraitRightImg.color = new Color(1, 1, 1, 0);
            portraitBigImg.color   = new Color(1, 1, 1, 0);
        }

        isAction = true;
        talkIndex++;
        questManager.ControlObject();
    }