IEnumerator GenerateEnemiesWithPause(WaveLogic i_CurrentWave) { //EnemyType[] waveTypeArr = TypeOfEnemiesEachWave[model.waveNumber]; //var typeMax = waveTypeArr.Length; var pathsMax = paths.Length; int waveLength = i_CurrentWave.getLength(); for (int i = 0; i < waveLength; i++) { //genereate enemies randomly var enemyType = i_CurrentWave.GetNextEnemy(); if (enemyType.Equals(EnemyType.End)) { yield break; } var enemyLocation = new Vector2(0f, 40f);; //instantiateLocations[UnityEngine.Random.Range(0, locationMax)]; //instantiate enemeies in random location var path = paths[UnityEngine.Random.Range(0, pathsMax)]; var enemy1 = Instantiate(enemyGenerator.getEnemy(enemyType), enemyLocation, Quaternion.identity) as GameObject; var enemyLogic = enemy1.GetComponent <IEnemy>(); enemyLogic.StartRandomPath(5 * 10); //enemyLogic.StartRandomPath("EnemyPath" + UnityEngine.Random.Range(1, 3), model.waveNumber * 10); yield return(new WaitForSeconds(numberOfSecBetweenEnemies)); //Wait } }
public void AddWave(WaveLogic waveLogic) { notNullReference.Check(waveLogic, "wave logic"); waves.Add(waveLogic); monsterIdsAndSpawnCount.AddRange(waveLogic.ShowMonsterIdAndSpawnCount()); }
// private void UpdateChallenges(float previousAccumulatedDt) { // foreach (Challenge c in challengesUnaffectedByWave) { // c.Update(previousAccumulatedDt, -1); // } // } private void UpdateWaves(float dt) { if (waves.Count == 0) { return; } int index = -1; if (currentWave == null) { currentWave = waves[0]; if (!firstWaveStart) { firstWaveStart = true; OnWaveStart(1); } } currentWave.Update(dt); if (currentWave.IsFinished()) { finishedWaves.Add(currentWave); if (finishedWaves.Count < waves.Count) { int indexOfNextWave = waves.IndexOf(currentWave) + 1; currentWave = waves[indexOfNextWave]; OnWaveStart(indexOfNextWave + 1); } } }
public WaveLogic(WaveLogic i_Wave) { _enemies = new EnemyType[i_Wave._enemies.Length]; for (int i = 0; i < _enemies.Length; i++) { _enemies[i] = i_Wave._enemies[i]; } _currentLocation = i_Wave._currentLocation; _speedMultiplier = i_Wave._speedMultiplier; _strengthMultiplier = i_Wave._strengthMultiplier; _hpBonus = i_Wave._hpBonus; }
// Use this for initialization public void generateWave(WaveGenerateModel i_model) { /** --omri's code * if (!TypeOfEnemiesEachWave.ContainsKey(model.waveNumber)) * { * return; * } */ WaveLogic currentWave = _wave.createEasyWave(); StartCoroutine(GenerateEnemiesWithPause(currentWave)); waveNumber++; }
public virtual void DoOneSecondOfHackingLogic(GameEntity Target, GameEntity Hacker, ArcenSimContext Context) { if (Hacker.ActiveHack_DurationThusFar >= this.GetTotalSecondsToHack(Target, Hacker)) { WaveLogic.SendWave(Context, Target.Side.WorldSide, Target.Side.WorldSide.AITypeData.BudgetItems[AIBudgetType.Wave].NormalMenusToBuyFrom, Target.Side.WorldSide.GetSpecificBudgetThreshold(AIBudgetType.Wave) * 5, Target, null); if (DoSuccessfulCompletionLogic(Target, Hacker, Context)) { Hacker.Side.WorldSide.StoredHacking -= this.GetCostToHack(Target, Hacker); } } else { if (Hacker.ActiveHack_DurationThusFar % 10 == 0) { WaveLogic.SendWave(Context, Target.Side.WorldSide, Target.Side.WorldSide.AITypeData.BudgetItems[AIBudgetType.Wave].NormalMenusToBuyFrom, Target.Side.WorldSide.GetSpecificBudgetThreshold(AIBudgetType.Wave) * 1, Target, null); } } }
public override void DoOneSecondOfHackingLogic(GameEntity Target, GameEntity Hacker, ArcenSimContext Context) { if (Hacker.ActiveHack_DurationThusFar >= this.GetTotalSecondsToHack(Target, Hacker)) { } else { if (Hacker.ActiveHack_DurationThusFar % 10 == 0) { FInt AIPPerTick = -(ExternalConstants.Instance.Balance_BaseAIPScale * FInt.FromParts(0, 100)); World_AIW2.Instance.ChangeAIP(AIPPerTick, AIPChangeReason.Hacking, Target.TypeData, Context); int ticksThusFar = Hacker.ActiveHack_DurationThusFar / 10; int totalWholeAIPReduced = (ticksThusFar * AIPPerTick).IntValue; FInt waveMultiplier = FInt.One; FInt multiplierMultiplierPerAIP = FInt.FromParts(1, 030); for (int i = 0; i < totalWholeAIPReduced; i++) { waveMultiplier *= multiplierMultiplierPerAIP; } WaveLogic.SendWave(Context, Target.Side.WorldSide, Target.Side.WorldSide.AITypeData.BudgetItems[AIBudgetType.Wave].NormalMenusToBuyFrom, Target.Side.WorldSide.GetSpecificBudgetThreshold(AIBudgetType.Wave) * waveMultiplier, Target, null); } } }
private WaveLogic createWave(WaveLogic[] i_waves){ int waveNumber = UnityEngine.Random.Range (0,i_waves.Length); WaveLogic wave = new WaveLogic(i_waves[waveNumber]); return wave; }