/// <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); }
public override void Init(int newLevel, int newIndex, int newHitPoint) { base.Init(newLevel, newIndex, newHitPoint); transform.localScale = Vector3.one; baseHP = (GameSave.BrickHp)(newHitPoint / (newLevel != 0 ? newLevel : 1) - 1); if (newHitPoint > 0) { hitCounter = newHitPoint; } if (countText) { SetHPTextPosition(); countText.text = newHitPoint.ToString(); } if (cubeEffectController) { cubeEffectController.isPoisoned = false; cubeEffectController.ResetEffect(); cubeEffectController.PlayAppearEffect(this); cubeEffectController.OnInit(this); } manager.game.OnStateEnded += OnStateEnded; starterHitCounter = hitCounter; }
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; } }
public override void Load(BrickManager newManager, GameSave.GameItem saveItem) { base.Load(newManager, saveItem); baseHP = saveItem.baseHP; if (countText) { SetHPTextPosition(); countText.text = hitCounter.ToString(); } if (cubeEffectController) { cubeEffectController.isPoisoned = false; cubeEffectController.ResetEffect(); cubeEffectController.PlayAppearEffect(this); cubeEffectController.OnInit(this); } manager.game.OnStateEnded += OnStateEnded; }