Пример #1
0
    public void setListaTrampas(List <GeneradorObjetos.trapStruct> auxListaTemp, int idRoom)
    {
        Vector2 aux = getRoomPosbyID(idRoom);
        estructuraHabitacion habTemp = listaPisos[(int)aux.x].habitaciones[(int)aux.y];

        habTemp.listaTrampas = auxListaTemp;
        listaPisos[(int)aux.x].habitaciones[(int)aux.y] = habTemp;
    }
Пример #2
0
    public void setCantSitiosOcultos(int cantSitios, int idRoom)
    {
        Vector2 aux = getRoomPosbyID(idRoom);
        estructuraHabitacion habTemp = listaPisos[(int)aux.x].habitaciones[(int)aux.y];

        habTemp.cantSitiosOcultos = cantSitios;
        listaPisos[(int)aux.x].habitaciones[(int)aux.y] = habTemp;
    }
Пример #3
0
    public void setReward(ObjetoRecompensa.tipoRecompensa var, int idRoom)
    {
        Vector2 aux = getRoomPosbyID(idRoom);
        estructuraHabitacion habTemp = listaPisos[(int)aux.x].habitaciones[(int)aux.y];

        habTemp.reward = var;
        listaPisos[(int)aux.x].habitaciones[(int)aux.y] = habTemp;
    }
Пример #4
0
    public void setListaLaterales(RoomController.tiposParedes[] var, int idRoom)
    {
        Vector2 aux = getRoomPosbyID(idRoom);
        estructuraHabitacion habTemp = listaPisos[(int)aux.x].habitaciones[(int)aux.y];

        habTemp.listaLaterales = var;
        listaPisos[(int)aux.x].habitaciones[(int)aux.y] = habTemp;
    }
Пример #5
0
    public estructuraHabitacion getHabitacionPorID(int id)
    {
        estructuraHabitacion aux = new estructuraHabitacion();

        aux.id = -1;

        for (int i = 0; i < listaPisos.Count; i++)
        {
            for (int j = 0; j < listaPisos[i].habitaciones.Count; i++)
            {
                if (listaPisos[i].habitaciones[j].id == id)
                {
                    aux = listaPisos[i].habitaciones[j];
                    return(aux);
                }
            }
        }
        return(aux);
    }
Пример #6
0
    private void MapBuilder()
    {
        float   tHab           = RoomController.T_HAB;
        float   altHab         = RoomController.ALT_HAB;
        Vector3 posicionActual = new Vector3(0, 0, 0);

        for (int pisoActual = 0; pisoActual < NumPisos; pisoActual++)
        {
            posicionActual.y = altHab * pisoActual;
            for (int habActual = 0; habActual < listaPisos[pisoActual].habitaciones.Count; habActual++)
            {
                estructuraHabitacion auxHab = listaPisos[pisoActual].habitaciones[habActual];
                posicionActual.x = tHab / 2 * auxHab.coordenadas.y;
                GameObject habitacion = Instantiate(room, new Vector3(posicionActual.x, posicionActual.y, posicionActual.z), Quaternion.identity, this.transform);
                habitacion.transform.Rotate(0, 180, 0);
                habitacion.GetComponent <RoomController>().edificio = transform.GetComponent <Edificio>();

                if (habActual < 10)
                {
                    habitacion.transform.name = "Habitacion: " + pisoActual + "0" + habActual;
                }
                else
                {
                    habitacion.transform.name = "Habitacion: " + pisoActual + "" + habActual;
                }

                RoomController auxRoom = habitacion.GetComponent <RoomController>();
                auxRoom.tall           = auxHab.tall;
                auxRoom.estilo         = auxHab.estiloHabitacion;
                auxRoom.tipoHabitacion = auxHab.tipoHabitacion;
                auxRoom.hasTecho       = auxHab.hasTecho;
                auxHab.habitacion      = habitacion;
                auxRoom.id             = auxHab.id;
                auxRoom.piso           = pisoActual;
                if (mapLoaded)
                {
                    auxRoom.listaLaterales = auxHab.listaLaterales;
                    auxRoom.listaTrampas   = auxHab.listaTrampas;
                    auxRoom.reward         = auxHab.reward;
                    auxRoom.dificultad     = auxHab.nivel;
                }
                else
                {
                    auxRoom.dificultad = dificultadParaHabitacion();
                    auxHab.nivel       = auxRoom.dificultad;
                }

                switch (auxHab.tam)
                {
                case 2:
                    auxRoom.tamanyo = RoomController.roomSize.medium;
                    break;

                case 4:
                    auxRoom.tamanyo = RoomController.roomSize.large;
                    break;

                default:
                    auxRoom.tamanyo = RoomController.roomSize.small;
                    break;
                }

                listaPisos[pisoActual].habitaciones[habActual] = auxHab;
            }
        }
    }
Пример #7
0
    private estructuraPisos generateFloor(int piso)
    {
        estructuraPisos auxPiso = new estructuraPisos();

        auxPiso.habitaciones = new List <estructuraHabitacion>();
        auxPiso.escaleraEn   = -1;

        int espaciosRestantes = (int)espacioLibreEnPiso(piso);
        int idRoom            = 0;

        if (piso != 0)
        {
            idRoom = listaPisos[piso - 1].habitaciones[listaPisos[piso - 1].habitaciones.Count - 1].id + 1;
        }

        int HabActual, maxEspDisponible;

        while (espaciosRestantes > 0)
        {
            estructuraHabitacion auxHab = new estructuraHabitacion();
            HabActual        = (int)HabitacionMasGrandeDisponible(piso).x;
            maxEspDisponible = (int)HabitacionMasGrandeDisponible(piso).y;

            auxHab.id = idRoom;
            auxHab.estiloHabitacion = estilo;
            auxHab.tipoHabitacion   = RoomController.tipo.HabitacionPrincipal;
            int contRandom = 0;

            if (idRoom == 0)
            {
                auxHab.tipoHabitacion = RoomController.tipo.Entrada;
            }

            auxHab.coordenadas = new Vector2(piso, HabActual);
            auxHab.tall        = false;
            auxHab.conectaCon  = new List <estructuraHabitacion>();
            auxHab.hasTecho    = false;

            auxHab.listaLaterales = new RoomController.tiposParedes[4];
            for (int i = 0; i < 4; i++)
            {
                auxHab.listaLaterales[i] = RoomController.tiposParedes.nada;
            }

            if (maxEspDisponible > 3)
            {
                contRandom += 3;
            }
            else if (maxEspDisponible > 1)
            {
                contRandom += 2;
            }
            else if (maxEspDisponible == 1)
            {
                contRandom += 1;
            }

            int auxTam = Random.Range(1, (contRandom + 1));
            if (auxTam == 1 && auxHab.tipoHabitacion == RoomController.tipo.HabitacionPrincipal)
            {
                auxHab.tipoHabitacion = Random.Range(0, 5) == 0 ? RoomController.tipo.Banyo : RoomController.tipo.HabitacionPrincipal;
            }

            switch (auxHab.tipoHabitacion)
            {
            case RoomController.tipo.Entrada:
                if (maxEspDisponible > 1)
                {
                    auxTam = Random.Range(1, 3);
                }
                else
                {
                    auxTam = 1;
                }
                break;

            case RoomController.tipo.Banyo:
                auxTam = 1;
                break;
            }

            switch (auxTam)
            {
            case 2:
                espaciosRestantes = espaciosRestantes - 2;
                auxHab.tam        = 2;
                break;

            case 3:
                espaciosRestantes = espaciosRestantes - 4;
                auxHab.tam        = 4;
                break;

            default:
                espaciosRestantes--;
                auxHab.tam = 1;
                break;
            }

            if (piso < (NumPisos - 1))
            {
                auxHab.tall = Random.Range(0, 3) == 1 ? true : false;
            }

            if ((piso == NumPisos - 2 && auxHab.tall) || piso == (NumPisos - 1))
            {
                auxHab.hasTecho = true;
            }

            for (int i = HabActual; i < HabActual + auxHab.tam; i++)
            {
                matrizHabitaciones[piso, i] = auxHab.id;
                if (auxHab.tall)
                {
                    matrizHabitaciones[piso + 1, i] = auxHab.id;
                }
            }
            cantHabitacionesTotal++;
            auxPiso.habitaciones.Add(auxHab);
            idRoom++;
        }//Acabo de generar los pisos

        if (piso < (NumPisos - 1))
        {
            if (areAllTall(auxPiso, true) || areAllTall(auxPiso, false)) //Compruebo que no todos sean altos, ni todos sean bajos (al menos 1 de cada)
            {
                int habCambio = Random.Range(0, auxPiso.habitaciones.Count);
                estructuraHabitacion habTemp = auxPiso.habitaciones[habCambio];
                habTemp.tall = !habTemp.tall;
                if (piso == NumPisos - 2)
                {
                    if (habTemp.tall)
                    {
                        habTemp.hasTecho = true;
                    }
                    else
                    {
                        habTemp.hasTecho = false;
                    }
                }

                auxPiso.habitaciones[habCambio] = habTemp;

                for (int i = (int)habTemp.coordenadas.y; i < (int)habTemp.coordenadas.y + habTemp.tam; i++)
                {
                    matrizHabitaciones[piso, i] = habTemp.id;
                    if (habTemp.tall)
                    {
                        matrizHabitaciones[piso + 1, i] = habTemp.id;
                    }
                    else
                    {
                        matrizHabitaciones[piso + 1, i] = -1;
                    }
                }
            }
        }

        return(auxPiso);
    }