void MakeInstance() { if (instance == null) { instance = this; } }
public ItemBase GetAtPool(ItemType itemType) { Stack <ItemBase> stack; if (_itemsPool.TryGetValue(itemType, out stack)) { if (stack.Count > 0) { return(stack.Pop()); } } else { stack = new Stack <ItemBase>(); _itemsPool.Add(itemType, stack); } ItemBase item; switch (itemType) { case ItemType.PowerNormal: item = new ItemPowerNormal(); break; case ItemType.PowerBig: item = new ItemPowerBig(); break; case ItemType.PowerFull: item = new ItemPowerFull(); break; case ItemType.LifeFragment: item = new ItemLifeFragment(); break; case ItemType.Life: item = new ItemLife(); break; case ItemType.BombFragment: item = new ItemBombFragment(); break; case ItemType.Bomb: item = new ItemBomb(); break; default: item = null; break; } return(item); }
IEnumerator HexagonBombSpawn() { while (true) { float delay = UnityEngine.Random.Range(delayOfHexagonBomb * 0.6f, delayOfHexagonBomb * 1.4f); yield return new WaitForSeconds(delay); ItemBomb newObject = (ItemBomb)spawnManager.SpawnOverMapToRandom(ObjectPool.ItemHexagonBomb); newObject.EventOnExplosion += CreateExplosion; if (!spawnedBombs.Contains(newObject)) spawnedBombs.Add(newObject); } }
IEnumerator FixedBombSpawn() { while (true) { float delay = UnityEngine.Random.Range(delayOfFixedBomb * 0.5f, delayOfFixedBomb * 1.5f); yield return(new WaitForSeconds(delay)); ItemBomb newObject = (ItemBomb)SpawnItemOnMap(ObjectPool.ItemFixedBomb); newObject.EventOnExplosion += CreateExplosion; if (!spawnedBombs.Contains(newObject)) { spawnedBombs.Add(newObject); } } }
void CreateExplosion(ItemBomb owner) { switch (owner.explosionType) { case ExplosionType.Hexagon: float size = Vector3.Distance(owner.transform.position, Vector3.zero); Explosion explosion = (Explosion)particleManager.SpawnAndGetParticle(ParticleType.HexagonExplosion, planet); explosion.transform.localScale = Vector3.one * size; soundManager.PlayFXSound(SoundTypeFX.HexagonBomb); Camera.main.transform.DOShakePosition(0.5f); break; case ExplosionType.Fixed: particleManager.SpawnParticle(ParticleType.NormalExplosion, owner.transform); soundManager.PlayFXSound(SoundTypeFX.NormalBomb); break; } DisableExplosion(owner); }
void DisableExplosion(ItemBomb item) { spawnedBombs.Remove(item); item.EventOnExplosion -= CreateExplosion; item.gameObject.SetActive(false); }