Ejemplo n.º 1
0
    public static void Savecutscene(CutscenePrepare cutsceneControl)
    {
        BinaryFormatter formatter = new BinaryFormatter();
        string          path      = Application.persistentDataPath + "/cutscene.fun";
        FileStream      stream    = new FileStream(path, FileMode.Create);
        CutSceneData    data      = new CutSceneData(cutsceneControl);

        formatter.Serialize(stream, data);
        stream.Close();
    }
    public IEnumerator Reload(string level)
    {
        player.Instance.CutsceneMode = true;
        MusicControl.Instance.ChangeMusic(1);
        SetupLoading(true);
        SaturationControl.lastIndex = System.Array.IndexOf(Levels, level);
        List <string> listUnload  = new List <string>();
        bool          haveExterno = false;

        for (int i = 0; i < SceneManager.sceneCount; i++)
        {
            if (SceneManager.GetSceneAt(i).name == "Externo")
            {
                haveExterno = true;
            }
            if (SceneManager.GetSceneAt(i).name != "HUB" && SceneManager.GetSceneAt(i).name != "Externo")
            {
                listUnload.Add(SceneManager.GetSceneAt(i).name);
            }
        }
        if (haveExterno)
        {
            yield return(SceneManager.UnloadSceneAsync("Externo"));
        }
        while (listUnload.Count > 0)
        {
            yield return(SceneManager.UnloadSceneAsync(listUnload[0]));

            listUnload.RemoveAt(0);
            yield return(new WaitForSeconds(0.2f));
        }
        int indexToStop = System.Array.IndexOf(Levels, level);
        int startPoint  = 0;

        if (indexToStop >= 0 && indexToStop <= 7)
        {
            indexToStop += 0;
            startPoint   = 0;
            for (int i = 0; i < LevelLoader.Instance.Levels.Length; i++)
            {
                yield return(SceneManager.LoadSceneAsync(LevelLoader.Instance.Levels[i], LoadSceneMode.Additive));

                yield return(new WaitForSeconds(0.2f));
            }
        }
        else if (indexToStop >= 8 && indexToStop <= 15)
        {
            indexToStop += 1;
            startPoint   = 7;
        }
        else if (indexToStop >= 16 && indexToStop <= 23)
        {
            indexToStop += 2;
            startPoint   = 15;
        }
        else if (indexToStop >= 24 && indexToStop <= 31)
        {
            indexToStop += 3;
            startPoint   = 23;
        }
        for (int r = startPoint; r < indexToStop; r++)
        {
            for (int i = 0; i < HubEvents.Instance.levels[r].LevelLoad.Length; i++)
            {
                yield return(SceneManager.LoadSceneAsync(HubEvents.Instance.levels[r].LevelLoad[i], LoadSceneMode.Additive));

                yield return(new WaitForSeconds(0.2f));
            }
            for (int i = 0; i < HubEvents.Instance.levels[r].LevelUnload.Length; i++)
            {
                for (int p = 0; p < SceneManager.sceneCount; p++)
                {
                    if (SceneManager.GetSceneAt(p).name == HubEvents.Instance.levels[r].LevelUnload[i])
                    {
                        SceneManager.UnloadSceneAsync(HubEvents.Instance.levels[r].LevelUnload[i]);
                        yield return(new WaitForSeconds(0.2f));
                    }
                }
            }
        }
        yield return(new WaitForEndOfFrame());

        player.Instance.transform.position = HubEvents.transforms[indexToStop].transform.forward.normalized * -0.5f + new Vector3(HubEvents.transforms[indexToStop].transform.position.x, HubEvents.transforms[indexToStop].transform.position.y + 2, HubEvents.transforms[indexToStop].transform.position.z);
        player.Instance.transform.rotation = Quaternion.Euler(HubEvents.transforms[indexToStop].transform.rotation.eulerAngles.x, HubEvents.transforms[indexToStop].transform.rotation.eulerAngles.y, HubEvents.transforms[indexToStop].transform.rotation.eulerAngles.z);
        SetupLoading(false);
        player.Instance.CutsceneMode = false;
        CutscenePrepare cp = new CutscenePrepare();
        int             indexToSave = 0;
        char            A, B;
        string          final;

        if (level.Length > 6)
        {
            A     = level[5];
            B     = level[6];
            final = A.ToString() + B.ToString();
        }
        else
        {
            A     = level[5];
            final = A.ToString();
        }
        indexToSave = int.Parse(final);
        cp.index    = indexToSave;
        LoadGame.Savecutscene(cp);
    }
    private void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Player")
        {
            if (portao.GetBool("DoorBool"))
            {
                LoadGame.SavePlayer(other.gameObject.GetComponent <player>());
                CutscenePrepare cut;
                cut = new CutscenePrepare();
                switch (index)
                {
                case 0:
                    cut.index = 1;
                    break;

                case 1:
                    cut.index = 2;
                    break;

                case 2:
                    cut.index = 3;
                    break;

                case 3:
                    cut.index = 4;
                    break;

                case 4:
                    cut.index = 5;
                    break;

                case 5:
                    cut.index = 6;
                    break;

                case 6:
                    cut.index = 7;
                    break;

                case 7:
                    cut.index = 8;
                    break;

                case 8:
                    cut.index = 9;
                    break;

                case 9:
                    cut.index = 9;
                    break;

                case 10:
                    cut.index = 10;
                    break;

                case 11:
                    cut.index = 11;
                    break;

                case 12:
                    cut.index = 12;
                    break;

                case 13:
                    cut.index = 13;
                    break;

                case 14:
                    cut.index = 14;
                    break;

                case 15:
                    cut.index = 15;
                    break;

                case 16:
                    cut.index = 16;
                    break;

                case 17:
                    cut.index = 17;
                    break;

                case 18:
                    cut.index = 17;
                    break;

                case 19:
                    cut.index = 18;
                    break;

                case 20:
                    cut.index = 19;
                    break;

                case 21:
                    cut.index = 20;
                    break;

                case 22:
                    cut.index = 21;
                    break;

                case 23:
                    cut.index = 22;
                    break;

                case 24:
                    cut.index = 23;
                    break;

                case 25:
                    cut.index = 24;
                    break;

                case 26:
                    cut.index = 25;
                    break;

                case 27:
                    cut.index = 25;
                    break;

                case 28:
                    cut.index = 26;
                    break;

                case 29:
                    cut.index = 27;
                    break;

                case 30:
                    cut.index = 28;
                    break;

                case 31:
                    cut.index = 29;
                    break;

                case 32:
                    cut.index = 30;
                    break;

                case 33:
                    cut.index = 31;
                    break;

                case 34:
                    cut.index = 32;
                    break;
                }
                LoadGame.Savecutscene(cut);
            }
            if (DoorClosed)
            {
                return;
            }
            DoorClosed = true;
            portao.SetBool("DoorBool", false);
            SaturationControl.lastIndex = index;
            List <string> listUnload = new List <string>();
            for (int i = 0; i < HubEvents.Instance.levels[index].LevelUnload.Length; i++)
            {
                listUnload.Add(HubEvents.Instance.levels[index].LevelUnload[i]);
            }
            for (int i = 0; i < listUnload.Count; i++)
            {
                for (int r = 0; r < SceneManager.sceneCount; r++)
                {
                    if (SceneManager.GetSceneAt(r).name == listUnload[i])
                    {
                        SceneManager.UnloadSceneAsync(listUnload[i]);
                        break;
                    }
                }
            }
            for (int i = 0; i < HubEvents.Instance.levels[index].LevelLoad.Length; i++)
            {
                SceneManager.LoadSceneAsync(HubEvents.Instance.levels[index].LevelLoad[i], LoadSceneMode.Additive);
            }
        }
    }
 public CutSceneData(CutscenePrepare cutsceneControl)
 {
     index = cutsceneControl.index;
     //level = cutsceneControl.gameObject.scene.buildIndex;
 }