private void GenerateMap() { //setando custo int costForEnemies = globalMapSettings.totalEntitiesCost; //limpar mapa antigo se houver if (roomParent != null) { Destroy(roomParent); } roomParent = new GameObject("RoomRoot"); roomParent.transform.position = Vector3.zero; MapRoom targetRoom = null; //colocando base if (currentRoomIndex < (float)(globalMapSettings.numberOfRooms) / 2.00f) { targetRoom = globalMapSettings.startRoomSet.GetRandomRoom(); } else { targetRoom = globalMapSettings.endRoomSet.GetRandomRoom(); } //se currentIndex = 2, usar sala quest[0], se quest.count = 10, ultima quest fica em quest[9], valor maximo pro curIndex de quest seria entao 11 if (currentRoomIndex >= 2 && currentRoomIndex <= questRooms.Count + 1) { targetRoom = questRooms[currentRoomIndex - 2]; } GameObject roomBase = Instantiate(targetRoom.roomBase, Vector3.zero, Quaternion.identity, roomParent.transform); //escolhendo e colocando decoracao MapDecoration decoration = Instantiate <MapDecoration>(targetRoom.GetRandomDecoration(), Vector3.zero, Quaternion.identity, roomParent.transform); decoration.ClearPointers(); currentDeco = decoration; //configurando portas if (decoration.doors == null) { decoration.doors = new MapDoor[0]; } for (int i = 0; i < decoration.doors.Length; i++) { decoration.doors[i].SetLocked(true); decoration.doors[i].SetupDoor(this, GetRandomReward()); } //spawn de inimigos MapEnemySet targetSet = currentRoomIndex <= (float)globalMapSettings.numberOfRooms / 2 ? globalMapSettings.startEnemySet : globalMapSettings.endEnemySet; if (decoration.pointers == null) { decoration.pointers = new MapPointer[0]; } for (int i = 0; i < decoration.pointers.Length; i++) { MapPointer randomPointer = decoration.GetRandomAvailablePointer(); //verifica todos inimigos possiveis para esse ponto e pega um aleatorio if (randomPointer == null) { break; //sair do for por falta de pontos } MapEntity targetEntity = targetSet.GetRandomEntity(globalMapSettings.mapDifficulty, randomPointer.pointSize, costForEnemies); if (targetEntity != null) { costForEnemies -= targetEntity.entityCost; MapEntity spawnedEntity = Instantiate <MapEntity>(targetEntity, randomPointer.transform.position, Quaternion.identity, roomParent.transform); randomPointer.used = true; } } playerObject.transform.position = decoration.playerSpawn.position; UpdateRoomCounter(); path.Scan(); }
private void Start() => mapDecorator = GetComponent <MapDecoration>();