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 Construir(List <Construccion2> carreteras, Ciudad ciudad, Construir construir, Velocidad velocidad) { if (carreteras.Count > 0) { int coste = 0; foreach (Construccion2 subcarretera in carreteras) { coste = coste + subcarretera.edificio.coste; } if (ciudad.Dinero >= coste) { foreach (Construccion2 subcarretera in carreteras) { if (construir.ComprobarPosicion(subcarretera.edificio, subcarretera.posicion) == null) { construir.AñadirConstruccion(subcarretera.edificio, subcarretera.posicion, velocidad.EstadoEncendidoLuces()); } else { Construccion edificioEncontrado = construir.ComprobarPosicion(subcarretera.edificio, subcarretera.posicion); if (edificioEncontrado.categoria == 0) { construir.QuitarEdificio(edificioEncontrado, subcarretera.posicion); construir.AñadirConstruccion(subcarretera.edificio, subcarretera.posicion, velocidad.EstadoEncendidoLuces()); ciudad.DepositoDinero(edificioEncontrado.coste / 2); } if (edificioEncontrado.categoria == 1) { bool eliminar = false; if (edificioEncontrado.id != subcarretera.edificio.id) { eliminar = true; } else { if (edificioEncontrado.rotacionColocacion != subcarretera.edificio.rotacionColocacion) { eliminar = true; } } if (eliminar == true) { if (edificioEncontrado.categoria != 0) { ciudad.DepositoDinero(edificioEncontrado.coste / 3); } ciudad.ActualizarUI(false); construir.QuitarEdificio(edificioEncontrado, subcarretera.posicion); construir.AñadirConstruccion(subcarretera.edificio, subcarretera.posicion, velocidad.EstadoEncendidoLuces()); } } } } ciudad.DepositoDinero(-coste); ciudad.ActualizarUI(false); } } }