using Photon.Pun; using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameScene : MonoBehaviour { [SerializeField] private ZoneData zone; [SerializeField] private GameEvent_ZoneData onGameSceneLoaded; [SerializeField] private GameEvent_RiftSettings onSpawnRiftRequest; [SerializeField] private List spawnPoints = new List(); RiftSettings riftSettings = new RiftSettings(); private void Awake() { zone.spawnPoints = spawnPoints; onGameSceneLoaded.Raise(zone); } // Start is called before the first frame update void Start() { if (PhotonNetwork.LocalPlayer.IsMasterClient && zone.isHostileZone) StartCoroutine(SpawnEnemiesWithDelay(zone)); } public IEnumerator SpawnEnemiesWithDelay(ZoneData zoneData) { yield return new WaitForSeconds(GameConstants.GameBalancing.RiftStartSpawningDelay); riftSettings.zoneData = zoneData; riftSettings.numberOfWaves = Random.Range(GameConstants.GameBalancing.MinimumNumberOfWavesPerRift, GameConstants.GameBalancing.MaximumNumberOfWavesPerRift); riftSettings.riftIndex = Random.Range(0, 5); riftSettings.enemyIndexes_Quantity = new Dictionary(); riftSettings.bossIndex = (int)zone.possibleEnemies[Random.Range(0, zone.possibleEnemies.Count)]; for (int i = 0; i < zone.possibleEnemies.Count; i++) { riftSettings.enemyIndexes_Quantity.Add((int)zone.possibleEnemies[i], Random.Range(GameConstants.GameBalancing.GetMinimumQuantityByEnemyID(zone.possibleEnemies[i]), GameConstants.GameBalancing.GetMaximumQuantityByEnemyID(zone.possibleEnemies[i]))); } onSpawnRiftRequest.Raise(riftSettings); } }