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); }
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; } }