예제 #1
0
    private void CreateDoor(RoomSpawnData room, Transform doorParent, int sign = 1)
    {
        GameObject door = Instantiate(prefabDoor, doorParent);

        door.transform.position = transform.position + GetHalfRoomWidthVector(room) * sign;
        Vector3 newScale = door.transform.localScale;

        newScale.x *= -1.0f * UtilMath.Sign(roomNumber % roomOrder.Length == 1) * sign;
        door.transform.localScale = newScale;
        latestDoor = door.GetComponent <RoomDoor>();
    }
예제 #2
0
    private void CreateRoom(RoomSpawnData room)
    {
        if (roomNumber != 0)
        {
            RoomSpawnData previousRoom = roomOrder[(roomNumber - 1) % roomOrder.Length];
            MoveForwardByHalfRoomWidth(previousRoom);
        }
        MoveForwardByHalfRoomWidth(room);
        GameObject obj = Instantiate(room.prefab, transform.position, Quaternion.identity);
        Room       rm  = obj.GetComponent <Room>();

        rm.RoomStarted += Iterate;
        rm.SetItemPool(itemPool);

        rooms.Add(roomNumber, rm);
        ++roomNumber;
    }
예제 #3
0
    private void CreateRoom(RoomSpawnData room)
    {
        if (roomNumber != 0)
        {
            RoomSpawnData previousRoom = roomOrder[(roomNumber - 1) % roomOrder.Length];
            MoveForwardByHalfRoomWidth(previousRoom);
        }

        MoveForwardByHalfRoomWidth(room);
        GameObject obj = Instantiate(room.prefab, transform.position, Quaternion.identity);

        obj.GetComponent <TimeScale>().SetData(timeScale);
        Room rm = obj.GetComponent <Room>();

        rm.RoomStarted += Iterate;
        rm.SetItemPool(itemPool);
        rm.SetBossPool(bossPool);
        rm.SetPlayerHealth(playerHealth);

        // When upgrade rooms start, they should heal the player.
        if (roomNumber % roomOrder.Length == 0)
        {
            rm.RoomStarted += playerHealth.FullHeal;
        }

        // If the latest door is null, this is the very first room in the game.
        if (latestDoor == null)
        {
            CreateDoor(room, obj.transform, -1);
        }
        rm.SetDoorEntry(latestDoor);
        CreateDoor(room, obj.transform);
        rm.SetDoorExit(latestDoor);
        rm.SetLoopNumber(loopNumber);
        rm.SetBossesKilled(bossesKilled);

        rooms.Add(roomNumber, rm);

        ++roomNumber;
        loopNumber = roomNumber / 2;
    }
예제 #4
0
 private void MoveForwardByHalfRoomWidth(RoomSpawnData room)
 {
     transform.position += GetHalfRoomWidthVector(room);
 }
예제 #5
0
 private Vector3 GetHalfRoomWidthVector(RoomSpawnData room)
 {
     return(new Vector3(GetHalfRoomWidth(room), 0.0f, 0.0f));
 }
예제 #6
0
 private float GetHalfRoomWidth(RoomSpawnData room)
 {
     return(room.width * 0.01f * 0.5f);
 }
예제 #7
0
    private void CreateNextRoom()
    {
        RoomSpawnData roomToSpawn = roomOrder[roomNumber % roomOrder.Length];

        CreateRoom(roomToSpawn);
    }
예제 #8
0
 private void MoveForwardByHalfRoomWidth(RoomSpawnData room)
 {
     transform.position += new Vector3(room.width * 0.01f * 0.5f, 0.0f, 0.0f);
 }