private void Start() { // is geloof ik beter voor performance dan telkens iets.instance te gebruiken //audioManager = AudioManager.Instance; audioManager = V3AudioManager.Instance; controller = V3Controller.Instance; blockManager = V3BlockManager.Instance; // stel het grid en de bounds in gridWidth = controller.gridWidth; gridHeight = controller.gridHeight; grid = new Transform[gridWidth, gridHeight]; UpdateOrigins(gridWidth, gridHeight); SetLineRendererPositions(); // voeg minos toe aan pool blockManager.AddNMinos(gridWidth * gridHeight); // was eerst globaal, maar dat is nu niet meer nodig, omdat de tetromino naar zijn startpositie kan springen Vector3 tetrominoSpawnPosition = new Vector3(bounds.topLeft.x + (bounds.topRight.x - bounds.topLeft.x) / 2, bounds.topLeft.y, bounds.topLeft.z); // maak tetromino aan tetromino = Instantiate(tetrominoPrefab, tetrominoSpawnPosition, Quaternion.identity).GetComponent <V3Tetromino>(); tetromino.player = this; otherPlayer = controller.player1 == this ? controller.player2 : controller.player1; controller.SpawnBall(this); verMoveSpeed = verMoveStartSpeed; }
// geeft minos aan tetromino public void GetNewShape(V3Tetromino tetromino) { // kiest willekeurig blok Shape s = GetRandomShape(); // haalt 4 minos uit de pool for (int i = 0; i < s.minoPositions.Length; i++) { GameObject gm = null; V3Mino mino = null; bool idleAvailable = poolManager.IdleObjectAvailable(); bool busyAvailable = poolManager.BusyObjectAvailable(); // pak een idle object uit de pool als er een beschikbaar is if (idleAvailable) { gm = poolManager.GetIdleObject(); mino = gm.GetComponent <V3Mino>(); } // pak een busy object uit de pool als er een beschikbaar is else if (busyAvailable) { gm = poolManager.GetBusyObject(); mino = gm.GetComponent <V3Mino>(); // zet de positie in het grid op null als hij er aan een toegewezen is mino.RemoveFromGrid(); } // als het gelukt is om een object uit de pool te halen if (gm != null) { mino.tetromino = tetromino; mino.hp = Random.Range(1, 3); gm.transform.SetParent(tetromino.transform); gm.transform.localPosition = s.minoPositions[i]; gm.GetComponent <SpriteRenderer>().sprite = s.minoSprite; // maak het object pas zichtbaar als alle wijzigingen erop zijn toegepast gm.SetActive(true); } } }