示例#1
0
    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
        }
    }
示例#2
0
        public void AddWave(WaveLogic waveLogic)
        {
            notNullReference.Check(waveLogic, "wave logic");

            waves.Add(waveLogic);
            monsterIdsAndSpawnCount.AddRange(waveLogic.ShowMonsterIdAndSpawnCount());
        }
示例#3
0
//		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);
                }
            }
        }
示例#4
0
 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;
 }
示例#5
0
    // 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++;
    }
示例#6
0
 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);
         }
     }
 }
示例#7
0
 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);
         }
     }
 }
示例#8
0
	private WaveLogic createWave(WaveLogic[] i_waves){
		int waveNumber = UnityEngine.Random.Range (0,i_waves.Length);
	    WaveLogic wave = new WaveLogic(i_waves[waveNumber]);
		return wave;
	}