예제 #1
0
 void MakeInstance()
 {
     if (instance == null)
     {
         instance = this;
     }
 }
예제 #2
0
    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);
    }
예제 #3
0
    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);
        }
    }
예제 #4
0
    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);
            }
        }
    }
예제 #5
0
    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);
    }
예제 #6
0
 void DisableExplosion(ItemBomb item)
 {
     spawnedBombs.Remove(item);
     item.EventOnExplosion -= CreateExplosion;
     item.gameObject.SetActive(false);
 }