public void loadLevel(int hueco) { FileInfo theSourceFile = null; StreamReader reader = null; string text = " "; theSourceFile = new FileInfo("Nivel" + hueco + ".txt"); bool listo = false; if (theSourceFile != null) { reader = theSourceFile.OpenText(); string[] strArr; List <Edificio.estructuraPisos> listaPisos = new List <Edificio.estructuraPisos>(); Edificio.estructuraPisos auxPiso = new Edificio.estructuraPisos(); Edificio.estructuraHabitacion auxRoom = new Edificio.estructuraHabitacion(); Edificio.condicionesVictoria condicion0 = new Edificio.condicionesVictoria(); Edificio.condicionesVictoria condicion1 = new Edificio.condicionesVictoria(); int dificultad = 1; while (!listo) { text = reader.ReadLine(); if (text != null) { strArr = text.Split(' '); int pisoActual = 0; switch (strArr[0]) { case "dificultad": dificultad = int.Parse(strArr[1]); break; case "objetivo0": switch (int.Parse(strArr[1])) { case 0: condicion0 = Edificio.condicionesVictoria.conseguirDocumentos; break; case 1: condicion0 = Edificio.condicionesVictoria.conseguirPiezas; break; case 2: condicion0 = Edificio.condicionesVictoria.desactivarTrampas; break; } break; case "objetivo1": switch (int.Parse(strArr[1])) { case 0: condicion1 = Edificio.condicionesVictoria.conseguirDocumentos; break; case 1: condicion1 = Edificio.condicionesVictoria.conseguirPiezas; break; case 2: condicion1 = Edificio.condicionesVictoria.desactivarTrampas; break; } break; case "NewFloor": if (int.Parse(strArr[1]) != 0) { auxPiso.habitaciones.Add(auxRoom); listaPisos.Add(auxPiso); pisoActual++; } auxPiso = new Edificio.estructuraPisos(); auxPiso.habitaciones = new List <Edificio.estructuraHabitacion>(); break; case "NewRoom": if (int.Parse(strArr[1]) != 0) { auxPiso.habitaciones.Add(auxRoom); } auxRoom = new Edificio.estructuraHabitacion(); auxRoom.listaLaterales = new RoomController.tiposParedes[4]; auxRoom.listaTrampas = new List <GeneradorObjetos.trapStruct>(); auxRoom.conectaCon = new List <Edificio.estructuraHabitacion>(); auxRoom.id = int.Parse(strArr[1]); break; case "piso": auxRoom.piso = pisoActual; break; case "estilo": auxRoom.estiloHabitacion = int.Parse(strArr[1]) == 0 ? Edificio.listaEstilos.oficina : Edificio.listaEstilos.casaNormal; break; case "tipo": switch (int.Parse(strArr[1])) { case 0: auxRoom.tipoHabitacion = RoomController.tipo.Entrada; break; case 1: auxRoom.tipoHabitacion = RoomController.tipo.HabitacionPrincipal; break; case 2: auxRoom.tipoHabitacion = RoomController.tipo.Banyo; break; } break; case "nivel": auxRoom.nivel = int.Parse(strArr[1]); break; case "coordenadas": auxRoom.coordenadas = new Vector2(float.Parse(strArr[1]), float.Parse(strArr[2])); break; case "tam": auxRoom.tam = int.Parse(strArr[1]); break; case "techo": auxRoom.hasTecho = int.Parse(strArr[1]) == 1 ? true : false; break; case "tall": auxRoom.tall = int.Parse(strArr[1]) == 1 ? true : false; break; case "camara": auxRoom.cameraPosition = int.Parse(strArr[1]); break; case "ocultos": auxRoom.cantSitiosOcultos = int.Parse(strArr[1]); break; case "reward": switch (int.Parse(strArr[1])) { case 0: auxRoom.reward = ObjetoRecompensa.tipoRecompensa.ninguno; break; case 1: auxRoom.reward = ObjetoRecompensa.tipoRecompensa.documentos; break; case 2: auxRoom.reward = ObjetoRecompensa.tipoRecompensa.piezasSecretas; break; case 3: auxRoom.reward = ObjetoRecompensa.tipoRecompensa.conjuntoPuntos; break; } break; case "lateral": for (int i = 1; i <= 4; i++) { switch (int.Parse(strArr[i])) { case 0: auxRoom.listaLaterales[i - 1] = RoomController.tiposParedes.nada; break; case 1: auxRoom.listaLaterales[i - 1] = RoomController.tiposParedes.pared; break; case 2: auxRoom.listaLaterales[i - 1] = RoomController.tiposParedes.puerta; break; case 3: auxRoom.listaLaterales[i - 1] = RoomController.tiposParedes.trampilla; break; } } break; case "trampa0": GeneradorObjetos.trapStruct auxStruct = new GeneradorObjetos.trapStruct(); if (int.Parse(strArr[1]) < 3) { if (int.Parse(strArr[1]) == 0) { auxStruct.tipo = GeneradorObjetos.tipo.Mina; } else if (int.Parse(strArr[1]) == 1) { auxStruct.tipo = GeneradorObjetos.tipo.Cepo; } else if (int.Parse(strArr[1]) == 2) { auxStruct.tipo = GeneradorObjetos.tipo.PlacaPresion; } auxStruct.level = int.Parse(strArr[2]); } else //Es la red laser { auxStruct.tipo = GeneradorObjetos.tipo.RedLaser; auxStruct.level = int.Parse(strArr[2]); auxStruct.verticalSpeed = float.Parse(strArr[3]); } auxRoom.listaTrampas.Add(auxStruct); break; case "trampa1": auxStruct = new GeneradorObjetos.trapStruct(); if (int.Parse(strArr[1]) < 3) { if (int.Parse(strArr[1]) == 0) { auxStruct.tipo = GeneradorObjetos.tipo.Mina; } else if (int.Parse(strArr[1]) == 1) { auxStruct.tipo = GeneradorObjetos.tipo.Cepo; } else if (int.Parse(strArr[1]) == 2) { auxStruct.tipo = GeneradorObjetos.tipo.PlacaPresion; } auxStruct.level = int.Parse(strArr[2]); } else //Es la red laser { auxStruct.tipo = GeneradorObjetos.tipo.RedLaser; auxStruct.level = int.Parse(strArr[2]); auxStruct.verticalSpeed = float.Parse(strArr[3]); } auxRoom.listaTrampas.Add(auxStruct); break; case "trampa2": auxStruct = new GeneradorObjetos.trapStruct(); if (int.Parse(strArr[1]) < 3) { if (int.Parse(strArr[1]) == 0) { auxStruct.tipo = GeneradorObjetos.tipo.Mina; } else if (int.Parse(strArr[1]) == 1) { auxStruct.tipo = GeneradorObjetos.tipo.Cepo; } else if (int.Parse(strArr[1]) == 2) { auxStruct.tipo = GeneradorObjetos.tipo.PlacaPresion; } auxStruct.level = int.Parse(strArr[2]); } else //Es la red laser { auxStruct.tipo = GeneradorObjetos.tipo.RedLaser; auxStruct.level = int.Parse(strArr[2]); auxStruct.verticalSpeed = float.Parse(strArr[3]); } auxRoom.listaTrampas.Add(auxStruct); break; } } else { auxPiso.habitaciones.Add(auxRoom); listaPisos.Add(auxPiso); listo = true; } } GameObject obj = new GameObject(); obj.name = "Edificio"; obj.transform.SetParent(this.transform); obj.AddComponent <Edificio>(); obj.GetComponent <Edificio>().loadedMap(listaPisos, condicion0, condicion1, dificultad); obj.GetComponent <Edificio>().setInitialTime(Time.time); enableCamera(false); setEstado(4); } else { print("Error al leer Nivel" + hueco + ".txt"); } reader.Close(); }
private void genMapa(int dif) { nivel prueba; prueba.dificultad = dif; switch (dif) { case 1: prueba.NumPisos = 1; prueba.NumHabitaciones = Random.Range(3, 6); break; case 2: prueba.NumPisos = Random.Range(1, 3); prueba.NumHabitaciones = Random.Range(4, 7); break; case 3: prueba.NumPisos = 2; prueba.NumHabitaciones = Random.Range(5, 8); break; case 4: prueba.NumPisos = Random.Range(2, 4); prueba.NumHabitaciones = 6; break; case 5: prueba.NumPisos = 3; prueba.NumHabitaciones = 6; break; case 6: prueba.NumPisos = Random.Range(3, 5); prueba.NumHabitaciones = 6; break; case 7: prueba.NumPisos = 4; prueba.NumHabitaciones = 6; break; default: prueba.NumPisos = 1; prueba.NumHabitaciones = Random.Range(3, 6); break; } prueba.estilo = Edificio.getEstiloRandom(); prueba.condicionesVictoria = new List <Edificio.condicionesVictoria>(); prueba.condicionesVictoria.Add(Edificio.getRandomCondicionVictoria()); while (prueba.condicionesVictoria.Count < 2) { Edificio.condicionesVictoria aux = Edificio.getRandomCondicionVictoria(); if (!prueba.condicionesVictoria.Contains(aux)) { prueba.condicionesVictoria.Add(aux); } } //print ("La dificultad del mapa es " + dif + " y tiene "+ prueba.NumPisos + " pisos y " + prueba.NumHabitaciones+" habitaciones, con estilo "+prueba.estilo); ListaMapas.Add(prueba); }