override public void Destroy() { if (_bonus != null) { IBonus t = _bonus; _bonus = null; t.Activate(); } if (leaveBonus != BonusTypes.NONE) { Field.Score.AddScore(SCORE_VALUE); switch (leaveBonus) { case BonusTypes.LHOR: SetBonus(new LineBonus(LineBonus.LineType.HORIZONTAL)); break; case BonusTypes.LVERT: SetBonus(new LineBonus(LineBonus.LineType.VERTICAL)); break; case BonusTypes.BOMB: SetBonus(new BombBonus(Field, this)); break; } leaveBonus = BonusTypes.NONE; } else { Field.Score.AddScore(SCORE_VALUE); Field.DestroyCell(this); base.Destroy(); } }
public void ActivateBonus(IBonus bonus) { bonus.SetPosition(_floor.GetCurrentMousePosition()); bonus.Activate(); _currentBonusTimer.Activate(bonus); _activeBonuses.Add(bonus); }
private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag(GameObjectsTags.BONUS_tag)) { activatorObject = collision.gameObject; bonusComponent = activatorObject.GetComponent <IBonus>(); bonusComponent.Activate(); IsActive = true; StartCoroutine(DestroyBonus(activatorObject)); } }