Example #1
0
 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;
 }
Example #2
0
    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;
        }
    }
Example #3
0
    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);
            }
        }
    }