//Chooses random enemy from list of available enemies private Enemy FindEnemyToSpawn(Wave currWave) { int enemyIndex = Random.Range(0, currWave.enemiesToSpawn.Count); EnemyTypeCounter eCounter = currWave.enemiesToSpawn[enemyIndex]; eCounter.spawnAmount--; currWave.enemiesToSpawn[enemyIndex] = eCounter; //If wave has spawn its allotted number of an enemy type, remove it as an option if (eCounter.spawnAmount <= 0) { currWave.enemiesToSpawn.Remove(eCounter); } return(eCounter.enemyType); }
private void EnableInitiation() { if (EnemyGenerator.instance != null) { AddObjectToAllObjectList(); } else { StartCoroutine(AddObjectToObjectListTimedOut()); } if (MainCount.instance != null) { float mass = MainCount.instance.FloatRandom(enemyScriptable.enemyMassMin, enemyScriptable.enemyMassMax); if (incomeingData != null && incomeingData.isSecondGeneratedObject) { stats.xSpeed = incomeingData.xSpeed; stats.ySpeed = incomeingData.ySpeed; stats.moveRight = incomeingData.moveRight; stats.moveUp = incomeingData.moveUp; } else { stats.speedMin = enemyScriptable.speedMin; stats.speedMax = enemyScriptable.speedMax; } rb2d.mass = mass; stats.mass = mass; stats.consumePercentage = MainCount.instance.FloatRandom(enemyScriptable.minConsumeValue, enemyScriptable.maxConsumeValue) / 100; stats.solidValue = MainCount.instance.FloatRandom(enemyScriptable.minSolidValue, enemyScriptable.maxSolidValue); stats.consumeType = enemyScriptable.consumeType; stats.enemyType = EnemyTypeCounter.GetEnemyType(mass, stats.solidValue); stats.isRandomMovement = enemyScriptable.isRandomMovement; ChangeType(stats.enemyType); enemyMovement.Move(rb2d, stats); BaseDistanseCheck baseDistanseCheck = new BaseDistanseCheck(this); } }
private void ChangeType(SpaceBodyType newEnemyType)//2 { EnemyAbiliteesCounter enemyAbiliteesCounter = new EnemyAbiliteesCounter(); EnemyAbiliteesDTO enemyAbiliteesDTO = enemyAbiliteesCounter.GetEnemyAbilitees(newEnemyType); stats.hasGavity = enemyAbiliteesDTO.hasGavity; stats.gravityRange = enemyAbiliteesDTO.gravityRange; stats.gravityValue = enemyAbiliteesDTO.gravityValue; enemyAttractor.Attract(gameObject, stats); if (stats.enemyType != newEnemyType) { //image here stats.enemyType = EnemyTypeCounter.GetEnemyType(stats.mass, stats.solidValue); EnemyParametaers parametaers = EnemyParametersLibrary.instance.GetEnemyParametaers(stats.enemyType); spriteRenderer.sprite = parametaers.sprite; circleCollider.radius = parametaers.colliderRadius; if (parametaers.isChangingColor) { spriteRenderer.color = GetEnemyColorAccordingToPlayerStats(); } } }
//WARNING: Inefficient implementation as its the last week of development // and I didn't know Unity allows you to edit custom structs in the inspector private void InitializeWaves() { //Wave 1: //Create enemy types + amounts featured in wave List <EnemyTypeCounter> eList1 = new List <EnemyTypeCounter>(); EnemyTypeCounter eGrunt1 = new EnemyTypeCounter(grunt_prefab, 10); //Add those types + amounts to the list of enemiesTypes. eList1.Add(eGrunt1); //Create wave and add it to the list of waves Wave wave1 = new Wave(1, eList1, false, null, false, null); waves.Add(wave1); //Wave 2: List <EnemyTypeCounter> eList2 = new List <EnemyTypeCounter>(); EnemyTypeCounter eGrunt2 = new EnemyTypeCounter(grunt_prefab, 10); EnemyTypeCounter eMage2 = new EnemyTypeCounter(mage_prefab, 5); EnemyTypeCounter eSmall2 = new EnemyTypeCounter(small_prefab, 3); eList2.Add(eGrunt2); eList2.Add(eMage2); eList2.Add(eSmall2); Wave wave2 = new Wave(2, eList2, false, null, false, null); waves.Add(wave2); //Wave 3: List <EnemyTypeCounter> eList3 = new List <EnemyTypeCounter>(); Enemy[] wave3Start = { grunt_prefab, grunt_prefab, grunt_prefab, grunt_prefab, grunt_prefab }; EnemyTypeCounter eGrunt3 = new EnemyTypeCounter(grunt_prefab, 6); EnemyTypeCounter eBomber3 = new EnemyTypeCounter(bomber_prefab, 7); EnemyTypeCounter eMage3 = new EnemyTypeCounter(mage_prefab, 2); Enemy[] wave3End = { big_prefab }; eList3.Add(eGrunt3); eList3.Add(eBomber3); eList3.Add(eMage3); Wave wave3 = new Wave(3, eList3, true, wave3Start, true, wave3End); waves.Add(wave3); //Wave 4: List <EnemyTypeCounter> eList4 = new List <EnemyTypeCounter>(); Enemy[] wave4Start = { big_prefab }; EnemyTypeCounter eGrunt4 = new EnemyTypeCounter(grunt_prefab, 12); EnemyTypeCounter eMage4 = new EnemyTypeCounter(mage_prefab, 6); EnemyTypeCounter eBomber4 = new EnemyTypeCounter(bomber_prefab, 4); EnemyTypeCounter eSmall4 = new EnemyTypeCounter(small_prefab, 2); Enemy[] wave4End = { big_prefab }; eList4.Add(eGrunt4); eList4.Add(eMage4); eList4.Add(eBomber4); eList4.Add(eSmall4); Wave wave4 = new Wave(4, eList4, true, wave4Start, true, wave4End); waves.Add(wave4); }
public virtual SpaceBodyType GetType(float mass, float solid) { return(EnemyTypeCounter.GetEnemyType(mass, solid)); }