Esempio n. 1
0
    void Awake()
    {
        int randStartingPos = UnityEngine.Random.Range(0, 3);

        InitDictionaryRooms();
        transform.position    = startingPositions[0].position;//ToDo Random
        previousRoomDirection = 3;
        nextRoomDirection     = 1;

        //ToDo:Carga dinamica
        currentLevelParameters.Add(new LevelParameters(EnumTypeRoom.Secundary, false));
        currentLevelParameters.Add(new LevelParameters(EnumTypeRoom.Secret, false));
        currentLevelParameters.Add(new LevelParameters(EnumTypeRoom.Secundary, false));


        //set tipo habitacion
        ListRoomsCreated[transform.position].TypeRoom      = EnumTypeRoom.Main;
        ListRoomsCreated[transform.position].RoomGenerated = true;
        ListRoomsCreated[transform.position].SetDoorTypeByDirection((doorDirection)GetDoorDirectionByInt(nextRoomDirection), EnumTypeDoor.entrance);


        BoardRoom initialBoardRoom = GameManager.instance.boardScript.BoardSetup(transform.position, null, nextDirectionDoor);// TODO: arreglar que no inicie en estatico la primera habitacion

        //ListRoomsCreated.Add(transform.position, currentRoomParam);
        rooms.Add(initialBoardRoom);
        UpdateCurrentRoomParameters(ListRoomsCreated);
        GameManager.instance.SetCurrentRoomBoard(initialBoardRoom);
    }
Esempio n. 2
0
    public void InitRoomsDungeonLevel(BoardRoom[] listRooms)
    {
        foreach (var room in listRooms)
        {
            InitRoom(room);
            room.PauseRoom();
        }


        // asignar la primera habitacion como inicial
        currentRoom = listRooms[0];
        currentRoom.ReStartRoom();
    }
Esempio n. 3
0
    private void SetSpawnEnemies(BoardRoom currentRoom)
    {
        //var typesMonster = Assembly.GetAssembly(typeof(EnumTypeEnemies)).GetTypes().Where(currentType => currentType.IsSubclassOf(typeof(EnumTypeEnemies)));
        //asignar cantidad de enemigos
        SetQtyEnemies();
        enemies.Clear();

        //recorrer bucle por tipo de enemigo
        foreach (var typeEnemy in Enum.GetNames(typeof(EnumTypeEnemies)))
        {
            if (typeEnemy != "none")
            {
                //el metodo será general pasandole la cantidad de enemigos a generar y el tipo de enemigos
                SpawnTypeEnemies(typeEnemy);
            }
        }
        //primero elegir la cantidad de enemigos en la formula y luego buscar el array de posiciones que coincida con esa cantidad y sus variantes
        currentRoom.InvokeEnemies(currentInitPositionsEnemy, enemies);//ToDo: gestionar cantidad de enemigos y el array de posiciones previamente e incluso el tipo de enemigos
    }
Esempio n. 4
0
    /// <summary>
    /// Se inicializa una habitacion
    /// </summary>
    private void InitRoom(BoardRoom currentRoom)
    {
        currentInitPositionsEnemy = Utilities.getAllChildsObject <Transform>(InitPositionsEnemy[0].transform); //ToDo: elegir de forma aleatoria
        SetTypeCurrentRoom();                                                                                  //ToDo:

        switch (currentTypeRoom)
        {
        case TypesRoom.empty:
            SetEmptyRoom();
            break;

        case TypesRoom.battle:
            //set posiciones enemigos para el nivel
            SetSpawnEnemies(currentRoom);
            break;

        case TypesRoom.puzzzle:
            //set posiciones objetos puzzle/diseño
            SetSpawnPuzzle();
            break;
        }
    }
Esempio n. 5
0
 //reiniciar la instancia de la habitacion
 public void ReStartRoom(BoardRoom _boardRoom)
 {
     _boardRoom.ReStartRoom();
 }
Esempio n. 6
0
 //pausar la partida
 public void PauseRoom(BoardRoom _boardRoom)
 {
     _boardRoom.PauseRoom();
 }
Esempio n. 7
0
    /// <summary>
    /// Sobrecarga para crear una habitacion instancia a una posicion determinada
    /// </summary>
    /// <param name="currentRoomPosition"> posicion inicial de instancia </param>
    /// <param name="previousSideRoom"> direccion puerta "entrada" </param>
    /// <param name="nextSideDoor"> direccion puerta "salida" </param>
    /// <returns></returns>
    public BoardRoom BoardSetup(Vector3 currentRoomPosition, doorDirection?previousSideRoom, doorDirection?nextSideDoor)
    {
        //Instantiate Board and set boardHolder to its transform.
        //GameObject board = new GameObject("Board");
        isExit                  = false;
        isEntrance              = false;
        isCreatedEntrance       = false;
        isCreatedExit           = false;
        generatedBoardRoom      = null;
        roomCollider            = null;
        generatedBoardRoom      = Instantiate(prefabBoardRoom, new Vector3(0, 0, 0), Quaternion.identity);
        generatedBoardRoom.name = "BoardRoom_" + index.ToString();
        index++;
        roomCollider = Instantiate(prefabRoomCollider, new Vector3(0, 0, 0), Quaternion.identity);

        roomCollider.transform.SetParent(generatedBoardRoom.transform);

        generatedBoardRoom.colliderDetector = roomCollider.GetComponent <BoxCollider2D>();

        //Loop along x axis, starting from -1 (to fill corner) with floor or outerwall edge tiles.
        for (int x = -1; x < columns + 1; x++)
        {
            //Loop along y axis, starting from -1 to place floor or outerwall tiles.
            for (int y = -1; y < rows + 1; y++)
            {
                //Choose a random tile from our array of floor tile prefabs and prepare to instantiate it.
                GameObject toInstantiate = floorTiles[Random.Range(0, floorTiles.Length)];

                if (x == -1 && y == -1)// WallCorners
                {
                    toInstantiate = wallCornerBottomLeft;
                }
                if (x == -1 && y == rows)
                {
                    toInstantiate = wallCornerTopLeft;
                }
                if (x == columns && y == -1)
                {
                    toInstantiate = wallCornerBottomRight;
                }
                if (x == columns && y == rows)
                {
                    toInstantiate = wallCornerTopRight;
                }
                if ((y == -1 || y == rows) && !((x == -1 && y == -1) || (x == -1 && y == rows) || (x == columns && y == -1) || (x == columns && y == rows))) //rows y que no sea esquina de fila
                {
                    if ((x == 7 || x == 8) && y == -1)
                    {
                        if (nextSideDoor == doorDirection.down)
                        {
                            isExit               = true;//marcador para identificar salida y cambiar el tag del objeto
                            isCreatedExit        = true;
                            currentDirectionDoor = nextSideDoor;
                        }
                        else if (previousSideRoom == doorDirection.down)
                        {
                            isEntrance           = true;
                            isCreatedEntrance    = true;
                            currentDirectionDoor = previousSideRoom;
                        }
                        else
                        {
                            isExtraDoor          = true;
                            isCreatedExtraDoor   = true;
                            currentDirectionDoor = doorDirection.down;
                        }

                        movColliderX      = 0.5f;
                        movColliderY      = -0.3f;
                        angleExitCollider = Quaternion.AngleAxis(90, Vector3.back);
                        angleExitDoor     = Quaternion.identity;
                        roomDoor          = roomDoorUpDown;
                    }
                    else if ((x == 7 || x == 8) && y == rows)
                    {
                        if (nextSideDoor == doorDirection.up)
                        {
                            isExit               = true;//marcador para identificar salida y cambiar el tag del objeto
                            isCreatedExit        = true;
                            currentDirectionDoor = nextSideDoor;
                        }
                        else if (previousSideRoom == doorDirection.up)
                        {
                            isEntrance           = true;
                            isCreatedEntrance    = true;
                            currentDirectionDoor = previousSideRoom;
                        }
                        else
                        {
                            isExtraDoor          = true;
                            isCreatedExtraDoor   = true;
                            currentDirectionDoor = doorDirection.up;
                        }
                        movColliderX      = 0.5f;
                        movColliderY      = 0.3f;
                        angleExitCollider = Quaternion.AngleAxis(90, Vector3.back);
                        angleExitDoor     = Quaternion.identity;
                        roomDoor          = roomDoorUpDown;
                    }
                    else
                    {
                        toInstantiate = outerWallFrontTiles[Random.Range(0, outerWallFrontTiles.Length)];
                    }
                }
                if ((x == -1) && !(x == -1 && y == -1) && !(x == -1 && y == rows)) //collumns y que no sea esquina de columna LADO IZQUIERDO
                {
                    if (y == 3 || y == 4)                                          // doors leftSide
                    {
                        if (nextSideDoor == doorDirection.left)
                        {
                            isExit               = true;//marcador para identificar salida y cambiar el tag del objeto
                            isCreatedExit        = true;
                            currentDirectionDoor = nextSideDoor;
                        }
                        else if (previousSideRoom == doorDirection.left)
                        {
                            isEntrance           = true;
                            isCreatedEntrance    = true;
                            currentDirectionDoor = previousSideRoom;
                        }
                        else
                        {
                            isExtraDoor          = true;
                            isCreatedExtraDoor   = true;
                            currentDirectionDoor = doorDirection.left;
                        }
                        movColliderX      = -0.3f;
                        movColliderY      = 0.5f;
                        angleExitCollider = Quaternion.identity;
                        angleExitDoor     = Quaternion.AngleAxis(180, Vector3.back);
                        roomDoor          = roomDoorLeftRight;
                    }
                    else
                    {
                        toInstantiate = outerWallSideLeftTiles;
                    }
                }
                if ((x == columns) && !(x == columns && y == -1) && !(x == columns && y == rows)) //collumns y que no sea esquina de columna LADO DERECHO
                {
                    if (y == 3 || y == 4)                                                         // doors rightSide
                    {
                        if (nextSideDoor == doorDirection.right)
                        {
                            isExit               = true;//marcador para identificar salida y cambiar el tag del objeto
                            isCreatedExit        = true;
                            currentDirectionDoor = nextSideDoor;
                        }
                        else if (previousSideRoom == doorDirection.right)
                        {
                            isEntrance           = true;
                            isCreatedEntrance    = true;
                            currentDirectionDoor = previousSideRoom;
                        }
                        else
                        {
                            isExtraDoor          = true;
                            isCreatedExtraDoor   = true;
                            currentDirectionDoor = doorDirection.right;
                        }
                        movColliderX      = 0.3f;
                        movColliderY      = 0.5f;
                        angleExitCollider = Quaternion.identity;
                        angleExitDoor     = Quaternion.identity;
                        roomDoor          = roomDoorLeftRight;
                    }
                    else
                    {
                        toInstantiate = outerWallSideRightTiles;
                    }
                }
                //instanciar la puerta correspondiente
                if (isExit)
                {
                    GameObject exitRoomDoor = Instantiate(roomDoor, new Vector3(x, y, 0f), angleExitDoor) as GameObject;
                    if (isCreatedExit && colliderExit == null)
                    {
                        colliderExit     = Instantiate(rightChangeRoomCollider, new Vector3(x + movColliderX, y + movColliderY, 0f), angleExitCollider) as GameObject;
                        colliderExit.tag = "Exit";
                        isCreatedExit    = true;
                        colliderExit.transform.SetParent(exitRoomDoor.transform);
                    }
                    isExit = false;
                    exitRoomDoor.transform.SetParent(generatedBoardRoom.transform);
                    generatedBoardRoom.DctDoors1.Add(exitRoomDoor, currentDirectionDoor.Value);
                }
                if (isEntrance)
                {
                    GameObject entranceRoomDoor = Instantiate(roomDoor, new Vector3(x, y, 0f), angleExitDoor) as GameObject;
                    if (isCreatedEntrance && colliderEntrance == null)
                    {
                        colliderEntrance     = Instantiate(rightChangeRoomCollider, new Vector3(x + movColliderX, y + movColliderY, 0f), angleExitCollider) as GameObject;
                        colliderEntrance.tag = "Entrance";
                        isCreatedEntrance    = true;
                        colliderEntrance.transform.SetParent(entranceRoomDoor.transform);
                    }
                    isEntrance = false;
                    entranceRoomDoor.transform.SetParent(generatedBoardRoom.transform);
                    generatedBoardRoom.DctDoors1.Add(entranceRoomDoor, currentDirectionDoor.Value);
                }
                if (isExtraDoor)
                {
                    GameObject entranceRoomDoor = Instantiate(roomDoor, new Vector3(x, y, 0f), angleExitDoor) as GameObject;
                    if (isCreatedExtraDoor && colliderExtraDoor == null)
                    {
                        colliderExtraDoor     = Instantiate(rightChangeRoomCollider, new Vector3(x + movColliderX, y + movColliderY, 0f), angleExitCollider) as GameObject;
                        colliderExtraDoor.tag = "NoDoor";
                        isCreatedExtraDoor    = true;
                        colliderExtraDoor.transform.SetParent(entranceRoomDoor.transform);
                    }
                    isExtraDoor = false;
                    entranceRoomDoor.transform.SetParent(generatedBoardRoom.transform);
                    generatedBoardRoom.DctDoors1.Add(entranceRoomDoor, currentDirectionDoor.Value);
                    if (y == 4 || x == 8 && colliderExtraDoor != null)
                    {
                        colliderExtraDoor = null;
                    }
                }

                GameObject instance = Instantiate(toInstantiate, new Vector3(x, y, 0f), Quaternion.identity) as GameObject;

                instance.transform.SetParent(generatedBoardRoom.transform);
            }
        }
        colliderEntrance = null;
        colliderExit     = null;
        generatedBoardRoom.transform.position = currentRoomPosition;
        if (nextSideDoor != null)
        {
            generatedBoardRoom.InitialExitDirection = (doorDirection)nextSideDoor;
        }
        if (previousSideRoom != null)
        {
            generatedBoardRoom.InitialEntranceDirection = (doorDirection)previousSideRoom;
        }
        //Asignamos las variables necesarios
        generatedBoardRoom.SetParametersRoom();

        return(generatedBoardRoom);
    }