Esempio n. 1
0
        private Datos Casillas(Datos partida)
        {
            partida.casillas = new PartidaCasilla[Escenario.Generar.Escenario.instancia.casillas.Length];

            int i = 0;

            foreach (Assets.Casilla casilla in Escenario.Generar.Escenario.instancia.casillas)
            {
                if (casilla != null)
                {
                    partida.casillas[i]           = new PartidaCasilla();
                    partida.casillas[i].idCasilla = casilla.id;

                    if (casilla.isla != null)
                    {
                        partida.casillas[i].idIsla = casilla.isla.id;
                    }
                    else
                    {
                        partida.casillas[i].idIsla = 9999;
                    }

                    partida.casillas[i].coordenadas = new VectorTres(casilla.posicion);
                    partida.casillas[i].rotacion    = casilla.rotacion;

                    partida.casillas[i].recursoPuesto = casilla.recursoPuesto;

                    if (casilla.recursoPuesto == true)
                    {
                        partida.casillas[i].recurso.id       = casilla.recursoID;
                        partida.casillas[i].recurso.posicion = new VectorTres(casilla.recursoPosicion);
                        partida.casillas[i].recurso.rotacion = new VectorTres(casilla.recurso.transform.localEulerAngles);

                        GameObject        recurso  = casilla.recurso;
                        Escenario.Recurso recurso2 = recurso.GetComponent <Escenario.Recurso>();
                        partida.casillas[i].recurso.cantidad = recurso2.cantidad;

                        if (recurso2.subrecursos != null)
                        {
                            partida.casillas[i].recurso.subrecursos = new bool[recurso2.subrecursos.Count];

                            int j = 0;
                            foreach (GameObject subrecurso in recurso2.subrecursos)
                            {
                                if (subrecurso != null)
                                {
                                    partida.casillas[i].recurso.subrecursos[j] = subrecurso.activeSelf;
                                }

                                j += 1;
                            }
                        }
                    }

                    i += 1;
                }
            }

            return(partida);
        }
Esempio n. 2
0
        private void Casillas(Datos partida)
        {
            Escenario.Generar.Escenario.instancia.casillas = new Assets.Casilla[partida.escenario.tamañoEscenarioX, partida.escenario.tamañoEscenarioZ];

            int i = 0;

            while (i < partida.casillas.Length)
            {
                GameObject  prefab    = null;
                int         idCasilla = 0;
                Assets.Isla isla      = null;

                if (partida.casillas[i].idIsla != 9999)
                {
                    foreach (Assets.Isla isla2 in Gestor.instancia.islas)
                    {
                        if (partida.casillas[i].idIsla == isla2.id)
                        {
                            foreach (Assets.Casilla casilla in isla2.casillas)
                            {
                                if (partida.casillas[i].idCasilla == casilla.id)
                                {
                                    prefab    = casilla.prefab;
                                    idCasilla = casilla.id;
                                    isla      = isla2;
                                }
                            }
                        }
                    }
                }
                else
                {
                    Assets.Casilla agua = Escenario.Generar.Escenario.instancia.casillasDebug[Escenario.Generar.Escenario.instancia.casillasDebug.Length - 1];
                    prefab    = agua.prefab;
                    idCasilla = agua.id;
                }

                if (prefab != null)
                {
                    Vector3 posicionFinal = partida.casillas[i].coordenadas.ObtenerVector3();
                    int     x             = (int)posicionFinal.x;
                    int     z             = (int)posicionFinal.z;

                    if (partida.escenario.casillasEscala != 0.5f)
                    {
                        posicionFinal.x = (posicionFinal.x + posicionFinal.x * (partida.escenario.casillasEscala * 1.5f)) - (partida.escenario.tamañoEscenarioX / (partida.escenario.casillasEscala + 0.5f));
                        posicionFinal.y = posicionFinal.y + posicionFinal.y * (partida.escenario.casillasEscala * 1.5f);
                        posicionFinal.z = (posicionFinal.z + posicionFinal.z * (partida.escenario.casillasEscala * 1.5f)) - (partida.escenario.tamañoEscenarioZ / (partida.escenario.casillasEscala + 0.5f));
                    }

                    GameObject casilla2 = Instantiate(prefab, posicionFinal, Quaternion.identity);
                    casilla2.gameObject.transform.Rotate(Vector3.up, partida.casillas[i].rotacion, Space.World);
                    casilla2.gameObject.transform.localScale = new Vector3(partida.escenario.casillasEscala, partida.escenario.casillasEscala, partida.escenario.casillasEscala);

                    Assets.Casilla casilla3 = new Assets.Casilla(idCasilla, partida.casillas[i].rotacion, partida.casillas[i].coordenadas.ObtenerVector3());
                    casilla3.id     = idCasilla;
                    casilla3.prefab = casilla2;
                    casilla3.prefab.gameObject.layer = LayerMask.NameToLayer("Terreno");

                    Escenario.Generar.Escenario.instancia.casillas[x, z] = casilla3;

                    if (isla != null)
                    {
                        casilla3.isla = isla;

                        casilla3.recursoPuesto = partida.casillas[i].recursoPuesto;

                        if (partida.casillas[i].recursoPuesto == true)
                        {
                            GameObject recurso1 = Instantiate(isla.recursos[partida.casillas[i].recurso.id]);
                            recurso1.transform.SetParent(Escenario.Generar.Escenario.instancia.casillas[x, z].prefab.transform);
                            recurso1.transform.localPosition = partida.casillas[i].recurso.posicion.ObtenerVector3();
                            recurso1.gameObject.transform.Rotate(partida.casillas[i].recurso.rotacion.ObtenerVector3(), Space.World);

                            Escenario.Recurso recurso2 = recurso1.GetComponent <Escenario.Recurso>();
                            recurso2.cantidad = partida.casillas[i].recurso.cantidad;

                            if (partida.casillas[i].recurso.subrecursos.Length > 0)
                            {
                                int j = 0;
                                while (j < recurso2.subrecursos.Count)
                                {
                                    if (recurso2.subrecursos[j] != null)
                                    {
                                        recurso2.subrecursos[j].SetActive(partida.casillas[i].recurso.subrecursos[j]);
                                    }

                                    j += 1;
                                }
                            }
                        }
                    }
                }

                i += 1;
            }
        }