private void MechanicsBonuses(HexagonalCell _cell) { SoundManager.Instance.PlayBonusStart(currentBonus, false); string strCurrentBonus = currentBonus.ToString(); if (strCurrentBonus.Contains("upend")) { isNeedActivateBonus = true; if (!_cell.GetCard().GetIsClosed()) { return; } currentActivSlot.ActivateBackImageCard(true); _cell.SetFlashingBack(false); _cell.GetCard().SetIsClosed(false); canUppend--; ManagerCombination.Instance.ClearMatchCells(); if (canUppend <= 0) { currentActivSlot.ClearSlot(); isNeedActivateBonus = false; HexagonalCell[] closedCells = HexagonalGrid.Instance.GetAllClosedCard(); for (int i = 0; i < closedCells.Length; i++) { closedCells[i].SetFlashingBack(false); } } } else if (strCurrentBonus.Contains("wind")) { int step = 0; if (currentBonus == eSpecialCard.wind1) { step = 1; } if (currentBonus == eSpecialCard.wind2) { step = 2; } if (currentBonus == eSpecialCard.wind3) { step = 3; } currentActivSlot.GetMyCard().SetMovePositionCallBack(_cell.transform.position, (delegate() { HexagonalGrid.Instance.WindFallNearCard(_cell.Info.myX, _cell.Info.myY, step); BonusManager.Instance.ClearCurrentBonusSlot(); ManagerCombination.Instance.ClearMatchCells(); activCard.SetEnableImageCard(true); })); } else if (strCurrentBonus.Contains("fireworks")) { int step = 0; if (currentBonus == eSpecialCard.fireworks2) { step = 1; } if (currentBonus == eSpecialCard.fireworks3) { step = 2; } currentActivSlot.GetMyCard().SetMovePositionCallBack(_cell.transform.position, (delegate() { HexagonalGrid.Instance.FallNearCard(_cell.Info.myX, _cell.Info.myY, step); BonusManager.Instance.ClearCurrentBonusSlot(); ManagerCombination.Instance.ClearMatchCells(); activCard.SetEnableImageCard(true); })); } else if (currentBonus == eSpecialCard.copy && !_cell.GetCard().GetIsClosed()) { if (!activCard.GetIsMoving()) { activCard.AppearanceInit((int)_cell.GetCard().Info.myColor, _cell.GetCard().Info.myNumCard, eSpecialCard.none); currentActivSlot.ClearSlot(); } } else if (currentBonus == eSpecialCard.chameleon && !_cell.GetCard().GetIsClosed() && _cell.GetCard().Info.mySpecialCard == eSpecialCard.none) { chameleonPanel.ActivatePanel(_cell); currentActivSlot.ClearSlot(); } else if (currentBonus == eSpecialCard.decrease && !_cell.GetCard().GetIsClosed() && _cell.GetCard().Info.myNumCard > 2) { _cell.GetCard().DecreaseCard(); currentActivSlot.ClearSlot(); } else if (currentBonus == eSpecialCard.increase && !_cell.GetCard().GetIsClosed() && _cell.GetCard().Info.myNumCard < 14) { _cell.GetCard().IncreaseCard(); currentActivSlot.ClearSlot(); } }
public void ActivateBonus(BonusSlot _bonusSlot) { if (_bonusSlot == null || _bonusSlot.GetBonus() == eSpecialCard.none || activCard.myCard.Info.mySpecialCard != eSpecialCard.none || isNeedActivateBonus) { return; } eSpecialCard _currentBonus = _bonusSlot.GetBonus(); SoundManager.Instance.PlayBonusStart(_currentBonus, true); isNeedActivateBonus = false; if (_currentBonus == eSpecialCard.Joker || _currentBonus.ToString().Contains("bullet")) { if (!activCard.GetIsMoving()) { activCard.SetReserveCardToPoll(); activCard.InitCard(0, 0, _currentBonus); _bonusSlot.ClearSlot(); } } else if (_currentBonus.ToString().Contains("wind") || _currentBonus.ToString().Contains("fireworks")) { if (!activCard.GetIsMoving()) { Transform card = _bonusSlot.GetMyCard().GetTransformImageCard(); Vector3 pos = activCard.transform.position; activCard.SetEnableImageCard(false); card.position = pos; NeedActivateBonus(_bonusSlot, false); } } else if (_currentBonus == eSpecialCard.upend1 || _currentBonus == eSpecialCard.upend2 || _currentBonus == eSpecialCard.upend3) { HexagonalCell[] closedCells = HexagonalGrid.Instance.GetAllClosedCard(); for (int i = 0; i < closedCells.Length; i++) { closedCells[i].SetFlashingBack(true); } canUppend = (int)_currentBonus; NeedActivateBonus(_bonusSlot, true); } else if (_currentBonus == eSpecialCard.upend4) { HexagonalCell[] closedCells = HexagonalGrid.Instance.GetAllClosedCard(); for (int i = 0; i < closedCells.Length; i++) { closedCells[i].GetCard().SetIsClosed(false); } _bonusSlot.ClearSlot(); } else if (_currentBonus == eSpecialCard.hurricane) { HexagonalGrid.Instance.MixAllCards(); _bonusSlot.ClearSlot(); } else if (_currentBonus == eSpecialCard.free) { activCard.SetCanFlight(); _bonusSlot.ClearSlot(); } else { NeedActivateBonus(_bonusSlot, true); } }