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); } }