public float spawnTime; // How long to wait before spawning the tic tacs public SpawnModel(SE.PathLetter pathLetter, int spawnAmount, SE.Flavor flavor, float spawnTime) { this.pathLetter = pathLetter; this.spawnAmount = spawnAmount; this.flavor = flavor; this.spawnTime = spawnTime; }
private static readonly Vector3 spearmintOrbLocalScale = new Vector3(0.15f, 0.15f, 0.15f); // Local scale for the spearmint orb public void ActivateAbility(List <GameObject> collectedTicTacs) { foreach (Transform child in transform) { child.gameObject.SetActive(false); } // Hide container children SE.Flavor?firstFlavor = null; // If all the tic tacs you collected were of the same flavor, you will double the orb in size float abilityMultiplier = 1.0f; float abilityMultiplierIncrement = 1.0f / (float)(collectedTicTacs.Count - 1); foreach (GameObject collectedTicTac in collectedTicTacs) // Getting ability multiplier { SE.Flavor collectedTicTacFlavor = collectedTicTac.GetComponent <TicTac>().Flavor; if (firstFlavor == null) { firstFlavor = collectedTicTacFlavor; } else if (collectedTicTacFlavor == firstFlavor) { abilityMultiplier += abilityMultiplierIncrement; } } switch (firstFlavor) { case SE.Flavor.Orange: ActivateOrangeAbility(abilityMultiplier); break; case SE.Flavor.Mint: ActivateMintAbility(abilityMultiplier); break; case SE.Flavor.PeachAndPassionFruit: ActivatePeachAndPassionFruitAbility(abilityMultiplier); break; case SE.Flavor.Spearmint: // break; default: Debug.LogWarning("Unknown first flavor"); break; } }
private Dictionary <SE.Flavor, GameObject> ticTacPrefabDict; // Dictionary of tic tac prefabs, with their types as keys /* Takes in an tic tac flavor and a spawn amount, and spawns that many tic tacs of that flavor. Will only spawn up to the * far path limit. */ public void SpawnEnemies(SE.Flavor flavor, int spawnAmount) { if (!ticTacPrefabDict.ContainsKey(flavor)) { Debug.LogWarning("Tic Tac with flavor " + flavor + " doesn't exist."); return; } SE.PathRoute pathRoute = ticTacPrefabDict[flavor].GetComponent <TicTac>().PathRoute; Path path = (pathRoute == SE.PathRoute.Melee) ? meleePath : rangedPath; for (int i = 0; i < spawnAmount && pathLimits[2] - path.scriptDict.Count > 0; i++) { Vector3 spawnPosition = spawnPositions.Dequeue(); // Get spawn position float heightOffset = ticTacPrefabDict[flavor].transform.GetChild(0).localScale.y + (transform.position.y - (transform.localScale.y / 2.0f)); // Used to spawn object above field spawnPosition = V3E.SetY(spawnPosition, heightOffset); spawnPositions.Enqueue(spawnPosition); GameObject ticTac = Instantiate(ticTacPrefabDict[flavor], spawnPosition, Quaternion.identity); // Instantiate TicTac ticTacScript = ticTac.GetComponent <TicTac>(); ticTacScript.InitializeVariables(gameObject, collector); float delayTime = delayTimes.Dequeue(); // Get delay time delayTimes.Enqueue(delayTime); if (path.scriptDict.Count < pathLimits[0]) // Set path distance and start moving towards a new path position { ticTacScript.CurrPathDistance = SE.PathDistance.Close; ticTacScript.StartAdvanceCoroutine(((Random.insideUnitSphere * path.radii[0]) + path.centers[0]), delayTime); path.scriptDict.Add(ticTac.GetInstanceID(), ticTacScript); } else if (path.scriptDict.Count < pathLimits[1]) { ticTacScript.CurrPathDistance = SE.PathDistance.Mid; ticTacScript.StartAdvanceCoroutine(((Random.insideUnitSphere * path.radii[1]) + path.centers[1]), delayTime); path.scriptDict.Add(ticTac.GetInstanceID(), ticTacScript); } else // farPathLimit { ticTacScript.CurrPathDistance = SE.PathDistance.Far; ticTacScript.StartAdvanceCoroutine(((Random.insideUnitSphere * path.radii[2]) + path.centers[2]), delayTime); path.scriptDict.Add(ticTac.GetInstanceID(), ticTacScript); } } }