Exemple #1
0
    private void PrepareModuleThenSpawn()
    {
        div = divisionStep;
        if (levelDesigner.snapToDiv == false)
        {
            div = divFree;
        }
        UpdateDivisionChangeCountdown();
        if (spawnQueue[0].x == -1)
        {
            cueIsEmpty = true;
            CheckForDivisionChange();
            int rollSeqSpawnVsModSpawn = Random.Range(0, 100);
            if (rollSeqSpawnVsModSpawn < levelDesigner.chanceForSequence)
            {
                int rollSeqSpawnID = Random.Range(0, seqSpawnPossibilities.Length);
                int seqSpawnID     = seqSpawnPossibilities[rollSeqSpawnID];
                LevelDesigner.SequenceSpawn thisSeqSpawn = seqSpawnParams[seqSpawnID];
                //thisSequnce.seqTypeRot.Length må ikke være over queueLength
                for (int seqSpawnElemID = 0; seqSpawnElemID < thisSeqSpawn.seqTypeRot.Length; seqSpawnElemID++)
                {
                    int seqSpawnElemModType = Mathf.RoundToInt(thisSeqSpawn.seqTypeRot[seqSpawnElemID].x);
                    if (levelDesigner.CheckIfSpawnRotationIsZero(true, seqSpawnID, seqSpawnElemID))
                    {
                        thisSeqSpawn.seqTypeRot[seqSpawnElemID].y = Random.Range(0, 360);
                    }
                    int seqSpawnElemRotation = Mathf.RoundToInt(thisSeqSpawn.seqTypeRot[seqSpawnElemID].y / (360 / div));

                    spawnQueue[seqSpawnElemID] = new Vector2(seqSpawnElemModType, seqSpawnElemRotation); //here
                    spawnNameModOrSeq          = "S" + seqSpawnID + " ";
                }
            }
            else
            {
                int rollModSpawnID  = Random.Range(0, modSpawnPossibilities.Length);
                int modSpawnID      = modSpawnPossibilities[rollModSpawnID];
                int modSpawnModType = Mathf.RoundToInt(modSpawnParams[modSpawnID].modTypeRotProb.x);
                if (levelDesigner.CheckIfSpawnRotationIsZero(false, -1, modSpawnID))
                {
                    modSpawnParams[modSpawnID].modTypeRotProb.y = Random.Range(0, 360);
                }
                int modSpawnRotation = Mathf.RoundToInt(modSpawnParams[modSpawnID].modTypeRotProb.y / (360 / div));

                spawnQueue[0]     = new Vector2(modSpawnModType, modSpawnRotation); //here
                spawnNameModOrSeq = "M" + modSpawnID + " ";
            }
        }
        else
        {
            cueIsEmpty = false;
        }

        //Starpower
        bool spawnAsPuny = false;

        if (punyModsCounter > preDeaccelerationPoint)
        {
            spawnAsPuny = true;
        }


        int spawnID        = Mathf.RoundToInt(spawnQueue[0].x);
        int moduleType     = spawnID;
        int moduleRotation = Mathf.RoundToInt(spawnQueue[0].y);

        spawnedModsIndex++;
        spawnedMods[spawnedModsIndex]      = SpawnModule(gameSpeed, rotationSpeed, div, moduleRotation, moduleType, spawnAsPuny);
        spawnedMods[spawnedModsIndex].name = spawnNameModOrSeq + spawnedMods[spawnedModsIndex].name + moduleNumber.ToString();
        moduleNumber++;
        //starpower count down
        punyModsCounter--;
        ////trigger PRE deaccelleration if relevant
        if (punyModsCounter == preDeaccelerationPoint)
        {
            StarPowerPreDeacceleration();
        }

        //ryk køen
        for (int i = 0; i < spawnQueue.Length - 1; i++)
        {
            spawnQueue[i] = spawnQueue[i + 1];
        }

        //gør det sidste element "tomt" hvis vi nu er i en sequence
        spawnQueue[spawnQueue.Length - 1] = new Vector2(-1, -1);

        for (int i = 0; i < numberOfSelectableMods; i++)
        {
            currentSelectables[i] = spawnedMods[i];
            if (currentSelectables[i] != null)
            {
                currentSelectablesScript[i] = currentSelectables[i].GetComponent <Module>();
                currentSelectablesScript[i].thisModSelectionIndex = i;
            }
        }

        if (selectedModule == null)
        {
            SetSelectedModule(spawnedModsIndex);
        }
    }