예제 #1
0
 public void InTouchArea(TouchPointScript conTouch)
 {
     if (conTouch.name != "Default" && canLook)
     {
         StaticCorouting.Start("TimeCounting", TimeCounting(conTouch));
     }
 }
예제 #2
0
    // ===================================================== private function ===========================================================

    // 지정된 TouchPoint 최소 관찰 시간 제어
    IEnumerator TimeCounting(TouchPointScript conTouch)
    {
        float touchPointTime = 0.0f;

        // 1초동안 TouchPoint를 돋보기로 보아야 관찰한것으로 인정
        while (touchPointTime < 1.0f)
        {
            touchPointTime += Time.deltaTime;
            yield return(null);
        }

        // 우선 우유배달소년만 다르게 작동되므로 따로 하드코딩.. 시간이 없다..
        if (conTouch.nPCSpecialWork == TouchPointScript.NPCSpecialWork.MILKBOY)
        {
            canLook = false;

            GameObject.FindObjectOfType <ObservationManager>().GetItem("기 록", "흉터 같은 게 있다. 좀 갈라진 것 같다…?", "", GameObject.Find("07_AfterFindScar").GetComponent <ReactionCollection>());
        }
        else
        {
            canLook = true;

            // 해당 이벤트들을 처리
            ParsingData tempData = Resources.Load("CSVData/All Observation List Asset") as ParsingData;

            for (int i = 0; i < tempData.list.Count; i++)
            {
                // 이벤트를 찾아서..
                if (tempData.list[i]["ID"] as string != conTouch.ID)
                {
                    continue;
                }

                // 이 이벤트에서 정보들을 추출
                string npcName    = tempData.list[i]["Character"] as string;
                string talkScript = (tempData.list[i]["TalkScript"] as string).Replace("/", ",");
                string division   = tempData.list[i]["Division"] as string;
                string condition  = tempData.list[i]["Condition"] as string;

                // 추출한 정보를 Manager로 전송하여 처리
                switch (division)
                {
                case "x":
                    // 별다른 이벤트가 없이 대사만 처리.
                    GameObject.FindObjectOfType <ObservationManager>().GetItem("", "", talkScript, null);
                    break;

                case "item":
                    // 얻는 아이템의 이름 확인
                    string itemName = tempData.list[i]["Param"] as string;

                    // 이 아이템을..
                    AllConditions conditions = Resources.Load <AllConditions>("AllConditions");
                    foreach (Condition tempCondition in conditions.conditions)
                    {
                        // 이전에 아이템을 얻은적이 있는지 확인
                        if (tempCondition.description == condition)
                        {
                            // 이전에 얻은 아이템이면..
                            if (tempCondition.satisfied == true)
                            {
                                // 대사만 처리
                                GameObject.FindObjectOfType <ObservationManager>().GetItem("", "", talkScript, null);
                            }
                            // 이전에 얻은 적이 없다면..
                            else
                            {
                                // 아이템을 획득하였음을 기록
                                tempCondition.satisfied = true;

                                // 실제 아이템을 획득
                                ContentScript tempcontent = GameObject.FindObjectOfType <ContentScript>();
                                string        itemID      = tempcontent.GetIDByName(itemName);
                                tempcontent.GetItem(itemID);

                                // 획득한 아이템에 대한 대사 처리
                                GameObject.FindObjectOfType <ObservationManager>().GetItem(itemName, tempcontent.GetExpByName(itemName), talkScript, null);
                            }
                            break;
                        }
                    }
                    break;

                case "character":
                    // 얻는 정보의 이름 확인
                    string infoName = tempData.list[i]["Param"] as string;

                    // 이 정보를..
                    conditions = Resources.Load <AllConditions>("AllConditions");
                    foreach (Condition tempCondition in conditions.conditions)
                    {
                        // 이전에 정보를 얻은적이 있는지 확인
                        if (tempCondition.description == condition)
                        {
                            // 이전에 얻은 정보이면..
                            if (tempCondition.satisfied == true)
                            {
                                // 대사만 처리
                                GameObject.FindObjectOfType <ObservationManager>().GetItem("", "", talkScript, null);
                            }
                            // 이전에 얻은 적이 없다면..
                            else
                            {
                                // 정보를 획득하였음을 기록
                                tempCondition.satisfied = true;

                                // 해당 아이템을 획득
                                DocumentCharacterManager tempDocument = GameObject.FindObjectOfType <DocumentManager>().character;

                                CharacterSlot tempSlot = tempDocument.GetSlot(npcName);
                                tempSlot.characterExp += "------------------\n";
                                tempSlot.characterExp += infoName + "\n";
                                tempDocument.CharacterKnow(npcName);

                                // 대사 처리
                                GameObject.FindObjectOfType <ObservationManager>().GetItem("기 록", infoName, talkScript, null);
                            }

                            break;
                        }
                    }
                    break;

                case "tutorial":

                    // 이 정보를..
                    conditions = Resources.Load <AllConditions>("AllConditions");
                    foreach (Condition tempCondition in conditions.conditions)
                    {
                        // 이전에 정보를 얻은적이 있는지 확인
                        if (tempCondition.description == condition)
                        {
                            // 대사만 처리
                            GameObject.FindObjectOfType <ObservationManager>().GetItem("", "", talkScript, null);

                            // 정보를 획득하였음을 기록
                            tempCondition.satisfied = true;

                            break;
                        }
                    }
                    break;
                }
            }
        }
    }
예제 #3
0
 public void OutTouchArea()
 {
     StaticCorouting.Stop("TimeCounting");
     conTouch = null;
 }
 // 현재 모드에서 특정 Area 접근
 public void InTouchArea(TouchPointScript conTouch)
 {
     touchMode.InTouchArea(conTouch);
 }
 // 현재 mode에서의 버튼다운 수행
 public void OnButtonDownNPC(TouchPointScript conTouch)
 {
     touchMode.OnButtonDownNPC(conTouch);
 }
예제 #6
0
 public void OnButtonDownNPC(TouchPointScript conTouch)
 {
 }