void SpawnGeneric(SpaceMonster genericMonster, int numberSpawnedAtOnce, int spawnRoundPowerCap) { //TODO: fix this up later for (int i = 0; i < numberSpawnedAtOnce; i++) { if (currentNumberOfEnemies == maxNumberOfEnemies) { atEnemyCapacity = true; break; } SpaceMonster genericMonster_ = enemiesToAppearOnThisLevel.enemyTypes[UnityEngine.Random.Range(0, enemiesToAppearOnThisLevel.enemyTypes.Count - 1)]; SpaceMonster ourNewMonster = genericMonster.GetPooledInstance <SpaceMonster>(); ourNewMonster.transform.position = FindLocationInSafeZone.FindLocationInCircleExclusion(gameStateHandler.darkStar, 3.0f); // BlueDwarf newBlueDwarf = blueDwarfPrefab.GetPooledInstance<BlueDwarf>(); // newBlueDwarf.transform.position = FindLocationInSafeZone.FindLocationInCircleExclusion(gameStateHandler.darkStar, 3.0f); Type ourType = ourNewMonster.GetType(); if (!enemyDirectory.ContainsKey(ourType)) { List <GameObject> newGOsOfThisSpaceMonsterTypeList = new List <GameObject>(); enemyDirectory.Add(ourType, newGOsOfThisSpaceMonsterTypeList); enemyDirectory[ourType].Add(ourNewMonster.gameObject); // List<GameObject> blueDwarfList = new List<GameObject>(); // enemyDirectory.Add(typeof(BlueDwarf), blueDwarfList); // enemyDirectory[typeof(BlueDwarf)].Add(ourNewMonster.gameObject); } else { //enemyDirectory[typeof(BlueDwarf)].Add(ourNewMonster.gameObject); enemyDirectory[ourType].Add(ourNewMonster.gameObject); } currentNumberOfEnemies++; } }
void SpawnGeneric_(int numberSpawnedAtOnce, int spawnRoundPowerCap) { for (int i = 0; i < numberSpawnedAtOnce; i++) { if (currentNumberOfEnemies == maxNumberOfEnemies) { atEnemyCapacity = true; break; } SpaceMonster genericMonster_ = MakeSureUnderPowerCap(numberSpawnedAtOnce, currentPowerLevel);//enemiesToAppearOnThisLevel.enemyTypes[UnityEngine.Random.Range(0, enemiesToAppearOnThisLevel.enemyTypes.Count - 1)]; genericMonster_.transform.position = FindLocationInSafeZone.FindLocationInCircleExclusion(gameStateHandler.darkStar, 3.0f); Type ourType = genericMonster_.GetType(); if (!enemyDirectory.ContainsKey(ourType)) { List <GameObject> newGOsOfThisSpaceMonsterTypeList = new List <GameObject>(); enemyDirectory.Add(ourType, newGOsOfThisSpaceMonsterTypeList); enemyDirectory[ourType].Add(genericMonster_.gameObject); } else { enemyDirectory[ourType].Add(genericMonster_.gameObject); } currentNumberOfEnemies++; } }
SpaceMonster MakeSureUnderPowerCap(int spawnRoundPowerCap, int currentPowerLevel) { //List<SpaceMonster> newEnemiesToSpawn = new List<SpaceMonster>(); SpaceMonster enemyToSpawn = null; int runningPowerLevelOfGroupToSpawn = 0; //grab a random number from the enum that corresponds to a type EnemyGroup.EnemyTypes potentialType = (EnemyGroup.EnemyTypes)UnityEngine.Random.Range(0, System.Enum.GetValues(typeof(EnemyGroup.EnemyTypes)).Length); int potentialPowerCap = enemiesToAppearOnThisLevel.correspondingEnemyThreatLevel[potentialType]; if (potentialPowerCap + runningPowerLevelOfGroupToSpawn <= spawnRoundPowerCap) { //if this enemy type's power level + how much our current power level is is less than the power cap we want for this group //choose this spacemonster to spawn enemyToSpawn = enemiesToAppearOnThisLevel.correspondingSpaceMonster[potentialType].GetPooledInstance <SpaceMonster>(); //add the power cap to the total runningPowerLevelOfGroupToSpawn += potentialPowerCap; // newEnemiesToSpawn.Add(newEnemy) ;; } else { MakeSureUnderPowerCap(spawnRoundPowerCap, currentPowerLevel); } return(enemyToSpawn); }
// GameObject RandomSpawnFilter() // { // GameObject newSpawn; // for (int i = 0; i < spawnCap; i++) // { // newSpawn = fh.UnitTypes_[UnityEngine.Random.Range(0, (fh.UnitTypes_.Count))]; // Unit thisUnit = newSpawn.GetComponent<Unit>(); // int power = thisUnit.powerLevel; // //For example, power level is 2 // if ((power + powerSum) > powerCap) // { // if the power level in addition to other power levels goes over the power cap // newSpawn = RandomSpawnFilter(); // //respawn it to get one that fits within the power level // } // else // { //add power to power sum; // powerSum += power; // thisUnit.fh = fh; // counter++; // } // } // } public void SpawnIndependent(SpaceMonster ourType, Vector2 position) { if (!atEnemyCapacity) { Debug.Log("We're being spawned!"); SpaceMonster spaceMonster = ourType.GetPooledInstance <SpaceMonster>(); spaceMonster.transform.position = new Vector2(gameObject.transform.position.x, gameObject.transform.position.y - 5.0f); currentNumberOfEnemies++; if (currentNumberOfEnemies == maxNumberOfEnemies) { atEnemyCapacity = true; } } }
public override bool perform(GameObject agent) { SpaceMonster currentSpaceMonster = agent.GetComponent <SpaceMonster>(); if (currentSpaceMonster.stamina >= (500 - cost) && !isDashing) { currentSpaceMonster.stamina -= (500 - cost); dashTarget = Random.insideUnitCircle + (Vector2)transform.position * 3; isDashing = true; return(true); } else { return(false); } }
public override bool perform(GameObject agent) { performing = true; SpaceMonster currentSpaceMonster = agent.GetComponent <SpaceMonster>(); if (!isPulsing) { StartCoroutine(MiniPulse()); return(true); } if (interrupted) { Debug.Log("We're being interrupted!" + " " + this.name); performing = false; } return(performing); }
public override bool perform(GameObject agent) { if (!setPerformancePrereqs) { fleeDirection = GetDirection(agent); setPerformancePrereqs = true; } performing = true; SpaceMonster currentSpaceMonster = agent.GetComponent <SpaceMonster>(); if (!isDashing) { // dashTarget = UnityEngine.Random.insideUnitCircle + (Vector2)transform.position * 3; freeFromEnemy = false; isDashing = true; } if (interrupted) { performing = false; } return(performing); }