예제 #1
0
    private void Start()
    {
        if (SaveData._data.tutorialEnd)
        {
            // load scene info
            SaveData.SceneInfo roomInfo = SaveData._data.getRoomInfo(SceneManager.GetActiveScene().name);
            if (!roomInfo.firstIn)
            {
                for (int i = 0; i < Items.Length; i++)
                {
                    bool isExist = false;
                    for (int j = 0; j < roomInfo.itemName.Length; j++)
                    {// in scene set active
                        if (Items[i].name == roomInfo.itemName[j])
                        {
                            isExist = true;
                        }
                    }
                    Items[i].SetActive(isExist);
                }
                //check flower status
                if (SaveData._data.flowerIsSmall)
                {
                    GameObject obj = GameObject.Find("Flower");
                    if (obj != null)
                    {
                        obj.transform.GetChild(1).GetComponent <BoxCollider2D>().enabled = false;
                        obj.GetComponentInParent <Animator>().SetTrigger("Small");
                    }
                }
                //check curtain status
                if (SaveData._data.curtainIsOpen)
                {
                    GameObject obj = GameObject.Find("paint");
                    if (obj != null)
                    {
                        GameObject obj2 = GameObject.Find("curtain");
                        if (obj2 != null)
                        {
                            obj2.SetActive(false);
                        }
                        obj.GetComponent <InteractiveItem>().interactiveDistance = 4;
                    }
                }
                //check purpleRoom
                if (SaveData._data.canEnterPurpleRoom)
                {
                    //set animation
                    GameObject pRoom = GameObject.Find("SpurpleRoom");
                    if (pRoom != null)
                    {
                        pRoom.GetComponent <InteractiveItem>().interactiveDistance = 4;
                        pRoom.GetComponent <Animator>().SetTrigger("Open");
                    }
                }
                //check main door
                LockMainDoor();
            }

            //load player info

            foreach (string _item in SaveData._data.player.itemName)
            {
                if (_item != "")
                {
                    Player.AddHoldItem(_item);
                }
            }
            if (Player.HoldItems.Count > 0)
            {
                Player.OnItemChanged();
            }

            //tutorial
            if (roomInfo.name == "SblueRoom" && roomInfo.firstTalk)
            {
                roomInfo.firstTalk = false;
                Camera.main.GetComponentInChildren <SpriteRenderer>().color += new Color(0, 0, 0, 1);
                StartCoroutine(fadeInOut(Camera.main.GetComponentInChildren <SpriteRenderer>(), -0.08f));
                SetTalk("yellow", 1);
                Player.Playerstate = Player.PlayerState.talk;
                Setactive(TalkUI, true);
                Player.setAnimation(Player.PlayerState.bed);
            }

            if (roomInfo.firstIn)  //is first in
            {
                roomInfo.firstIn = false;
            }
            SaveData._data.setRoomInfo(roomInfo.name, roomInfo);//save room
        }
    }
예제 #2
0
    private void Awake()
    {
        if (game == null)
        {
            game = this;
        }

#if UNITY_EDITOR
        if (SceneManager.GetActiveScene().name == "Sopen")
        {
            CSV.GetInstance().loadFile(Application.dataPath + "/Resources", "opentest1221");                                               //loadCSV
        }
        else if (SceneManager.GetActiveScene().name == "SmainFake")
        {
            CSV.GetInstance().loadFile(Application.dataPath + "/Resources", "fakeopentest1223");
        }
        else if (SceneManager.GetActiveScene().name == "Sbird" || SceneManager.GetActiveScene().name == "Schuchu" || SceneManager.GetActiveScene().name == "Sroad")
        {
            CSV.GetInstance().loadFile(Application.dataPath + "/Resources", "artest0524");
        }
        else
        {
            CSV.GetInstance().loadFile(Application.dataPath + "/Resources", "test1223"); //loadCSV
        }
#else
        if (SceneManager.GetActiveScene().name == "Sopen")
        {
            CSV.GetInstance().loadFile(Application.dataPath + "/StreamingAssets", "opentest1221");                                               //loadCSV
        }
        else if (SceneManager.GetActiveScene().name == "SmainFake")
        {
            CSV.GetInstance().loadFile(Application.dataPath + "/StreamingAssets", "fakeopentest1223");
        }
        else if (SceneManager.GetActiveScene().name == "Sbird" || SceneManager.GetActiveScene().name == "Schuchu" || SceneManager.GetActiveScene().name == "Sroad")
        {
            CSV.GetInstance().loadFile(Application.dataPath + "/StreamingAssets", "artest0524");
        }
        else
        {
            CSV.GetInstance().loadFile(Application.dataPath + "/StreamingAssets", "test1223"); //loadCSV
        }
#endif


        if (SceneManager.GetActiveScene().name == "SblueRoom")
        {
            SaveData._data.tutorialEnd = true;
        }
        else if (SceneManager.GetActiveScene().name == "Sout")
        {
            SaveData._data.tutorialEnd = false;
        }
        //load player position
        if (SaveData._data.tutorialEnd)
        {
            SaveData.SceneInfo roomInfo = SaveData._data.getRoomInfo(SceneManager.GetActiveScene().name);

            if ((roomInfo.name != "SblueRoom" || !roomInfo.firstTalk))
            {
                Debug.Log(SaveData._data.nowScene);
                Player.transform.position = GameObject.Find(SaveData._data.nowScene).transform.position;
                SaveData._data.playerPos  = Player.transform.position;
            }
            SaveData._data.nowScene = roomInfo.name;//first set scene name
        }

        Items = GameObject.FindGameObjectsWithTag("item");

        if (SceneManager.GetActiveScene().name != "Stitle" && SceneManager.GetActiveScene().name != "ARcamera" && SceneManager.GetActiveScene().name != "Sanimation")
        {
            _talky = _TalkUI.GetComponent <Talk>();
        }
    }
예제 #3
0
 private void OnMouseDown()
 {
     if (_canInteractive)
     {
         if (!SaveData._data.playerHasBook && itemName != "book")
         {
             SetTalk();
         }
         else
         {
             //
             if (OnItemClicked != null)
             {
                 OnItemClicked(this, EventArgs.Empty);//分發事件
             }
             if (itemName == "2to3" || itemName == "3to2" || itemName == "2to1" || itemName == "1to2")
             {
                 //矯正誤差,讓玩家移動到定點再開始播動畫
                 Vector3 pointPos = transform.GetChild(0).position; pointPos.y = player.transform.position.y; pointPos.z = 1;
                 StartCoroutine(gotoPoint(Player.PlayerState.offset, pointPos, itemName, walkSpeed));
             }
             if (itemName == "Smain" || itemName == "Sbalcony" || itemName == "SredRoom" || itemName == "SblueRoom" || itemName == "SpurpleRoom")
             {
                 if (itemName == "SpurpleRoom")
                 {
                     //check diary and set ending
                     SaveData._data.ending = 7;
                     bool[] _hasdiary = SaveData._data.getDiaryInfo();
                     for (int i = 0; i < _hasdiary.Length; i++)
                     {
                         if (!_hasdiary[i])
                         {
                             SaveData._data.ending = 6;//無止境的實驗
                             break;
                         }
                     }
                 }
                 //TODO: go to door animation
                 //save player hold item
                 SaveData._data.player.itemName.Clear();//清空
                 foreach (string _item in GameManager.game.Player.HoldItems)
                 {
                     SaveData._data.player.itemName.Add(_item);
                 }
                 //save scene item
                 SaveData.SceneInfo roomInfo = SaveData._data.getRoomInfo(SaveData._data.nowScene);
                 roomInfo.itemName = new String[GameObject.FindGameObjectsWithTag("item").Length];
                 for (int i = 0; i < GameObject.FindGameObjectsWithTag("item").Length; i++)
                 {
                     roomInfo.itemName[i] = GameObject.FindGameObjectsWithTag("item")[i].name;
                 }
                 SaveData._data.setRoomInfo(SaveData._data.nowScene, roomInfo);
                 GameManager.game.changeSceneWithFade(itemName);
             }
             if (itemName == "SstorageRoom")
             {
                 //TODO: go to door ani
                 FindObjectOfType <Storage>().goIn(true);
             }
             else if (itemName == "StorageInDoor")
             {
                 GameManager.game.Player.SetPlayerState(2);
                 GetComponent <Storage>().goOut(false);
             }
             if (itemName == "Sout")
             {//結局
                 GameManager.game.OutUI.SetActive(true);
                 player.Playerstate = Player.PlayerState.read;
             }
             if (itemName == "mouse")
             {//特例
                 GetComponent <SpriteRenderer>().enabled = true;
                 Destroy(GameObject.Find("cheese_02_target"));
             }
             if (itemName == "lizard")
             {
                 GameManager.game.LizardUI.SetActive(true);
                 SoundManager.sound.playOne(SoundManager.sound.uise.click[0]);
             }
             if (itemName == "password")
             {
                 GameManager.game.ComputerUI.SetActive(true);
                 SoundManager.sound.playOne(SoundManager.sound.uise.click[0]);
                 player.Playerstate = Player.PlayerState.read;
             }
             if (canPick)
             {
                 GameManager.game.Player.Playerstate = Player.PlayerState.pick;
                 SoundManager.sound.playOne(SoundManager.sound.playerse.pick);
                 Vector3 pointPos = Camera.main.transform.position; pointPos.z = 0.0f;
                 StartCoroutine(itemGotoPoint(pointPos));
             }
             if (canTalk)
             {
                 SetTalk();
             }
         }
     }
 }