// Initiate a Fireball depends on what type of Fireball public GameObject createFireball(FireballType type = FireballType.RANDOM) { if (type == FireballType.RANDOM) { var randomFireball = Random.Range(0, 2); type = (FireballType)randomFireball; } GameObject tempFireball = null; switch (type) { case FireballType.PLAYER_FIREBALL: tempFireball = MonoBehaviour.Instantiate(playerFireball); tempFireball.GetComponent <FireballController>().damage = 10; break; case FireballType.ENEMY_FIREBALL: tempFireball = MonoBehaviour.Instantiate(enemyFireball); tempFireball.GetComponent <FireballController>().damage = 5; break; } if (gameController != null) { tempFireball.transform.parent = gameController.gameObject.transform; } tempFireball.SetActive(false); return(tempFireball); }
/*-----------------------PLAYER FIREBALL POOL----------------------------------*/ // Build Fireball pool private void _BuildFireballPool(FireballType type) { // create empty Queue structure m_fireballPool = new Queue <GameObject>(); for (int count = 0; count < MaxFireballs; count++) { var tempFireball = FireballFactory.Instance().createFireball(type); m_fireballPool.Enqueue(tempFireball); } }
/*----------------------------------------------------------------------------*/ /*-----------------------ENEMY FIREBALL POOL----------------------------------*/ // Build Enemy Fireball pool private void _BuildEnemyFireballPool(FireballType eType) { // create empty Queue structure m_enemyFireballPool = new Queue <GameObject>(); for (int count = 0; count < MaxFireballs; count++) { var tempFireball = FireballFactory.Instance().createFireball(eType); tempFireball.transform.Rotate(0.0f, 0.0f, 180.0f, Space.World); m_enemyFireballPool.Enqueue(tempFireball); } }
// Create a Fireball pool belongs to input type and number of fireball as well public void Init(int max_fireballs = 50, FireballType type = FireballType.PLAYER_FIREBALL, FireballType eType = FireballType.ENEMY_FIREBALL) { MaxFireballs = max_fireballs; _BuildFireballPool(type); _BuildEnemyFireballPool(eType); }