Ejemplo n.º 1
0
    public void zapis()
    {
        if (lokalizacja_zapisu != null)
        {
            GameObject        gamemaster  = GameObject.Find("GameMaster");                                    //przechowuje dane obiektu
            GameObject        postać      = GameObject.FindGameObjectWithTag("Gracz");                        //przechowuje dane obiektu
            List <GameObject> wojownik    = new List <GameObject>();                                          //przechowuje liste danych obiektów
            List <GameObject> uzdrowiciel = new List <GameObject>();                                          //przechowuje liste danych obiektów
            List <GameObject> robotnik    = new List <GameObject>();                                          //przechowuje liste danych obiektów
            List <GameObject> jednostki   = new List <GameObject>(GameObject.FindGameObjectsWithTag("Unit")); //przechowuje znalezioną listę obiektó
            if (GameObject.FindGameObjectWithTag("Czepion"))
            {
                List <GameObject> czepioni = new List <GameObject>(GameObject.FindGameObjectsWithTag("Czepion"));            //przechowuje znalezioną listę obiektó
                foreach (var item in czepioni)
                {
                    jednostki.Add(item);            //dodawanie obiektu do listy
                }
            }
            foreach (var item in jednostki)
            {
                if (item.name.Contains("wojownik"))
                {
                    wojownik.Add(item);                    //dodawanie obiektu do listy
                }
                if (item.name.Contains("uzdrowiciel"))
                {
                    uzdrowiciel.Add(item);                    //dodawanie obiektu do listy
                }
                if (item.name.Contains("robotnik"))
                {
                    robotnik.Add(item);                    //dodawanie obiektu do listy
                }
            }


            List <GameObject> drzewa  = new List <GameObject>(GameObject.FindGameObjectsWithTag("drzewo")); //przechowuje znalezioną listę obiektó
            List <GameObject> chaty   = new List <GameObject>(GameObject.FindGameObjectsWithTag("chata"));  //przechowuje znalezioną listę obiektó
            klasa_do_zapisu   _obiekt = new klasa_do_zapisu();                                              //odnośnik do skryptu
            _obiekt.nazwa_sceny = Application.loadedLevelName;                                              //przypisanie ciągu znaków
            klasa_do_zapisu.dane_postaci dane_postaci = new klasa_do_zapisu.dane_postaci();                 //przechowuje strukture
            dane_postaci.położenie_x = postać.transform.position.x;                                         //przypisuje wartość
            dane_postaci.położenie_y = postać.transform.position.y;                                         //przypisuje wartość
            dane_postaci.położenie_z = postać.transform.position.z;                                         //przypisuje wartość
            dane_postaci.grupa       = postać.GetComponent <przynależność> ().Grupa;                        //przypisuje wartość
            dane_postaci.nr_oddziału = postać.GetComponent <przynależność> ().Nr_oddziału;                  //przypisuje wartość
            dane_postaci.stan_życia  = postać.GetComponent <Życie> ().currentHealth;                        //przypisuje wartość
            dane_postaci.stan_many   = postać.GetComponent <mana>().stan_many;                              //przypisuje wartość
            _obiekt.postaci          = dane_postaci;                                                        //przypisanie struktury
            foreach (var item in wojownik)
            {
                klasa_do_zapisu.dane_wojownika dane = new klasa_do_zapisu.dane_wojownika(); //przechowuje strukture
                dane.tag         = item.tag;                                                //przypisanie ciągu znaków
                dane.położenie_x = item.transform.position.x;                               //przypisuje wartość
                dane.położenie_y = item.transform.position.y;                               //przypisuje wartość
                dane.położenie_z = item.transform.position.z;                               //przypisuje wartość
                dane.grupa       = item.GetComponent <przynależność> ().Grupa;              //przypisuje wartość
                dane.nr_oddziału = item.GetComponent <przynależność> ().Nr_oddziału;        //przypisuje wartość
                dane.stan_życia  = item.GetComponent <Życie> ().currentHealth;              //przypisuje wartość
                dane.nowy_cel    = item.GetComponent <AI_wojownika> ().nowy_cel.ToString();
                dane.cel_x       = item.GetComponent <AI_wojownika> ().cel.x;               //przypisuje wartość
                dane.cel_y       = item.GetComponent <AI_wojownika> ().cel.y;               //przypisuje wartość
                dane.cel_z       = item.GetComponent <AI_wojownika> ().cel.z;               //przypisuje wartość
                _obiekt.wojownik.Add(dane);                                                 //dodaje syrukture do listy
            }
            foreach (var item in uzdrowiciel)
            {
                klasa_do_zapisu.dane_uzdrowiciela dane = new klasa_do_zapisu.dane_uzdrowiciela(); //przechowuje strukture
                dane.tag         = item.tag;                                                      //przypisanie ciągu znaków
                dane.położenie_x = item.transform.position.x;                                     //przypisuje wartość
                dane.położenie_y = item.transform.position.y;                                     //przypisuje wartość
                dane.położenie_z = item.transform.position.z;                                     //przypisuje wartość
                dane.grupa       = item.GetComponent <przynależność> ().Grupa;                    //przypisuje wartość
                dane.nr_oddziału = item.GetComponent <przynależność> ().Nr_oddziału;              //przypisuje wartość
                dane.stan_życia  = item.GetComponent <Życie> ().currentHealth;                    //przypisuje wartość
                dane.cel_x       = item.GetComponent <do_celu> ()._cel.x;                         //przypisuje wartość
                dane.cel_y       = item.GetComponent <do_celu> ()._cel.y;                         //przypisuje wartość
                dane.cel_z       = item.GetComponent <do_celu> ()._cel.z;                         //przypisuje wartość
                _obiekt.uzdrowiciel.Add(dane);                                                    //dodaje syrukture do listy
            }
            foreach (var item in robotnik)
            {
                klasa_do_zapisu.dane_robotnik dane = new klasa_do_zapisu.dane_robotnik(); //przechowuje strukture
                dane.położenie_x = item.transform.position.x;                             //przypisuje wartość
                dane.położenie_y = item.transform.position.y;                             //przypisuje wartość
                dane.położenie_z = item.transform.position.z;                             //przypisuje wartość
                dane.grupa       = item.GetComponent <przynależność> ().Grupa;            //przypisuje wartość
                dane.nr_oddziału = item.GetComponent <przynależność> ().Nr_oddziału;      //przypisuje wartość
                dane.stan_życia  = item.GetComponent <Życie> ().currentHealth;            //przypisuje wartość
                dane.ilość       = item.GetComponent <zbieranie_sórowców>().niesiony;     //przypisuje wartość
                _obiekt.robotnik.Add(dane);                                               //dodaje syrukture do listy
            }
            foreach (var item in chaty)
            {
                klasa_do_zapisu.dane_chat dane = new klasa_do_zapisu.dane_chat();    //przechowuje strukture
                dane.położenie_x = item.transform.position.x;                        //przypisuje wartość
                dane.położenie_y = item.transform.position.y;                        //przypisuje wartość
                dane.położenie_z = item.transform.position.z;                        //przypisuje wartość
                dane.rotacja_x   = item.transform.rotation.x;                        //przypisuje wartość
                dane.rotacja_y   = item.transform.rotation.y;                        //przypisuje wartość
                dane.rotacja_z   = item.transform.rotation.z;                        //przypisuje wartość
                dane.rotacja_w   = item.transform.rotation.w;                        //przypisuje wartość
                dane.grupa       = item.GetComponent <przynależność> ().Grupa;       //przypisuje wartość
                dane.nr_oddziału = item.GetComponent <przynależność> ().Nr_oddziału; //przypisuje wartość
                dane.stan_życia  = item.GetComponent <Życie> ().currentHealth;       //przypisuje wartość
                foreach (var item1 in item.GetComponent <produkcja>().kolejka)
                {
                    dane.kolejka.Add(item1.name);                    //dodaje ciągu znaków do listy
                }

                dane.czas = item.GetComponent <produkcja>().pasek_produkcji.value; //przypisuje wartość
                _obiekt.chata.Add(dane);                                           //dodaje syrukture do listy
            }
            foreach (var item in drzewa)
            {
                klasa_do_zapisu.dane_drzew dane = new klasa_do_zapisu.dane_drzew(); //przechowuje strukture
                dane.położenie_x = item.transform.position.x;                       //przypisuje wartość
                dane.położenie_y = item.transform.position.y;                       //przypisuje wartość
                dane.położenie_z = item.transform.position.z;                       //przypisuje wartość
                dane.ilość       = item.GetComponent <Surowce>().ilość;             //przypisuje wartość
                _obiekt.drzewa.Add(dane);                                           //dodaje syrukture do listy
            }
            GameObject _UI = GameObject.Find("UI panel");                           //przechowuje dane obiektu
            foreach (var item in _UI.GetComponent <zadania>().cele_do_zniszczenia)
            {
                klasa_do_zapisu.dane_zadań dane = new klasa_do_zapisu.dane_zadań();          //przechowuje strukture
                dane.tag         = item.tag;                                                 //przypisanie ciągu znaków
                dane.położenie_x = item.transform.position.x;                                //przypisuje wartość
                dane.położenie_y = item.transform.position.y;                                //przypisuje wartość
                dane.położenie_z = item.transform.position.z;                                //przypisuje wartość
                _obiekt.zadania.Add(dane);                                                   //dodaje syrukture do listy
            }
            klasa_do_zapisu.dane_GameMaster dane_GM = new klasa_do_zapisu.dane_GameMaster(); //przechowuje strukture
            dane_GM.ilość      = gamemaster.GetComponent <Surowce>().ilość;                  //przypisuje wartość
            _obiekt.GameMaster = dane_GM;                                                    //przypisuje strukture
            dane_do_string     = serializacjaobiektów(_obiekt);                              //przypisanie ciągu znaków
            zapis_do_xml();                                                                  //aktywacja funkcji

            lokalizacja_zapisu = null;                                                       //usuwanie zawartości
        }
    }
    public void wczytywanie()
    {
        if (plik != null)
        {
            odczyt_z_XML();                                            //aktywacja funkcji
            _klasa_do_zapisu = (klasa_do_zapisu)deserializacja(_dane); //przypisanie danych
            if (Application.loadedLevelName != _klasa_do_zapisu.nazwa_sceny)
            {
                pomocne_wczytywanie1 = (GameObject)Instantiate(pomocne_wczytywanie);          //tworzy obiekt
                pomocne_wczytywanie1.GetComponent <wczytywanie_z_innej_sceny>().zapis = plik; //przypisanie ciągu znaków
                DontDestroyOnLoad(pomocne_wczytywanie1);                                      //uniemożliwia zniszczenie obiektu przy przejściu do następnej sceny
                Application.LoadLevel(_klasa_do_zapisu.nazwa_sceny);                          //przechodzi do wybranej sceny
            }
            else
            {
                GameObject _UI = GameObject.Find("UI panel");             //przechowuje dane obiektu
                _UI.GetComponent <zadania>().enabled = false;             //wyłącza skrypt
                _UI.GetComponent <zadania>().cele_do_zniszczenia.Clear(); //czyści listę
                if (GameObject.FindGameObjectWithTag("Unit"))
                {
                    List <GameObject> lista = new List <GameObject> (GameObject.FindGameObjectsWithTag("Unit"));                                           //przechowuje znalezioną listę obiektów
                    foreach (var item in lista)
                    {
                        Destroy(item);                                                         //niszczy obiekt
                    }
                }
                if (GameObject.FindGameObjectWithTag("drzewo"))
                {
                    List <GameObject> lista = new List <GameObject> (GameObject.FindGameObjectsWithTag("drzewo"));                   //przechowuje znalezioną listę obiektó
                    foreach (var item in lista)
                    {
                        Destroy(item);                                          //niszczy obiekt
                    }
                }
                if (GameObject.FindGameObjectWithTag("Czepion"))
                {
                    List <GameObject> lista = new List <GameObject> (GameObject.FindGameObjectsWithTag("Czepion"));                   //przechowuje znalezioną listę obiektó
                    foreach (var item in lista)
                    {
                        Destroy(item);                         //niszczy obiekt
                    }
                }
                if (GameObject.FindGameObjectWithTag("chata"))
                {
                    List <GameObject> lista = new List <GameObject> (GameObject.FindGameObjectsWithTag("chata"));                   //przechowuje znalezioną listę obiektó
                    foreach (var item in lista)
                    {
                        Destroy(item);                         //niszczy obiekt
                    }
                }
                GameObject.Find("GameMaster").GetComponent <nadawanie_celu>().lista_w_oddziale.Clear();
                foreach (var item in _klasa_do_zapisu.drzewa)
                {
                    GameObject _obiekt;                                                                                                                      //przechowuje dane obiektu
                    _obiekt = (GameObject)Instantiate(drzewo, new Vector3(item.położenie_x, item.położenie_y, item.położenie_z), drzewo.transform.rotation); //tworzy obiekt w przestrzeni
                    _obiekt.GetComponent <Surowce> ().ilość = item.ilość;                                                                                    //przypisuje wartość
                }
                foreach (var item in _klasa_do_zapisu.chata)
                {
                    GameObject _obiekt;                                                                                                                                                                          //przechowuje dane obiektu
                    _obiekt = (GameObject)Instantiate(chata, new Vector3(item.położenie_x, item.położenie_y, item.położenie_z), new Quaternion(item.rotacja_x, item.rotacja_y, item.rotacja_z, item.rotacja_w)); //tworzy obiekt w przestrzeni
                    _obiekt.GetComponent <przynależność> ().Grupa       = item.grupa;                                                                                                                            //przypisuje wartość
                    _obiekt.GetComponent <przynależność> ().Nr_oddziału = item.nr_oddziału;                                                                                                                      //przypisuje wartość
                    _obiekt.GetComponent <Życie> ().currentHealth       = item.stan_życia;                                                                                                                       //przypisuje wartość
                    foreach (var item1 in item.kolejka)
                    {
                        if (item1 == "wojownik")
                        {
                            _obiekt.GetComponent <produkcja>().kolejka.Add(wojownik);                           //dodaje obiekt do listy
                        }
                        if (item1 == "uzdrowiciel")
                        {
                            _obiekt.GetComponent <produkcja>().kolejka.Add(uzdrowiciel);                           //dodaje obiekt do listy
                        }
                        if (item1 == "robotnik")
                        {
                            _obiekt.GetComponent <produkcja>().kolejka.Add(robotnik);                           //dodaje obiekt do listy
                        }
                    }
                    _obiekt.GetComponent <produkcja>().pasek_produkcji.value = item.czas;                 //przypisuje wartość
                }
                if (GameObject.Find("Postac"))
                {
                    klasa_do_zapisu.dane_postaci wczytywany_obiekt = _klasa_do_zapisu.postaci;
                    GameObject.Find("Postac").transform.position = new Vector3(wczytywany_obiekt.położenie_x, wczytywany_obiekt.położenie_y, wczytywany_obiekt.położenie_z); //przypisuje wartość
                    GameObject.Find("Postac").GetComponent <przynależność> ().Grupa       = wczytywany_obiekt.grupa;                                                         //przypisuje wartość
                    GameObject.Find("Postac").GetComponent <przynależność> ().Nr_oddziału = wczytywany_obiekt.nr_oddziału;                                                   //przypisuje wartość
                    GameObject.Find("Postac").GetComponent <Życie> ().currentHealth       = wczytywany_obiekt.stan_życia;                                                    //przypisuje wartość
                    GameObject.Find("Postac").GetComponent <mana> ().stan_many            = wczytywany_obiekt.stan_many;                                                     //przypisuje wartość
                }
                foreach (var item in _klasa_do_zapisu.wojownik)
                {
                    GameObject _obiekt;                                                                                                                          //przechowuje dane obiektu
                    _obiekt = (GameObject)Instantiate(wojownik, new Vector3(item.położenie_x, item.położenie_y, item.położenie_z), wojownik.transform.rotation); //tworzy obiekt w przestrzeni

                    _obiekt.GetComponent <przynależność> ().Grupa       = item.grupa;                                                                            //przypisuje wartość
                    _obiekt.GetComponent <przynależność> ().Nr_oddziału = item.nr_oddziału;                                                                      //przypisuje wartość
                    _obiekt.GetComponent <Życie> ().currentHealth       = item.stan_życia;                                                                       //przypisuje wartość
                    _obiekt.GetComponent <AI_wojownika> ().nowy_cel     = (item.nowy_cel == "true");                                                             //przypisuje wartość
                    _obiekt.GetComponent <AI_wojownika> ().cel          = new Vector3(item.cel_x, item.cel_y, item.cel_z);                                       //przypisuje wartość
                }
                foreach (var item in _klasa_do_zapisu.uzdrowiciel)
                {
                    GameObject _obiekt;                                                                                                                                //przechowuje dane obiektu
                    _obiekt = (GameObject)Instantiate(uzdrowiciel, new Vector3(item.położenie_x, item.położenie_y, item.położenie_z), uzdrowiciel.transform.rotation); //tworzy obiekt w przestrzeni
                    _obiekt.GetComponent <przynależność> ().Grupa       = item.grupa;                                                                                  //przypisuje wartość
                    _obiekt.GetComponent <przynależność> ().Nr_oddziału = item.nr_oddziału;                                                                            //przypisuje wartość
                    _obiekt.GetComponent <Życie> ().currentHealth       = item.stan_życia;                                                                             //przypisuje wartość
                    _obiekt.GetComponent <mana>().stan_many             = item.stan_many;                                                                              //przypisuje wartość
                    _obiekt.GetComponent <do_celu> ()._cel = new Vector3(item.cel_x, item.cel_y, item.cel_z);                                                          //przypisuje wartość
                    if (_obiekt.GetComponent <do_celu> ()._cel != new Vector3(0, 0, 0))
                    {
                        _obiekt.GetComponent <do_celu> ().Idź(_obiekt.GetComponent <do_celu> ()._cel);                      //przypisuje wartość
                    }
                }
                foreach (var item in _klasa_do_zapisu.robotnik)
                {
                    GameObject _obiekt;                                                                                                                          //przechowuje dane obiektu
                    _obiekt = (GameObject)Instantiate(robotnik, new Vector3(item.położenie_x, item.położenie_y, item.położenie_z), robotnik.transform.rotation); //tworzy obiekt w przestrzeni
                    _obiekt.GetComponent <przynależność> ().Grupa         = item.grupa;                                                                          //przypisuje wartość
                    _obiekt.GetComponent <przynależność> ().Nr_oddziału   = item.nr_oddziału;                                                                    //przypisuje wartość
                    _obiekt.GetComponent <Życie> ().currentHealth         = item.stan_życia;                                                                     //przypisuje wartość
                    _obiekt.GetComponent <zbieranie_sórowców> ().niesiony = item.ilość;                                                                          //przypisuje wartość
                }

                GameObject.Find("GameMaster").GetComponent <Surowce> ().ilość = _klasa_do_zapisu.GameMaster.ilość;                //przypisuje wartość
                foreach (var item in _klasa_do_zapisu.zadania)
                {
                    Vector3           położenie = new Vector3(item.położenie_x, item.położenie_y, item.położenie_z);      //tworzy punkt w przestrzeni
                    List <GameObject> szukanie  = new List <GameObject>(GameObject.FindGameObjectsWithTag(item.tag));     //tworzy liste obiektów
                    foreach (var item1 in szukanie)
                    {
                        if (item1.transform.position == położenie)
                        {
                            _UI.GetComponent <zadania>().cele_do_zniszczenia.Add(item1);                           //dodaje do listy
                        }
                    }
                }
                _UI.GetComponent <zadania>().enabled = true;
                Time.timeScale = 1;              //zmiana prędkości
                plik           = null;           //czyszczenie
            }
        }
    }