Beispiel #1
0
        public bool ComprobarCasilla3(Assets.Casilla casilla, float altura, int rotacion)
        {
            if (casilla != null)
            {
                if (ComprobarLimiteX((int)casilla.posicion.x, limitesMapa) == true && ComprobarLimiteZ((int)casilla.posicion.z, limitesMapa) == true)
                {
                    if (casilla.posicion.y == (altura + 0.5f))
                    {
                        if (casilla.rotacion == rotacion)
                        {
                            if (coloresGeneracion == false)
                            {
                                if (casilla.id == 3)
                                {
                                    return(true);
                                }
                            }
                            else
                            {
                                if (CalcularIDFinal(casilla.idDebug) == 3)
                                {
                                    return(true);
                                }
                            }
                        }
                    }
                }
            }

            return(false);
        }
Beispiel #2
0
        public bool ComprobarVacio(Assets.Casilla casilla)
        {
            if (casilla != null)
            {
                if (ComprobarLimiteX((int)casilla.posicion.x, 3) == true && ComprobarLimiteZ((int)casilla.posicion.z, 3) == true)
                {
                    if (casillas[(int)casilla.posicion.x, (int)casilla.posicion.z] != null)
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
Beispiel #3
0
        //-------------------------------------

        private int ComprobarCosta(Assets.Casilla casilla)
        {
            if (casilla == null)
            {
                return(1);
            }
            else
            {
                if (casilla.idDebug == 99)
                {
                    return(1);
                }
                else
                {
                    return(2);
                }
            }
        }
Beispiel #4
0
        private int VerificarRampa1Rotacion270(int x, int z, float altura, Assets.Casilla[,] casillas)
        {
            if (Limites.Comprobar(z - 1, 2, Escenario.instancia.tamañoEscenarioZ) == true)
            {
                if (casillas[x, z - 1] != null)
                {
                    if (Escenario.instancia.CalcularIDFinal(casillas[x, z - 1].id) < 5 && casillas[x, z - 1].idDebug != 99)
                    {
                        Assets.Isla isla = casillas[x, z - 1].isla;

                        Assets.Casilla rampa = new Assets.Casilla(5, 270, new Vector3(x, altura, z));
                        rampa.isla    = isla;
                        rampa.idDebug = 99;
                        Escenario.instancia.PonerCasilla(rampa);

                        return(1);
                    }
                }
            }

            return(0);
        }
Beispiel #5
0
        private int VerificarEsquina2Rotacion180(int x, int z, float altura, Assets.Casilla[,] casillas)
        {
            if (Limites.Comprobar(x + 1, 2, Escenario.instancia.tamañoEscenarioX) == true && Limites.Comprobar(z + 1, 2, Escenario.instancia.tamañoEscenarioZ) == true)
            {
                if (casillas[x + 1, z + 1] != null && ComprobarCosta(casillas[x + 1, z]) == 1 && ComprobarCosta(casillas[x, z + 1]) == 1)
                {
                    if (Escenario.instancia.CalcularIDFinal(casillas[x + 1, z + 1].id) < 5 && casillas[x + 1, z + 1].idDebug != 99)
                    {
                        Assets.Isla isla = casillas[x + 1, z + 1].isla;

                        Assets.Casilla esquina = new Assets.Casilla(6, 180, new Vector3(x, altura, z));
                        esquina.isla    = isla;
                        esquina.idDebug = 99;
                        Escenario.instancia.PonerCasilla(esquina);

                        return(1);
                    }
                }
            }

            return(0);
        }
Beispiel #6
0
        //-------------------------------------

        private void VerificarHuecos(int x, int z, float altura, Assets.Casilla[,] casillas)
        {
            if (Limites.Comprobar(z + 1, 2, Escenario.instancia.tamañoEscenarioX) == true && Limites.Comprobar(z - 1, 2, Escenario.instancia.tamañoEscenarioZ) == true)
            {
                if (ComprobarCosta(casillas[x, z + 1]) == 2 && ComprobarCosta(casillas[x, z - 1]) == 2)
                {
                    Assets.Isla isla = casillas[x, z + 1].isla;

                    Assets.Casilla plano = new Assets.Casilla(0, 0, new Vector3(x, altura + 0.5f, z));
                    plano.isla = isla;
                    Escenario.instancia.PonerCasilla(plano);
                }
            }

            if (Limites.Comprobar(x + 1, 2, Escenario.instancia.tamañoEscenarioX) == true && Limites.Comprobar(x - 1, 2, Escenario.instancia.tamañoEscenarioZ) == true)
            {
                if (ComprobarCosta(casillas[x + 1, z]) == 2 && ComprobarCosta(casillas[x - 1, z]) == 2)
                {
                    Assets.Isla isla = casillas[x + 1, z].isla;

                    Assets.Casilla plano = new Assets.Casilla(0, 0, new Vector3(x, altura + 0.5f, z));
                    plano.isla = isla;
                    Escenario.instancia.PonerCasilla(plano);
                }
            }

            if (Limites.Comprobar(x + 1, 2, Escenario.instancia.tamañoEscenarioX) == true && Limites.Comprobar(x - 1, 2, Escenario.instancia.tamañoEscenarioX) == true && Limites.Comprobar(z + 1, 2, Escenario.instancia.tamañoEscenarioZ) == true && Limites.Comprobar(z - 1, 2, Escenario.instancia.tamañoEscenarioZ) == true)
            {
                if (ComprobarCosta(casillas[x + 1, z]) == 2 && ComprobarCosta(casillas[x, z + 1]) == 2 && ComprobarCosta(casillas[x - 1, z - 1]) == 2)
                {
                    Assets.Isla isla = casillas[x + 1, z].isla;

                    Assets.Casilla plano = new Assets.Casilla(0, 0, new Vector3(x, altura + 0.5f, z));
                    plano.isla = isla;
                    Escenario.instancia.PonerCasilla(plano);
                }
            }
        }
Beispiel #7
0
        public override void AtacarInput()
        {
            if (recetaConstruccion == null || vistaPrevia == null || puedeUbicarConstruccion == false)
            {
                return;
            }

            GameObject objetoConstruir = recetaConstruccion.prefab;
            Vector3    coordenadas     = vistaPrevia.transform.position;

            if (vistaPrevia != null)
            {
                if (recetaConstruccion.tipo == Assets.Tipos.Construccion.Suelo || recetaConstruccion.tipo == Assets.Tipos.Construccion.Pared)
                {
                    Coordenadas coordenadas2 = vistaPrevia.gameObject.GetComponent <Coordenadas>();

                    if (coordenadas2 != null)
                    {
                        Assets.Casilla casilla = Escenario.Generar.Escenario.instancia.casillas[coordenadas2.x, coordenadas2.z];

                        if (casilla != null)
                        {
                            if (recetaConstruccion.tipo == Assets.Tipos.Construccion.Suelo)
                            {
                                if (casilla.pisos == null)
                                {
                                    casilla.pisos = new List <Assets.Piso>();
                                }

                                Assets.Piso piso = new Assets.Piso();
                                piso.suelo = recetaConstruccion.prefab;

                                casilla.pisos.Add(piso);
                            }
                            else if (recetaConstruccion.tipo == Assets.Tipos.Construccion.Pared)
                            {
                                if (casilla.pisos != null)
                                {
                                    if (casilla.pisos.Count > 0)
                                    {
                                        Assets.Piso piso = casilla.pisos[casilla.pisos.Count - 1];
                                        piso.pared = recetaConstruccion.prefab;
                                    }
                                }
                            }
                        }
                    }
                }
            }

            Instantiate(objetoConstruir, coordenadas, vistaPrevia.transform.rotation);

            int i = 0;

            while (i < recetaConstruccion.costes.Length)
            {
                int j = 0;
                while (j < recetaConstruccion.costes[i].cantidad)
                {
                    Inventario.Inventario.instancia.QuitarObjeto(recetaConstruccion.costes[i].objeto);
                    j += 1;
                }

                i += 1;
            }

            recetaConstruccion = null;
            Destroy(vistaPrevia.gameObject);
            vistaPrevia             = null;
            puedeUbicarConstruccion = false;
            rotacionLibreEjeY       = 0;
        }
Beispiel #8
0
        public void Update()
        {
            if (vistaPrevia != null && recetaConstruccion != null)
            {
                if (recetaConstruccion.tipo == Assets.Tipos.Construccion.Libre)
                {
                    if (puedeRotar == true)
                    {
                        rotacionLibreEjeY = rotacionLibreEjeY + rotacionVelocidad * Time.deltaTime;

                        if (rotacionLibreEjeY > 360)
                        {
                            rotacionLibreEjeY = 0;
                        }
                    }

                    if (Time.time - ultimaUbicacionTiempo > ubicacionActualizacionVelocidad)
                    {
                        ultimaUbicacionTiempo = Time.time;

                        Ray        ray = camara.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));
                        RaycastHit hit;

                        if (Physics.Raycast(ray, out hit, ubicacionMaximaDistancia, ubicacionLayerMask) == true)
                        {
                            vistaPrevia.transform.position = hit.point;
                            vistaPrevia.transform.up       = hit.normal;
                            vistaPrevia.transform.Rotate(new Vector3(0, rotacionLibreEjeY, 0), Space.Self);

                            VistaPreviaUbicar(vistaPrevia);
                        }
                    }
                }
                else if (recetaConstruccion.tipo == Assets.Tipos.Construccion.Suelo)
                {
                    if (Time.time - ultimaUbicacionTiempo > ubicacionActualizacionVelocidad)
                    {
                        ultimaUbicacionTiempo = Time.time;

                        Ray        ray = camara.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));
                        RaycastHit hit;

                        if (Physics.Raycast(ray, out hit, ubicacionMaximaDistancia, ubicacionLayerMask) == true)
                        {
                            GameObject objeto = hit.collider.gameObject;

                            if (objeto != null)
                            {
                                Assets.Casilla casilla = null;
                                int            x       = 0;
                                int            z       = 0;

                                if (objeto.GetComponent <Coordenadas>() != null)
                                {
                                    Coordenadas coordenadas = objeto.GetComponent <Coordenadas>();
                                    x       = coordenadas.x;
                                    z       = coordenadas.z;
                                    casilla = Escenario.Generar.Escenario.instancia.casillas[x, z];
                                }

                                if (casilla != null)
                                {
                                    if (casilla.construccionPosible == true && casilla.recursoPuesto == false)
                                    {
                                        if (casilla.posicionesSuelo != null)
                                        {
                                            if (casilla.posicionesSuelo.Count > 0)
                                            {
                                                bool    enseñar  = true;
                                                Vector3 posicion = casilla.posicionesSuelo[0];

                                                if (casilla.pisos != null)
                                                {
                                                    if (casilla.pisos.Count > 0)
                                                    {
                                                        posicion.y = 2f * casilla.pisos.Count;

                                                        if (casilla.pisos.Count > 1)
                                                        {
                                                            if (casilla.pisos[casilla.pisos.Count - 1].pared is null)
                                                            {
                                                                enseñar = false;
                                                            }
                                                        }
                                                    }
                                                }

                                                if (enseñar == true)
                                                {
                                                    vistaPrevia.transform.localPosition = posicion;
                                                    vistaPrevia.transform.up            = hit.normal;
                                                    vistaPrevia.transform.SetParent(casilla.prefab.transform);

                                                    Coordenadas coordenadas = vistaPrevia.gameObject.AddComponent <Coordenadas>();
                                                    coordenadas.x = x;
                                                    coordenadas.z = z;

                                                    VistaPreviaUbicar(vistaPrevia);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                else if (recetaConstruccion.tipo == Assets.Tipos.Construccion.Pared)
                {
                    if (Time.time - ultimaUbicacionTiempo > ubicacionActualizacionVelocidad)
                    {
                        ultimaUbicacionTiempo = Time.time;

                        Ray        ray = camara.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));
                        RaycastHit hit;

                        if (Physics.Raycast(ray, out hit, ubicacionMaximaDistancia, ubicacionLayerMask) == true)
                        {
                            GameObject objeto = hit.collider.gameObject;

                            if (objeto != null)
                            {
                                Assets.Casilla casilla = null;
                                int            x       = 0;
                                int            z       = 0;

                                if (objeto.GetComponent <Coordenadas>() != null)
                                {
                                    Coordenadas coordenadas = objeto.GetComponent <Coordenadas>();
                                    x       = coordenadas.x;
                                    z       = coordenadas.z;
                                    casilla = Escenario.Generar.Escenario.instancia.casillas[x, z];
                                }

                                if (casilla != null)
                                {
                                    if (casilla.pisos != null)
                                    {
                                        if (casilla.pisos.Count > 0)
                                        {
                                            if (casilla.pisos[casilla.pisos.Count - 1].suelo != null && casilla.pisos[casilla.pisos.Count - 1].pared == null)
                                            {
                                                Vector3 posicion = casilla.posicionesParedes[casilla.pisos[casilla.pisos.Count - 1].posicionPared];

                                                //Altura-----------------

                                                if (casilla.pisos != null)
                                                {
                                                    if (casilla.pisos.Count > 2)
                                                    {
                                                        posicion.y = (2f * casilla.pisos.Count) + 0.5f - 2f;
                                                    }
                                                    else if (casilla.pisos.Count == 2)
                                                    {
                                                        posicion.y = casilla.pisos.Count + 0.5f;
                                                    }
                                                }

                                                //Rotacion---------------

                                                if (puedeRotar == true)
                                                {
                                                    float rotacionTemp = rotacionLibreEjeY;
                                                    rotacionLibreEjeY = rotacionLibreEjeY + rotacionVelocidad * Time.deltaTime;
                                                    Debug.Log(string.Format("{0} {1}", rotacionLibreEjeY, rotacionTemp));
                                                    if (rotacionLibreEjeY != rotacionTemp)
                                                    {
                                                        casilla.pisos[casilla.pisos.Count - 1].posicionPared += 1;

                                                        if (casilla.pisos[casilla.pisos.Count - 1].posicionPared > 0)
                                                        {
                                                            casilla.pisos[casilla.pisos.Count - 1].rotacionTemp = 90;
                                                        }
                                                    }

                                                    if (casilla.pisos[casilla.pisos.Count - 1].posicionPared > 3)
                                                    {
                                                        casilla.pisos[casilla.pisos.Count - 1].posicionPared = 0;
                                                        casilla.pisos[casilla.pisos.Count - 1].rotacionTemp  = 90;
                                                        rotacionLibreEjeY = 0;
                                                    }
                                                }

                                                if (casilla.pisos[casilla.pisos.Count - 1].rotacionPared != (casilla.pisos[casilla.pisos.Count - 1].rotacionTemp * casilla.pisos[casilla.pisos.Count - 1].posicionPared))
                                                {
                                                    vistaPrevia.transform.Rotate(new Vector3(0, casilla.pisos[casilla.pisos.Count - 1].rotacionTemp, 0), Space.Self);
                                                    casilla.pisos[casilla.pisos.Count - 1].rotacionPared = casilla.pisos[casilla.pisos.Count - 1].rotacionTemp * casilla.pisos[casilla.pisos.Count - 1].posicionPared;
                                                }

                                                vistaPrevia.transform.localPosition = posicion;
                                                vistaPrevia.transform.SetParent(casilla.prefab.transform);

                                                Coordenadas coordenadas = vistaPrevia.gameObject.AddComponent <Coordenadas>();
                                                coordenadas.x = x;
                                                coordenadas.z = z;

                                                VistaPreviaUbicar(vistaPrevia);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Beispiel #9
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;
            }
        }
Beispiel #10
0
        public void Generar(Assets.Casilla[,] casillas, float altura)
        {
            Assets.Isla isla  = null;
            int         rango = 3;

            for (int x = 0; x < casillas.GetLength(0); x++)
            {
                for (int z = 0; z < casillas.GetLength(1); z++)
                {
                    if (casillas[x, z] == null)
                    {
                        bool poner = false;

                        if (poner == false)
                        {
                            poner = VerificarPoner(casillas, x - rango, z - rango);

                            if (poner == true)
                            {
                                isla = casillas[x - rango, z - rango].isla;
                            }
                        }

                        if (poner == false)
                        {
                            poner = VerificarPoner(casillas, x - rango, z);

                            if (poner == true)
                            {
                                isla = casillas[x - rango, z].isla;
                            }
                        }

                        if (poner == false)
                        {
                            poner = VerificarPoner(casillas, x, z - rango);

                            if (poner == true)
                            {
                                isla = casillas[x, z - rango].isla;
                            }
                        }

                        if (poner == false)
                        {
                            poner = VerificarPoner(casillas, x + rango, z - rango);

                            if (poner == true)
                            {
                                isla = casillas[x + rango, z - rango].isla;
                            }
                        }

                        if (poner == false)
                        {
                            poner = VerificarPoner(casillas, x - rango, z + rango);

                            if (poner == true)
                            {
                                isla = casillas[x - rango, z + rango].isla;
                            }
                        }

                        if (poner == false)
                        {
                            poner = VerificarPoner(casillas, x, z + rango);

                            if (poner == true)
                            {
                                isla = casillas[x, z + rango].isla;
                            }
                        }

                        if (poner == false)
                        {
                            poner = VerificarPoner(casillas, x + rango, z);

                            if (poner == true)
                            {
                                isla = casillas[x + rango, z].isla;
                            }
                        }

                        if (poner == false)
                        {
                            poner = VerificarPoner(casillas, x + rango, z + rango);

                            if (poner == true)
                            {
                                isla = casillas[x + rango, z + rango].isla;
                            }
                        }

                        if (poner == true)
                        {
                            Assets.Casilla plano = new Assets.Casilla(isla.casillas[0].id, 0, new Vector3(x, altura, z));
                            plano.isla = isla;
                            Escenario.instancia.PonerCasilla(plano);
                        }
                    }
                }
            }
        }
Beispiel #11
0
        public void Generar(Assets.Casilla[,] casillas, float altura)
        {
            for (int x = 0; x < casillas.GetLength(0); x++)
            {
                for (int z = 0; z < casillas.GetLength(1); z++)
                {
                    if (casillas[x, z] == null)
                    {
                        VerificarHuecos(x, z, altura, casillas);
                    }
                }
            }

            for (int x = 0; x < casillas.GetLength(0); x++)
            {
                for (int z = 0; z < casillas.GetLength(1); z++)
                {
                    if (casillas[x, z] == null)
                    {
                        int ocupado = 0;

                        //-------------------------------------

                        if (ocupado == 0)
                        {
                            ocupado += VerificarEsquina3Rotacion90(x, z, altura, casillas);
                        }

                        if (ocupado == 0)
                        {
                            ocupado += VerificarEsquina3Rotacion270(x, z, altura, casillas);
                        }

                        if (ocupado == 0)
                        {
                            ocupado += VerificarEsquina3Rotacion0(x, z, altura, casillas);
                        }

                        if (ocupado == 0)
                        {
                            ocupado += VerificarEsquina3Rotacion180(x, z, altura, casillas);
                        }

                        //-------------------------------------

                        if (ocupado == 0)
                        {
                            ocupado += VerificarEsquina2Rotacion90(x, z, altura, casillas);
                        }

                        if (ocupado == 0)
                        {
                            ocupado += VerificarEsquina2Rotacion270(x, z, altura, casillas);
                        }

                        if (ocupado == 0)
                        {
                            ocupado += VerificarEsquina2Rotacion0(x, z, altura, casillas);
                        }

                        if (ocupado == 0)
                        {
                            ocupado += VerificarEsquina2Rotacion180(x, z, altura, casillas);
                        }

                        //-------------------------------------

                        if (ocupado == 0)
                        {
                            ocupado += VerificarRampa1Rotacion180(x, z, altura, casillas);
                        }

                        if (ocupado == 0)
                        {
                            ocupado += VerificarRampa1Rotacion0(x, z, altura, casillas);
                        }

                        if (ocupado == 0)
                        {
                            ocupado += VerificarRampa1Rotacion270(x, z, altura, casillas);
                        }

                        if (ocupado == 0)
                        {
                            ocupado += VerificarRampa1Rotacion90(x, z, altura, casillas);
                        }

                        //-------------------------------------

                        if (ocupado == 0)
                        {
                            Assets.Casilla plano = new Assets.Casilla(Escenario.instancia.casillasDebug.Length - 1, 0, new Vector3(x, altura + 0.25f, z));
                            Escenario.instancia.PonerCasilla(plano);
                        }
                    }
                }
            }
        }
Beispiel #12
0
        //------------------------------------------------------------------------------------------------------------------------------------

        public void PonerCasilla(Assets.Casilla casilla)
        {
            Assets.Casilla[] casillasFinal;
            int id      = casilla.id;
            int idDebug = casilla.idDebug;

            if (coloresGeneracion == false)
            {
                if (idDebug != 99)
                {
                    idDebug = id;
                }

                if (id != casillasDebug.Length - 1 && idDebug != 99)
                {
                    id = CalcularIDFinal(id);
                }

                if (casilla.isla != null)
                {
                    casillasFinal = casilla.isla.casillas;
                }
                else
                {
                    casillasFinal = casillasDebug;
                }
            }
            else
            {
                if (idDebug == 99)
                {
                    if (casilla.isla != null)
                    {
                        casillasFinal = casilla.isla.casillas;
                    }
                    else
                    {
                        casillasFinal = casillasDebug;
                    }
                }
                else
                {
                    casillasFinal = casillasDebug;
                    idDebug       = id;
                }
            }

            int x = (int)casilla.posicion.x;
            int z = (int)casilla.posicion.z;

            if (Limites.Comprobar(x, 3, tamañoEscenarioX) == true && Limites.Comprobar(z, 3, tamañoEscenarioZ) == true)
            {
                if (casillas[x, z] == null)
                {
                    Vector3 posicionFinal = casilla.posicion;

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

                    GameObject casilla2 = Instantiate(casillasFinal[id].prefab, posicionFinal, Quaternion.identity);
                    casilla2.gameObject.transform.Rotate(Vector3.up, casilla.rotacion, Space.World);
                    casilla2.gameObject.transform.localScale = new Vector3(casillasEscala, casillasEscala, casillasEscala);

                    Coordenadas coordenadas = casilla2.gameObject.AddComponent <Coordenadas>();
                    coordenadas.x = x;
                    coordenadas.z = z;

                    Assets.Casilla casilla3 = new Assets.Casilla(id, casilla.rotacion, casilla.posicion);
                    casilla3.id      = id;
                    casilla3.idDebug = idDebug;
                    casilla3.prefab  = casilla2;
                    casilla3.prefab.gameObject.layer = LayerMask.NameToLayer("Terreno");
                    casilla3.isla                = casilla.isla;
                    casilla3.recursoPuesto       = false;
                    casilla3.recursoPosible      = casillasFinal[id].recursoPosible;
                    casilla3.recursoPosicion     = casillasFinal[id].recursoPosicion;
                    casilla3.construccionPosible = casillasFinal[id].construccionPosible;
                    casilla3.posicionesSuelo     = casillasFinal[id].posicionesSuelo;
                    casilla3.posicionesParedes   = casillasFinal[id].posicionesParedes;

                    casillas[x, z] = casilla3;
                }
            }
        }
Beispiel #13
0
        //------------------------------------------------------------------------------------------------------------------------------------

        private void GenerarNivel(float altura)
        {
            foreach (Assets.Isla isla in islas)
            {
                Partida.PartidaIsla isla2 = Vectores.instancia.LeerDatos(isla.id);

                foreach (Partida.PartidaCasilla casilla in isla2.casillas)
                {
                    Vector3 casilla2 = casilla.coordenadas.ObtenerVector3();

                    if (altura == casilla2.y)
                    {
                        if (Limites.Comprobar((int)casilla2.x, 3, tamañoEscenarioX) == true && Limites.Comprobar((int)casilla2.z, 3, tamañoEscenarioZ) == true)
                        {
                            if (casillas[(int)casilla2.x, (int)casilla2.z] == null)
                            {
                                Assets.Casilla casilla3 = new Assets.Casilla(0, 0, casilla2)
                                {
                                    isla = isla
                                };

                                PonerCasilla(casilla3);
                            }
                        }
                    }
                }
            }

            foreach (Assets.Casilla subcasilla in casillas)
            {
                if (subcasilla != null)
                {
                    int x = (int)subcasilla.posicion.x;
                    int z = (int)subcasilla.posicion.z;

                    float y = subcasilla.posicion.y;
                    y = y - 0.5f;

                    if (y < 0.0f)
                    {
                        y = 0.0f;
                    }

                    if ((y > 0) && (altura == subcasilla.posicion.y) && Limites.Comprobar(x, 2, tamañoEscenarioX) == true && Limites.Comprobar(z, 2, tamañoEscenarioZ) == true)
                    {
                        if (casillas[x - 1, z - 1] == null)
                        {
                            Colores.instancia.Casilla_Xmenos1_Zmenos1(x, y, z);
                        }

                        if (casillas[x - 1, z + 1] == null)
                        {
                            Colores.instancia.Casilla_Xmenos1_Zmas1(x, y, z);
                        }

                        if (casillas[x + 1, z - 1] == null)
                        {
                            Colores.instancia.Casilla_Xmas1_Zmenos1(x, y, z);
                        }

                        if (casillas[x + 1, z + 1] == null)
                        {
                            Colores.instancia.Casilla_Xmas1_Zmas1(x, y, z);
                        }

                        if (casillas[x, z - 1] == null)
                        {
                            Colores.instancia.Casilla_X0_Zmenos1(x, y, z);
                        }

                        if (casillas[x - 1, z] == null)
                        {
                            Colores.instancia.Casilla_Xmenos1_Z0(x, y, z);
                        }

                        if (casillas[x, z + 1] == null)
                        {
                            Colores.instancia.Casilla_X0_Zmas1(x, y, z);
                        }

                        if (casillas[x + 1, z] == null)
                        {
                            Colores.instancia.Casilla_Xmas1_Z0(x, y, z);
                        }
                    }
                }
            }
        }