public EnemyDropParameters GetEnemyDropParameters(EnemyShipPoolTag enemyTag) { EnemyDropParameters parameters = null; foreach (EnemyTagWithDropParameters enemyWithDropParams in allEnemiesDropParameters) { if (enemyTag == enemyWithDropParams.GetEnemyTag) { parameters = enemyWithDropParams.GetDropParameters; break; } } if (parameters == null) { Debug.LogWarning("Impossible de trouver des paramètres de drop pour l'ennemi spawné : aucun drop sur l'ennemi"); } return(parameters); }
public EnemyShip GetEnemyShip(EnemyShipPoolTag tag, PoolInteractionType interactionType) { if (enemyShipsPoolsDisctionary == null) { if (interactionType == PoolInteractionType.PeekPrefab) { foreach (EnemyShipsPool enemyPool in enemyShipsPool) { if (enemyPool.GetEnemyPoolTag == tag) { return(enemyPool.PeekPrefab()); } } } return(null); } if (!enemyShipsPoolsDisctionary.ContainsKey(tag)) { return(null); } switch (interactionType) { case (PoolInteractionType.GetFromPool): return(enemyShipsPoolsDisctionary[tag].GetObjectFromPool()); case (PoolInteractionType.PeekFromPool): return(enemyShipsPoolsDisctionary[tag].PeekObjectFromPool()); case (PoolInteractionType.PeekPrefab): return(enemyShipsPoolsDisctionary[tag].PeekPrefab()); } return(null); }
public List <IDamageReceiver> SpawnEnemies() { spawned = true; List <EnemySpawnPoint> availableCommonSpawnPoints = new List <EnemySpawnPoint>(commonEnemiesSpawnPoints); List <EnemySpawnPoint> availableRareSpawnPoints = new List <EnemySpawnPoint>(rareEnemiesSpawnPoints); spawnedEnemies = new List <IDamageReceiver>(); bool stopSpawnedEnemies = false; if (cinematicToPlayOnWaveStart != null) { stopSpawnedEnemies = cinematicToPlayOnWaveStart.StopSpawnedEnemies || spawnedEnemiesAreStopped; } else { stopSpawnedEnemies = spawnedEnemiesAreStopped; } List <EnemyShip> allSpawnedEnemies = new List <EnemyShip>(); PlayerShip playerShip = GameManager.gameManager.Player; #region Common for (int i = 0; i < numberOfCommonEnemies; i++) { if (availableCommonSpawnPoints.Count == 0) { Debug.Log("pas de spawn points disponibles : impossible de spawner l'ennemi commun"); break; } EnemySpawnPoint chosenSpawnPoint = availableCommonSpawnPoints.GetRandomMemberOfTheList(); EnemyShipPoolTag enemyPoolTag = commonEnemies.GetRandomElementFromSystem(); EnemyShip spawnedEnemy = GameManager.gameManager.PoolManager.GetEnemyShip(enemyPoolTag, PoolInteractionType.GetFromPool); spawnedEnemy.transform.position = chosenSpawnPoint.transform.position; spawnedEnemy.transform.rotation = chosenSpawnPoint.transform.rotation; spawnedEnemy.ExternalSetUp(chosenSpawnPoint.GetLinkedWatchingRoundParameters); availableCommonSpawnPoints.Remove(chosenSpawnPoint); spawnedEnemies.Add(spawnedEnemy.GetShipDamageReceiver); spawnedEnemy.GetShipDamageReceiver.OnDeath += new OnLifeEvent(RemoveSpawnedEnemy); spawnedEnemy.SetDropParameters(dropParameters.GetEnemyDropParameters(enemyPoolTag)); allSpawnedEnemies.Add(spawnedEnemy); if (commonEnemiesHighlightingType != HighlightingType.None) { spawnedEnemy.StartEnemyHighlighting(playerShip, commonEnemiesHighlightingType == HighlightingType.Important); //if (!spawnedEnemiesArentHighlighted) //playerShip.StartEnemyHighlighting(spawnedEnemy); } if (stopSpawnedEnemies) { spawnedEnemy.ShipMvt.InstantStopShip(); } if (spawnedEnemiesAutoDetectPlayer) { spawnedEnemy.AutoDetectPlayer(); } } #endregion #region Rare for (int i = 0; i < numberOfRareEnemies; i++) { if (availableRareSpawnPoints.Count == 0) { Debug.Log("pas de spawn points disponibles : impossible de spawner l'ennemi rare"); break; } EnemySpawnPoint chosenSpawnPoint = availableRareSpawnPoints.GetRandomMemberOfTheList(); EnemyShipPoolTag enemyPoolTag = rareEnemies.GetRandomElementFromSystem(); EnemyShip spawnedEnemy = GameManager.gameManager.PoolManager.GetEnemyShip(enemyPoolTag, PoolInteractionType.GetFromPool); spawnedEnemy.transform.position = chosenSpawnPoint.transform.position; spawnedEnemy.transform.rotation = chosenSpawnPoint.transform.rotation; spawnedEnemy.ExternalSetUp(chosenSpawnPoint.GetLinkedWatchingRoundParameters); availableCommonSpawnPoints.Remove(chosenSpawnPoint); spawnedEnemies.Add(spawnedEnemy.GetShipDamageReceiver); spawnedEnemy.GetShipDamageReceiver.OnDeath += new OnLifeEvent(RemoveSpawnedEnemy); spawnedEnemy.SetDropParameters(dropParameters.GetEnemyDropParameters(enemyPoolTag)); allSpawnedEnemies.Add(spawnedEnemy); if (rareEnemiesHighlightingType != HighlightingType.None) { spawnedEnemy.StartEnemyHighlighting(playerShip, rareEnemiesHighlightingType == HighlightingType.Important); } //if (!spawnedEnemiesArentHighlighted) //playerShip.StartEnemyHighlighting(spawnedEnemy); if (stopSpawnedEnemies) { spawnedEnemy.ShipMvt.InstantStopShip(); } if (spawnedEnemiesAutoDetectPlayer) { spawnedEnemy.AutoDetectPlayer(); } } #endregion if (cinematicToPlayOnWaveStart != null) { if (stopSpawnedEnemies) { cinematicToPlayOnWaveStart.PlayCinematic(allSpawnedEnemies); } else { cinematicToPlayOnWaveStart.PlayCinematic(); } } else { if (stopSpawnedEnemies) { GameManager.gameManager.CinematicMng.SetShipsToStart(allSpawnedEnemies); } } //GameManager.gameManager.ShowDebugText(waveName + " started (after enemy spawn)"); return(spawnedEnemies); }