public void initialize()
 {
     this.script = ContentScript.FromFile(scriptname);
     this.title = script.title;
     this.enemyTexture = script["enemy"][0];
     this.backgroundTexture = null == script["background"] ? null : script["background"][0];
 }
Example #2
0
    IEnumerator Wating()
    {
        GameObject    itemScript = FindObjectOfType <ItemScript>().transform.Find("ReactionButton").gameObject;
        ContentScript content    = FindObjectOfType <ContentScript>();

        // 인벤토리를 열 때 까지 대기
        while (itemScript.activeSelf == false)
        {
            yield return(null);
        }

        // 인벤토리를 끌 때 까지 대기
        while (itemScript.activeSelf == true)
        {
            yield return(null);
        }

        // 조합을 성공하였는가?
        if (content.IsGottenItem(itemName))
        {
            makeReaction.InitAndReact();
        }
        else
        {
            CantReaction.InitAndReact();
        }

        FSLocator.textDisplayer.reactionButton.enabled = true;

        Destroy(myCorotine);
    }
 public DanceProtocol(String scriptname)
     : this()
 {
     this.scriptname = scriptname;
     this.script = ContentScript.FromFile(scriptname);
     this.title = script.title;
 }
Example #4
0
 public DanceScene(String scriptname)
 {
     this.script = ContentScript.FromFile(scriptname);
     this.textures = new TextureContext();
     this.sequences = new DanceSequenceProtocol();
     this.background = new DanceBackground();
     this.ui = new IngameUI();
 }
Example #5
0
    protected override void ImmediateReaction()
    {
        playerInventory = GameObject.Find("ItemDisplayer").GetComponent <ContentScript>();

        playerInventory.RemoveItem(itemID);

        if (itemObject != null)
        {
            Destroy(itemObject);
        }
    }
        internal void initialize(ContentScript script)
        {
            this.sequences.Clear();

            foreach (String sequenceSource in script["sequences"]) {
                String[] startAndScript = sequenceSource.Split('>');
                int startMeasure = int.Parse(startAndScript[0].Trim()) - 1;
                String[] scriptSource = startAndScript[1].Split(',');

                DanceSequence sequence = this.readSequenceDetails(startMeasure, scriptSource);

                this.sequences.Add(sequence);
            }
        }
        public void initialize(ContentUtil content, ContentScript script)
        {
            this.bakground = content.load<Texture2D>(script.get("background"));

            if (script.contains("beatlayers")){
                this.beatSigns = new BeatLayer[script["beatlayers"].Count];
                for (int i = 0; i < this.beatSigns.Length; i++){
                    this.beatSigns[i] = new BeatLayer(content, script["beatlayers"][i]);
                }
            }

            if (script.contains("countlayers")) {
                this.countSigns = new Texture2D[script["countlayers"].Count];
                for (int i = 0; i < this.countSigns.Length; i++) {
                    this.countSigns[i] = content.load<Texture2D>(script["countlayers"][i]);
                }
            }
        }
Example #8
0
    // 인벤토리 저장
    private void SaveInventory()
    {
        // 이전 값 제거
        tempData.itemsCheck.Clear();

        // 현재 상태를 저장
        ContentScript inventory = FindObjectOfType <ContentScript>();

        for (int i = 0; i < inventory.GetItemSlotsCount(); i++)
        {
            SlotData.ItemInfo item = new SlotData.ItemInfo
            {
                id    = inventory.GetIDByIndexInItemSlot(i),
                count = inventory.GetCountByIndexInItemSlot(i)
            };

            tempData.itemsCheck.Add(item);
        }
    }
    public void LoadData()
    {
        // 이전의 위치로 플레이어를 이동
        FindObjectOfType <NewPlayer>().transform.position = new Vector3((float)saveData.tempData.posX, (float)saveData.tempData.posY, (float)saveData.tempData.posZ);

        // 이전의 미션으로 현재 미션을 갱신
        FindObjectOfType <MissionScript>().SetMission(saveData.tempData.mission);

        // 이전 stage로 현재 위치를 갱신
        stage = saveData.tempData.stage;
        // 최초 맵 Active
        stageObject.Find(stage.ToString()).gameObject.SetActive(true);

        // 이전의 상태로 진행상태를 갱신
        AllConditions allConditions = Resources.Load <AllConditions>("AllConditions");

        for (int i = 0; i < allConditions.conditions.Length; i++)
        {
            allConditions.conditions[i].satisfied = saveData.tempData.conditionsCheck[i];
        }

        // 이전의 상태로 인벤토리 정보를 갱신
        ContentScript inventory = FindObjectOfType <ContentScript>();

        for (int i = 0; i < saveData.tempData.itemsCheck.Count; i++)
        {
            for (int j = 0; j < saveData.tempData.itemsCheck[i].count; j++)
            {
                inventory.GetItem(saveData.tempData.itemsCheck[i].id);
            }
        }

        // 이전의 상태로 문서단서 정보를 갱신
        DocumentInformationManager information = FindObjectOfType <DocumentManager>().information;

        for (int i = 0; i < saveData.tempData.infosCheck.Count; i++)
        {
            if (saveData.tempData.infosCheck[i])
            {
                information.KnowNewInfoByIndex(i);
            }
        }

        // 이전의 상태로 인물단서 정보를 갱신
        DocumentCharacterManager character = FindObjectOfType <DocumentManager>().character;

        for (int i = 0; i < saveData.tempData.charsCheck.Count; i++)
        {
            CharacterSlot slot = character.GetSlot(saveData.tempData.charsCheck[i].name);
            slot.CharacterKnow(false);
            slot.characterExp = saveData.tempData.charsCheck[i].exp;
        }

        // 이전의 상태로 사운드 상태를 변경
        StaticInfoForSound.con_BGM_Audio = GameObject.Find(saveData.tempData.conBgmSourceName).GetComponent <AudioSource>();
        if (saveData.tempData.conBgmClipName != "")
        {
            StaticInfoForSound.con_BGM_Audio.clip = Resources.Load <AudioClip>("AudioResource/BGM/" + saveData.tempData.conBgmClipName);
            StartCoroutine(SoundStart());
        }



        // etc
        isCanSave = saveData.tempData.isCanSave;

        isDay20 = saveData.tempData.isDay20;
        if (isDay20)
        {
            if (slot != null)
            {
                slot.informationName  = infoName;
                slot.informationExp   = infoExp;
                slot.informationImage = infoImage;
            }

            if (clue != null)
            {
                clue.informationName  = infoName;
                clue.informationExp   = infoExp;
                clue.informationImage = infoImage;

                clue.transform.Find("Known").GetComponent <Image>().sprite = infoImage;
            }
        }

        isOnBackGarden = saveData.tempData.isOnBackgarden;
        if (isOnBackGarden)
        {
            footSource.clip = footClip;
            footSource.Play();
        }

        isFindBirthClue = saveData.tempData.isFindBirthClue;
        if (isFindBirthClue == false)
        {
            foreach (GameObject hideObject in hideObjects)
            {
                hideObject.SetActive(false);
            }
        }


        isGetEar = saveData.tempData.isGetEar;
        if (isGetEar)
        {
            ear.SetActive(false);
        }


        isGetHair = saveData.tempData.isGetHair;
        if (isGetHair)
        {
            hair.SetActive(false);
        }


        isGetSpoon = saveData.tempData.isGetSpoon;
        if (isGetSpoon)
        {
            spoon.SetActive(false);
        }


        isOnCriminalLine = saveData.tempData.isOnCriminalLine;
        if (isOnCriminalLine)
        {
            criminalLine.SetActive(true);
        }


        isOnLibraryLine = saveData.tempData.isOnLibraryLine;
        if (isOnLibraryLine)
        {
            libraryLine.SetActive(true);
        }

        isLibraryNpcOut = saveData.tempData.isLibraryNpcOut;
        if (isLibraryNpcOut)
        {
            libraryNpc.position = new Vector3(libraryNpcNewPos.position.x, libraryNpcNewPos.position.y, libraryNpcNewPos.position.y);
        }


        isCustomerNotDrunken = saveData.tempData.isCustomerNotDrunken;
        if (isCustomerNotDrunken)
        {
            customerNpc.position = new Vector3(npcNewPos.position.x, npcNewPos.position.y, npcNewPos.position.y);
            customerNpc.Find("Sprite").GetComponent <SpriteRenderer>().sprite = npcNewSprite;
            npcDrunkenReaction.SetActive(false);
        }


        isPoliceWallRemove = saveData.tempData.isPoliceWallRemove;
        if (isPoliceWallRemove)
        {
            policeWall.SetActive(false);
        }

        isLibraryTempRemove = saveData.tempData.isLibraryTempRemove;
        if (isLibraryTempRemove)
        {
            libraryTemp.SetActive(false);
        }
    }
Example #10
0
    public void OnButtonUpNPC()
    {
        if (isTouch == false)
        {
            return;
        }

        touchUpPosition = Input.mousePosition;

        // 만약 드래그한 길이(y축만 판별)가 최소 길이를 넘으면..
        if (touchUpPosition.y - touchDownPosition.y >= standardMinDrag * (Screen.width / screenWidth))
        {
            ParsingData   tempData   = Resources.Load("CSVData/All Observation List Asset") as ParsingData;
            ContentScript tempScript = GameObject.FindObjectOfType <ContentScript>();

            // 현재 대화하는 NPC 이름 캐싱
            string npcName = GameObject.FindObjectOfType <ObservationManager>().npcName;

            for (int i = 0; i < tempData.list.Count; i++)
            {
                if (tempData.list[i]["Way"] as string == "Pincer" &&
                    tempData.list[i]["Character"] as string == npcName)
                {
                    // 이전에 획득하였는지 조사.
                    AllConditions conditions = Resources.Load <AllConditions>("AllConditions");
                    foreach (Condition condition in conditions.conditions)
                    {
                        if (condition.description == tempData.list[i]["Condition"] as string)
                        {
                            // 이전에 얻은 털이거나, 혹은 얻을 털이 없는경우 대사만 처리
                            if (condition.satisfied == true || tempData.list[i]["Division"] as string == "x")
                            {
                                GameObject.FindObjectOfType <ObservationManager>().GetItem("", "", tempData.list[i]["TalkScript"] as string, null);
                            }
                            // 이번에 얻게되는 아이템이므로 아이템 획득 + 대사처리
                            else
                            {
                                // 얻은 아이템 이름
                                string itemName = tempData.list[i]["Param"] as string;

                                // 현재 아이템 얻는 방법이 아이템의 ID를 통한 획득밖에 없으므로 ID를 먼저 확인.
                                string itemID = tempScript.GetIDByName(itemName);
                                // 해당 이름의 고양이털을 얻는다.
                                tempScript.GetItem(itemID);

                                // UI의 총괄 스크립트에게, 아이템을 얻었음을 알린다.
                                GameObject.FindObjectOfType <ObservationManager>().GetItem(itemName,
                                                                                           tempScript.GetExpByName(itemName), tempData.list[i]["TalkScript"] as string, null);

                                // 아이템 획득하였음을 기록
                                condition.satisfied = true;
                            }
                            break;
                        }
                    }
                    break;
                }
            }
        }
        isTouch = false;
    }
Example #11
0
 public Song(ContentScript script, ContentUtil content)
     : this(script["song"][0], content, script.asFloat["tempo"][0])
 {
     if (null != script["startshift"])
         this.timeShift = this.beatTimeInMs * script.asFloat["startshift"][0];
 }
Example #12
0
    public void OnButtonUpNPC()
    {
        if (isTouch == false)
        {
            conTouch = null;
            return;
        }
        touchUpPosition = Input.mousePosition;

        // 만약 드래그한 길이(y축만 판별)가 최소 길이를 넘으면..
        if (touchDownPosition.y - touchUpPosition.y >= standardMinDrag * (Screen.height / screenHeight))
        {
            // 우선 우유배달소년만 다르게 작동되므로 따로 하드코딩.. 시간이 없다..
            if (conTouch.nPCSpecialWork == TouchPointScript.NPCSpecialWork.MILKBOY)
            {
                Sprite newImage;

                switch (milkboyEarPullCount)
                {
                case 0:
                    // 대사만 처리
                    GameObject.FindObjectOfType <ObservationManager>().GetItem("", "", "냥군님…? 아파옹…", null);
                    milkboyEarPullCount++;

                    // 귀가 조금 찢어진 이미지로 교체
                    newImage = Resources.Load <Sprite>("ArtResource/Stage1/ETC/우유소년_귀조금찢어짐");
                    GameObject.FindObjectOfType <ObservationManager>().ChangeNpcImage(newImage);
                    break;

                case 1:
                    // 대사만 처리
                    GameObject.FindObjectOfType <ObservationManager>().GetItem("", "", "냥군님… 적당히t하시라옹…", null);
                    milkboyEarPullCount++;

                    // 귀가 찢어진 이미지로 교체
                    newImage = Resources.Load <Sprite>("ArtResource/Stage1/ETC/우유소년_귀찢어짐");
                    GameObject.FindObjectOfType <ObservationManager>().ChangeNpcImage(newImage);

                    break;

                case 2:
                    // 귀 획득
                    GameObject.FindObjectOfType <ObservationManager>().GetItem("가짜 귀", "우유배달소년이 끼우던 가짜 귀", "야, 그만 하라고 했지.", GameObject.Find("08_AfterGetToyEar").GetComponent <ReactionCollection>());

                    // 귀가 찢어진 이미지로 교체
                    newImage = Resources.Load <Sprite>("ArtResource/Stage1/ETC/우유소년_귀뜯어짐");
                    GameObject.FindObjectOfType <ObservationManager>().ChangeNpcImage(newImage);
                    break;
                }
                return;
            }

            // 해당 이벤트들을 처리
            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;
                }
            }
        }

        isTouch  = false;
        conTouch = null;
    }
Example #13
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;
                }
            }
        }
    }