// Called before Start private void Awake() { // Create the Hashtable for Enemies if (_allEnemyPrefabs != null) { SaveEnemiesController.BuildHashtable(_allEnemyPrefabs); } }
/// <summary> /// Creates enemies based on the stored enemy data /// </summary> /// <param name="enemyParent">Transform that will serve as the parent for the loaded enemies</param> public static void LoadEnemies(Transform enemyParent) { // Get the amount of enemies ChildAmountData enemyAmData = SaveSystem.LoadEnemyAmount(); int amountEnemies = enemyAmData.GetChildAmount(); // Load each enemy for (int i = 0; i < amountEnemies; ++i) { // Get the data for the enemy EnemyData enemyData = SaveSystem.LoadEnemy(i); // Get the key of which prefab to spawn int key = enemyData.GetPrefabKey(); // Use the key to get the prefab to spawn GameObject enemyPrefab = SaveEnemiesController.GetEnemyPrefab(key); // Spawn the prefab as a child of the enemy Parent GameObject enemyObj = Object.Instantiate(enemyPrefab, enemyParent); // Set its transform components enemyObj.transform.position = enemyData.GetPosition(); // Get its EnemyStats script EnemyStats enemyStatsRef = enemyObj.GetComponent <EnemyStats>(); if (enemyStatsRef != null) { enemyStatsRef.SetStrength(enemyData.GetStrength()); enemyStatsRef.SetMagic(enemyData.GetMagic()); enemyStatsRef.SetSpeed(enemyData.GetSpeed()); enemyStatsRef.SetVitality(enemyData.GetVitality()); enemyStatsRef.SetBaseXpToGive(enemyData.GetBaseXpToGive()); enemyStatsRef.SetDifficulty(enemyData.GetDifficulty()); } else { Debug.LogError("There is no EnemyStats script attached to " + enemyObj.name); } // Get its EnemyHealth script EnemyHealth enemyHealthRef = enemyObj.GetComponent <EnemyHealth>(); if (enemyHealthRef != null) { enemyHealthRef.MaxHP = enemyData.GetMaxHealth(); enemyHealthRef.CurHP = enemyData.GetCurrentHealth(); } else { Debug.LogError("There is no EnemyHealth script attached to " + enemyObj.name); } // If it is rainbow attach a Rainbow script to it if (enemyData.GetIsRainbow()) { enemyObj.AddComponent <Rainbow>(); } } }