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++; }
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++; //문장 뽑아냇으면 그다음 문장 나오게 하기위해 }
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++; }
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++; }
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(); }