Пример #1
0
    /// <summary>создает объект из потомка ItemController</summary>
    private void CreateItem <T>(GameSave.ItemType newType, GameSave.BrickHp baseHp = GameSave.BrickHp.singleHP) where T : ItemController
    {
        var freeCellList = GetFreeCellInRow(TurnCount);

        if (freeCellList.Count <= 0)
        {
            return;                          //свободных мест нет!
        }
        var freeColumn = freeCellList[Random.Range(0, freeCellList.Count)];

        var newBlock = _itemList.FirstOrDefault(item => item.GetType() == typeof(T) && !item.gameObject.activeSelf);

        if (newBlock == null)
        {
            foreach (var prefabItem in prefabList)
            {
                if (null != prefabItem.gameObject.GetComponent <T>())
                {
                    newBlock = (Instantiate(prefabItem, transform)).GetComponent <T>();
                    break;
                }
            }

            newBlock.manager = this;
            _itemList.Add(newBlock);
        }

        int decreasedValue = ((int)baseHp + 1) * CurrentBrickHpReductionValue();

        newBlock.Init(TurnCount, freeColumn, TurnCount * ((int)baseHp + 1) - decreasedValue);
    }
Пример #2
0
    void CreateItem(GameSave.ItemType itemToCreate, GameSave.BrickHp baseHP = GameSave.BrickHp.singleHP)
    {
        switch (itemToCreate)
        {
        case GameSave.ItemType.cube: CreateItem <CubeController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.boss: CreateItem <BossController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.onion: CreateItem <OnionController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.corner: CreateItem <CornerController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.armoured: CreateItem <ArmouredController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.dissapearing: CreateItem <DissapearingController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.moving: CreateItem <MovingController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.teleport: CreateItem <TeleportController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.ballCoin: CreateItem <BallCoinController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.starCoin: CreateItem <StarCoinController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.upForceCoin: CreateItem <UpForceCoinController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.diffuseBallCoin: CreateItem <DiffuseCoinController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.dopelgangerCoin: CreateItem <DopelgangerCoinController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.jumpBallCoin: CreateItem <JumpCoinController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.laserCoin: CreateItem <SingleLaserCoinController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.crossLaserCoin: CreateItem <CrossLaserCoinController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.killerCoin: CreateItem <KillerCoinController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.invunerable: CreateItem <InvunerableController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.superBossWall: CreateItem <SuperBossWallController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.superBossShield: CreateItem <SuperBossShieldController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.superBossExplosive: CreateItem <SuperBossExplosiveController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.magicDustCoin: CreateItem <MagicDustCoinCoinController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.removeBallCoin: CreateItem <RemoveBallCoinController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.explosive: CreateItem <ExplosiveController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.blackHoleCoin: CreateItem <BlackHoleCoinController>(itemToCreate, baseHP); break;

        case GameSave.ItemType.reduceBallsCountCoin: CreateItem <ReduceBallsCoinController>(itemToCreate, baseHP); break;
        }
    }