Example #1
0
    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();
        }
    }
Example #2
0
    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);
        }
    }