Exemple #1
0
    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();
    }
Exemple #2
0
    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);
    }