private void BrickDamaged(BrickHealth brickDamaged) { if (audioSource != null && brickDamaged.damagedSound != null) { audioSource.PlayOneShot(brickDamaged.damagedSound); } if (m_brickTypesHit[brickDamaged.pointValue] == false) { if (m_gameInfo != null) { m_gameInfo.IncreaseBrickSpeedModifier(); } m_brickTypesHit[brickDamaged.pointValue] = true; } }
public void PopulateBoard() { if (m_gameInfo != null) { m_gameInfo.ResetBrickSpeedModifier(); } numBricksRemaining = 0; if (m_boardInfo != null) { m_brickTypesHit.Clear(); currentBrickPlacePosition = m_initialBrickPosition; foreach (BrickHealth brickType in m_boardInfo.GetBrickRows()) { if (brickType != null) { if (!m_brickTypesHit.ContainsKey(brickType.pointValue)) { m_brickTypesHit.Add(brickType.pointValue, false); } for (int i = 0; i < m_boardInfo.GetNumBrickColumns(); i++) { // Can tie in to events on a brick level here when we create them BrickHealth newBrick = Instantiate(brickType, currentBrickPlacePosition, Quaternion.identity, transform); newBrick.onDestroyedEvent.AddListener(BrickDestroyed); newBrick.onDamagedEvent.AddListener(BrickDamaged); m_bricks.Add(newBrick); numBricksRemaining++; currentBrickPlacePosition.x += 1f; } currentBrickPlacePosition.x = m_initialBrickPosition.x; } currentBrickPlacePosition.y -= 0.5f; } } }
private void BrickDestroyed(BrickHealth brickDestroyed) { numBricksRemaining--; if (audioSource != null && brickDestroyed.destroyedSound != null) { audioSource.PlayOneShot(brickDestroyed.destroyedSound); } if (m_gameInfo != null) { m_gameInfo.IncreaseScore(brickDestroyed.pointValue); if (numBricksRemaining <= 0) { m_gameInfo.NextLevel(); } } m_bricks.Remove(brickDestroyed); brickDestroyed.onDestroyedEvent.RemoveListener(BrickDestroyed); brickDestroyed.onDamagedEvent.RemoveListener(BrickDamaged); }