private void EnemyKilledHandler(EnemyUnitData enemyUnitData) { if (_enemiesLeftToKill.ContainsKey(enemyUnitData)) { _enemiesLeftToKill[enemyUnitData]--; if (_enemiesLeftToKill[enemyUnitData] == 0) { _enemiesLeftToKill.Remove(enemyUnitData); } } if (_enemiesLeftToKill.Count == 0) { _currentWave++; if (_currentWave == _numberOfWaves) { OnPlayersWins?.Invoke(); return; } GetNextWave(); ResetTimer(); } }
public EnemyUnit CreateBonusUnit(int number) { EnemyUnitData enemyUnitData = unitFactory.CreateEnemyUnitDataForBonus(number); EnemyUnit enemy = Instantiate(bonusUnit, bonusUnitSpawnLocation).GetComponent <EnemyUnit>(); enemy.InitializeEnemyUnitGameObject(enemyUnitData, enemyUnitData.GetMaxHealth()); return(enemy); }
public EnemyUnit CreateBounty() { EnemyUnitData enemyUnitData = unitFactory.CreateEnemyUnitDataForBounty(); EnemyUnit enemy = Instantiate(bountyUnit, enemyUnitSpawnLocation).GetComponent <EnemyUnit>(); enemy.InitializeEnemyUnitGameObject(enemyUnitData, enemyUnitData.GetMaxHealth()); GameEngine.GetInstance().IncrementEnemyUnitCount(); return(enemy); }
private void EnemyReachedBaseHandler(EnemyUnitData enemyData) { _health = Mathf.Max(_health - enemyData.Damage); OnPlayerHealthChanged?.Invoke(_health); if (_health != 0) { return; } OnPlayerDefeat?.Invoke(); }
// Read in special enemy unit data private void InitializeSpecialEnemyUnitData() { specialEnemyData = new Dictionary <string, EnemyUnitData>(); int lineIndex = 0; TextAsset data = Resources.Load <TextAsset>(SPECIAL_ENEMY_UNIT_DATA_PATH); string[] lines = data.text.Split('\n'); foreach (string line in lines) { // skip file header if (lineIndex == 0) { lineIndex++; continue; } // Parse the line string[] lineTokens = line.Trim().Split(','); if (lineTokens.Length <= 1) { lineIndex++; continue; } EnemyUnitData enemyUnitData; string displayName = lineTokens[0]; float movementSpeed = float.Parse(lineTokens[1]); float maxHealth = float.Parse(lineTokens[2]); float armor = float.Parse(lineTokens[3]); float maxShields = float.Parse(lineTokens[4]); float shieldRegenRate = float.Parse(lineTokens[5]); if (displayName == "Bounty") { enemyUnitData = EnemyUnitData.ConstructDataForBounty(displayName, movementSpeed, maxHealth, armor); } else { enemyUnitData = EnemyUnitData.ConstructDataForBoss(displayName, movementSpeed, maxHealth, armor, maxShields, shieldRegenRate); } specialEnemyData[displayName] = enemyUnitData; lineIndex++; } Debug.Log("Finished reading special enemy unit data. Read: [" + (lineIndex + 1) + "] number of lines."); }
//---------- Methods ---------- public void InitializeEnemyUnitGameObject(EnemyUnitData enemyUnitData, float initialHealth) { SetEnemyUnitData(enemyUnitData); this.currentHealth = initialHealth; this.currentShields = enemyUnitData.GetMaxShields(); UnitSpawner.SetObjectName(gameObject); if (enemyUnitData.GetEnemyType() == EnemyType.NORMAL) { SetNormalEnemyColor(); } // Attach select unit circle to this game object Transform enemyUnitCircle = transform.GetChild(0); selectedUnitCircle = enemyUnitCircle; }
// Read in enemy unit data private void InitializeEnemyUnitData() { enemyUnitData = new Dictionary <int, EnemyUnitData>(); int level; string displayName; float movementSpeed; float maxHealth; float armor; int lineIndex = 0; TextAsset data = Resources.Load <TextAsset>(ENEMY_UNIT_DATA_PATH); string[] lines = data.text.Split('\n'); foreach (string line in lines) { // skip file header if (lineIndex == 0) { lineIndex++; continue; } // Parse the line string[] lineTokens = line.Trim().Split(','); if (lineTokens.Length <= 1) { lineIndex++; continue; } level = int.Parse(lineTokens[0]); displayName = lineTokens[1]; movementSpeed = float.Parse(lineTokens[2]); maxHealth = float.Parse(lineTokens[3]); armor = float.Parse(lineTokens[4]); // Construct data object and store it EnemyUnitData enemyUnitData = EnemyUnitData.ConstructDataForNormal(displayName, movementSpeed, maxHealth, armor, level); this.enemyUnitData[level] = enemyUnitData; lineIndex++; } Debug.Log("Finished reading enemy unit data. Read: [" + (lineIndex + 1) + "] number of lines."); }
protected override void DrawPropertyLayout(GUIContent label) { var rect = EditorGUILayout.GetControlRect(label != null, 45); rect = EditorGUI.IndentedRect(rect); EnemyUnitData enemyUnit = ValueEntry.SmartValue; Texture texture = null; if (enemyUnit) { texture = GUIHelper.GetAssetThumbnail(enemyUnit.icon, typeof(TEnemyUnitData), true); GUI.Label(rect.AddXMin(50).AlignMiddle(16), EditorGUI.showMixedValue ? "-" : enemyUnit.Name + " " + $"[ AP:{enemyUnit.stats.Ap} HP:{enemyUnit.stats.Hp} DMG:{enemyUnit.stats.Dmg} DEF:{enemyUnit.stats.Def} ]"); } ValueEntry.WeakSmartValue = SirenixEditorFields.UnityPreviewObjectField(rect.AlignLeft(45), enemyUnit, texture, ValueEntry.BaseValueType); }
// Enemy Unit Creation Functions public EnemyUnit CreateEnemyUnit(int level) { EnemyUnitData enemyUnitData = unitFactory.CreateEnemyUnitData(level); EnemyUnit enemy = Instantiate(enemyUnit, enemyUnitSpawnLocation).GetComponent <EnemyUnit>(); float initialHealth = enemyUnitData.GetMaxHealth(); if (GameEngine.GetInstance().gameMode == GameMode.EASY) { initialHealth = Mathf.Floor(initialHealth * 0.6f); } else if (GameEngine.GetInstance().gameMode == GameMode.NORMAL) { initialHealth = Mathf.Floor(initialHealth * 0.8f); } enemy.InitializeEnemyUnitGameObject(enemyUnitData, initialHealth); GameEngine.GetInstance().IncrementEnemyUnitCount(); return(enemy); }
// Read in bonus unit data private void InitializeBonusUnitData() { bonusUnitData = new Dictionary <int, EnemyUnitData>(); int lineIndex = 0; TextAsset data = Resources.Load <TextAsset>(BONUS_UNIT_DATA_PATH); string[] lines = data.text.Split('\n'); foreach (string line in lines) { // skip file header if (lineIndex == 0) { lineIndex++; continue; } // Parse the line string[] lineTokens = line.Trim().Split(','); if (lineTokens.Length <= 1) { lineIndex++; continue; } int number = int.Parse(lineTokens[0]); float maxHealth = float.Parse(lineTokens[1]); float armor = float.Parse(lineTokens[2]); float maxShields = float.Parse(lineTokens[3]); float shieldRegenRate = float.Parse(lineTokens[4]); EnemyUnitData enemyUnitData = EnemyUnitData.ConstructDataForBonus(maxHealth, armor, maxShields, shieldRegenRate); bonusUnitData[number] = enemyUnitData; lineIndex++; } Debug.Log("Finished reading bonus unit data. Read: [" + (lineIndex + 1) + "] number of lines."); }
private void EnemyKilledHandler(EnemyUnitData enemyUnitData) { _resources += enemyUnitData.MoneyForKill; OnResourcesChanged?.Invoke(_resources); }
public EnemyUnitData CreateEnemyUnitDataForBonus(int number) { EnemyUnitData enemyUnitData = bonusUnitData[number]; return(enemyUnitData); }
public EnemyUnitData CreateEnemyUnitDataForBounty() { EnemyUnitData enemyUnitData = specialEnemyData["Bounty"]; return(enemyUnitData); }
// ---------- Enemy Unit Creation ---------- public EnemyUnitData CreateEnemyUnitData(int level) { EnemyUnitData data = enemyUnitData[level]; return(data); }
public void SetEnemyUnitData(EnemyUnitData enemyUnitData) { this.enemyUnitData = enemyUnitData; }