void EdificioConstruir(int accion) { Vector3 raton = Posicion.Raton(); if (raton != Vector3.zero) { Vector3 posicion = Posicion.Redondear(raton, edificioSeleccionado); if (Posicion.Limites(posicion, 100) == true) { if (edificiosSeleccionados.Count > 0) { if (edificiosSeleccionados[0].edificio.categoria == 1) { Carreteras.Construir(edificiosSeleccionados, ciudad, construir, velocidad); } } else { if (accion == 0) { bool añadir = true; if (escenario.ComprobarEdificable(edificioSeleccionado, posicion) == false) { añadir = false; } if (construir.ComprobarPosicion(edificioSeleccionado, posicion) != null) { añadir = false; } if (ciudad.Dinero < edificioSeleccionado.coste) { añadir = false; } if (añadir == true) { construirActivar = false; vistaPrevia.QuitarTodosEdificios(); construirInterfaz.RatonSaleBotonEdificios(); panelCoste.gameObject.GetComponent <CanvasGroup>().alpha = 0; ciudad.DepositoDinero(-edificioSeleccionado.coste); ciudad.ActualizarUI(false); construir.AñadirConstruccion(edificioSeleccionado, posicion, velocidad.EstadoEncendidoLuces()); sonido.Construir(); } } if (accion == 1) { if (edificioSeleccionado != null) { demolerActivar = false; vistaPrevia.QuitarTodosEdificios(); demolerInterfaz.RatonSale(); Construccion edificioEliminar = edificioSeleccionado; if (edificioEliminar.categoria != 0) { ciudad.DepositoDinero(edificioEliminar.coste / 3); } ciudad.ActualizarUI(false); construir.QuitarEdificio(edificioEliminar, posicion); sonido.Demoler(); } } } } } }
public static void VistaPrevia(List <Construccion2> carreteras, Ciudad ciudad, Construccion carretera, Vector3 posicionCarretera, Construir construir, VistaPrevia vistaPrevia, Construccion[] edificios, bool mantenerEjeX, bool mantenerEjeZ, Panel panelCoste, Text mensajeCoste, CarreterasIDs ids, Escenario escenario) { int eje = 0; if (carreteras.Count == 0) { bool añadir = true; if (escenario.ComprobarEdificable(carretera, posicionCarretera) == false) { añadir = false; } if (vistaPrevia.ComprobarPosicion(carretera, posicionCarretera) != null) { añadir = false; } if (construir.ComprobarPosicion(carretera, posicionCarretera) != null) { añadir = false; } if (añadir == true) { carreteras.Add(new Construccion2(carretera, posicionCarretera)); } } else if (carreteras.Count > 0) { if (mantenerEjeX == true) { if (((carreteras[0].posicion.z == posicionCarretera.z) && (carreteras[0].posicion.x < posicionCarretera.x)) || ((carreteras[0].posicion.z == posicionCarretera.z) && (carreteras[0].posicion.x > posicionCarretera.x))) { if (carretera.id == ids.recta) { carretera.rotacionColocacion = -270; } float mantenerOrigenX = carreteras[0].posicion.x; float mantenerDestinoX = posicionCarretera.x; Vector3 nuevaPosicion = carreteras[0].posicion; if (mantenerDestinoX > mantenerOrigenX) { while (nuevaPosicion.x <= mantenerDestinoX) { bool añadir = true; int coste = 0; foreach (Construccion2 subcarretera in carreteras) { coste = coste + subcarretera.edificio.coste; if (subcarretera.posicion == nuevaPosicion) { añadir = false; } } if (ciudad.Dinero < coste) { añadir = false; } if (añadir == true) { carreteras.Add(new Construccion2(carretera, nuevaPosicion)); } nuevaPosicion.x = nuevaPosicion.x + 1; } eje = 1; } else { while (nuevaPosicion.x >= mantenerDestinoX) { bool añadir = true; foreach (Construccion2 edificio in carreteras) { if (edificio.posicion == nuevaPosicion) { añadir = false; } } if (añadir == true) { carreteras.Add(new Construccion2(carretera, nuevaPosicion)); } nuevaPosicion.x = nuevaPosicion.x - 1; } eje = 2; } mantenerEjeZ = false; } } if (mantenerEjeZ == true) { if (((carreteras[0].posicion.x == posicionCarretera.x) && (carreteras[0].posicion.z < posicionCarretera.z)) || ((carreteras[0].posicion.x == posicionCarretera.x) && (carreteras[0].posicion.z > posicionCarretera.z))) { if (carretera.id == ids.recta) { carretera.rotacionColocacion = 0; } float mantenerOrigenZ = carreteras[0].posicion.z; float mantenerDestinoZ = posicionCarretera.z; Vector3 nuevaPosicion = carreteras[0].posicion; if (mantenerDestinoZ > mantenerOrigenZ) { while (nuevaPosicion.z <= mantenerDestinoZ) { bool añadir = true; foreach (Construccion2 subcarretera in carreteras) { if (subcarretera.posicion == nuevaPosicion) { añadir = false; } } if (añadir == true) { carreteras.Add(new Construccion2(carretera, nuevaPosicion)); } nuevaPosicion.z = nuevaPosicion.z + 1; } eje = 3; } else { while (nuevaPosicion.z >= mantenerDestinoZ) { bool añadir = true; foreach (Construccion2 subcarretera in carreteras) { if (subcarretera.posicion == nuevaPosicion) { añadir = false; } } if (añadir == true) { carreteras.Add(new Construccion2(carretera, nuevaPosicion)); } nuevaPosicion.z = nuevaPosicion.z - 1; } eje = 4; } mantenerEjeX = false; } } } int costeTotal = 0; foreach (Construccion2 subcarretera in carreteras) { if (escenario.ComprobarEdificable(subcarretera.edificio, subcarretera.posicion) == false) { int rotacion = subcarretera.edificio.rotacionColocacion; subcarretera.edificio = edificios[ids.puente]; subcarretera.edificio.rotacionColocacion = rotacion; } costeTotal = costeTotal + subcarretera.edificio.coste; bool carretera1 = false; Vector3 posicion1 = subcarretera.posicion; bool carretera2 = false; Vector3 posicion2 = subcarretera.posicion; bool carretera3 = false; Vector3 posicion3 = subcarretera.posicion; if (eje == 1) { posicion1.x = posicion1.x + 1; posicion2.z = posicion2.z + 1; posicion3.z = posicion3.z - 1; } else if (eje == 2) { posicion1.x = posicion1.x - 1; posicion2.z = posicion2.z + 1; posicion3.z = posicion3.z - 1; } else if (eje == 3) { posicion1.z = posicion1.z + 1; posicion2.x = posicion2.x + 1; posicion3.x = posicion3.x - 1; } else if (eje == 4) { posicion1.z = posicion1.z - 1; posicion2.x = posicion2.x + 1; posicion3.x = posicion3.x - 1; } carretera1 = BuscarCarreteras(carretera1, construir, vistaPrevia, carreteras, subcarretera.edificio, posicion1, eje, ids); carretera2 = BuscarCarreteras(carretera2, construir, vistaPrevia, carreteras, subcarretera.edificio, posicion2, eje, ids); carretera3 = BuscarCarreteras(carretera3, construir, vistaPrevia, carreteras, subcarretera.edificio, posicion3, eje, ids); if ((carretera1 == false) && (carretera2 == true) && (carretera3 == false)) { subcarretera.edificio = edificios[ids.curva]; if (eje == 1) { subcarretera.edificio.rotacionColocacion = 0; } else if (eje == 2) { subcarretera.edificio.rotacionColocacion = -270; } else if (eje == 3) { subcarretera.edificio.rotacionColocacion = -180; } else if (eje == 4) { subcarretera.edificio.rotacionColocacion = -270; } } if ((carretera1 == false) && (carretera2 == false) && (carretera3 == true)) { subcarretera.edificio = edificios[ids.curva]; if (eje == 1) { subcarretera.edificio.rotacionColocacion = -90; } else if (eje == 2) { subcarretera.edificio.rotacionColocacion = -180; } else if (eje == 3) { subcarretera.edificio.rotacionColocacion = -90; } else if (eje == 4) { subcarretera.edificio.rotacionColocacion = 0; } } if ((carretera1 == true) && (carretera2 == true) && (carretera3 == false)) { subcarretera.edificio = edificios[ids.cruce3]; if ((eje == 1) || (eje == 2)) { subcarretera.edificio.rotacionColocacion = 0; } else if ((eje == 3) || (eje == 4)) { subcarretera.edificio.rotacionColocacion = -270; } } if ((carretera1 == true) && (carretera2 == false) && (carretera3 == true)) { subcarretera.edificio = edificios[ids.cruce3]; if ((eje == 1) || (eje == 2)) { subcarretera.edificio.rotacionColocacion = -180; } else if ((eje == 3) || (eje == 4)) { subcarretera.edificio.rotacionColocacion = -90; } } if ((carretera1 == false) && (carretera2 == true) && (carretera3 == true)) { subcarretera.edificio = edificios[ids.cruce3]; if (eje == 1) { subcarretera.edificio.rotacionColocacion = -90; } else if (eje == 2) { subcarretera.edificio.rotacionColocacion = -270; } else if (eje == 3) { subcarretera.edificio.rotacionColocacion = -180; } else if (eje == 4) { subcarretera.edificio.rotacionColocacion = 0; } } if ((carretera1 == true) && (carretera2 == true) && (carretera3 == true)) { if ((eje == 1) || (eje == 2) || (eje == 3) || (eje == 4)) { subcarretera.edificio = edificios[ids.cruce4]; } } if (vistaPrevia.ComprobarPosicion(subcarretera.edificio, subcarretera.posicion) == null) { vistaPrevia.AñadirConstruccion(subcarretera.edificio, subcarretera.posicion); } } panelCoste.gameObject.GetComponent <CanvasGroup>().alpha = 1; mensajeCoste.text = string.Format("-{0} €", costeTotal); }