void Start() { Player.Init(LevelUI); TestRoom.Init(false, false, false, false); var objectInitializer = new RoomRandomObjectsInitializer(Player.gameObject); objectInitializer.InitRoomObjects(TestRoom); LevelUI.Init(); }
public void GenerateLevelObjects(GameStarter starter, LevelMap map) { if (RoomPrefabs.Count != RoomPrefabsProbabilities.Count) { Debug.LogError("Can't generate level. Rooms count and Rooms probabilites count are different"); return; } var objectInitializer = new RoomRandomObjectsInitializer(starter.Player.gameObject); for (var x = 0; x < GridSizeX; x++) { for (var y = 0; y < GridSizeY; y++) { if (map.HasRoom(x, y)) { var pos = RoomSize * new Vector2(x - GridSizeX / 2, y - GridSizeY / 2); var roomInfo = map.GetRoom(new Vector2Int(x, y)); var prefab = GetPrefab(roomInfo.RoomType); var go = Instantiate(prefab, pos, Quaternion.identity, LevelRoot); // Init room doors var index = new Vector2Int(x, y); var isLeftOpened = IsDoorOpened(map, index + Vector2Int.left); var isRightOpened = IsDoorOpened(map, index + Vector2Int.right); var isUpperOpened = IsDoorOpened(map, index + Vector2Int.up); var isBottomOpened = IsDoorOpened(map, index + Vector2Int.down); Room comp = null; switch (roomInfo.RoomType) { case RoomType.StartRoom: case RoomType.SimpleRoom: { comp = go.GetComponent <Room>(); comp.Init(isLeftOpened, isRightOpened, isUpperOpened, isBottomOpened); break; } case RoomType.RoomWithExit: { var exitRoom = go.GetComponent <ExitRoom>(); exitRoom.Init(starter.LevelUI, isLeftOpened, isRightOpened, isUpperOpened, isBottomOpened); comp = exitRoom; break; } } objectInitializer.InitRoomObjects(comp); } } } }