public classTileParts(vco_CrystalPanel _catchVco, SpriteRenderer _catchSpr, SpriteAtlas _ctachAtlas, string _catchType, string _catchSpecial = "")
 {
     myParents          = _catchVco;
     mySpriteRenderer   = _catchSpr;
     myAtlas            = _ctachAtlas;
     myPartsType        = _catchType;
     myPartsSpecialType = _catchSpecial;
 }
Exemple #2
0
    public void CatchCallCrystalPanel(vco_CrystalPanel _targetPanelVco, string _callType)
    {
        switch (_callType)
        {
        case vco_CrystalPanel.CALL_READY_START:
            listFixedPanelVcos.Add(_targetPanelVco);

            if (listFixedPanelVcos.Count == MAX_PANEL_ALL)
            {
                arrayAttributeBoard = new int[MAX_PANEL_ROW, MAX_PANEL_COL];
                PullUpCrystalPanel(listFixedPanelVcos);
            }

            break;

        case vco_CrystalPanel.CALL_READY_FALL:
            countFallCrystalPanel++;
            _targetPanelVco.Fall();

            break;

        case vco_CrystalPanel.CALL_COMPLETE_FALL:
            int _setRow = _targetPanelVco.CurrentCellRow;
            int _setCol = _targetPanelVco.CurrentCellCol;
            arrayAttributeBoard[_setRow, _setCol] = _targetPanelVco.CurrentAttribute;

            countFallCrystalPanel--;

            Debug.Log(countFallCrystalPanel + " : " + _targetPanelVco.name);

            if (countFallCrystalPanel == 0)
            {
                listFixedPanelVcos.OrderBy(vco => vco.CurrentIndex);
                ConnectCrystalPanel();
                CheckSameGroup();
            }

            break;

        case vco_CrystalPanel.CALL_COMPLETE_CRASH:
            countCrashAnimationPanel--;

            if (countCrashAnimationPanel == 0)
            {
                listFallPanelVcos.ForEach(vco => vco.Fall());
                PullUpCrystalPanel(listRebornPanelVcos);
            }

            break;

        default:
            break;
        }
    }
Exemple #3
0
    private void CreateCrystalPanel()
    {
        foreach (Vector3Int _createPosition in ListRegularPositions)
        {
            GameObject _newPanel = Instantiate(Pfb_CrystalPanel);
            _newPanel.transform.parent        = transform;
            _newPanel.transform.localPosition = _createPosition;

            vco_CrystalPanel _vcoPanel = _newPanel.GetComponent <vco_CrystalPanel>();
            _vcoPanel.myManager    = this;
            _vcoPanel.Atlas_Panels = Atlas_Panels;
        }
    }
Exemple #4
0
    private void CheckSameGroup()
    {
        countGroupCrystalPanel = 0;
        List <int> _listNextPanel;
        List <int> _listSameGroup;

        foreach (var _targetPanelVco in listFixedPanelVcos)
        {
            _listNextPanel = new List <int>();
            _listSameGroup = new List <int>();

            if (_targetPanelVco.CurrentGroup == -1)
            {
                vco_CrystalPanel _checkPanelVco = _targetPanelVco;
                bool             _isContinue;
                List <int>       _listCheckedPanel = new List <int>();

                do
                {
                    _isContinue = false;

                    List <int> _listMemoPanel = new List <int>();

                    _checkPanelVco.CurrentGroup = countGroupCrystalPanel;
                    _listSameGroup.Add(_checkPanelVco.CurrentIndex);
                    _listCheckedPanel.Add(_checkPanelVco.CurrentIndex);

                    int _trgRow = _checkPanelVco.CurrentCellRow;
                    int _trgCol = _checkPanelVco.CurrentCellCol;

                    // 上方向に探索
                    if (_checkPanelVco.isSameAttr_NN)
                    {
                        int _addPoint = ((_trgRow - 1) * MAX_PANEL_ROW) + _trgCol + 0;
                        _listMemoPanel.Add(_addPoint);
                    }

                    // 左方向に探索
                    if (_checkPanelVco.isSameAttr_WW)
                    {
                        int _addPoint = ((_trgRow + 0) * MAX_PANEL_ROW) + _trgCol - 1;
                        _listMemoPanel.Add(_addPoint);
                    }

                    // 右方向に探索
                    if (_checkPanelVco.isSameAttr_EE)
                    {
                        int _addPoint = ((_trgRow + 0) * MAX_PANEL_ROW) + _trgCol + 1;
                        _listMemoPanel.Add(_addPoint);
                    }

                    // 下方向に探索
                    if (_checkPanelVco.isSameAttr_SS)
                    {
                        int _addPoint = ((_trgRow + 1) * MAX_PANEL_ROW) + _trgCol + 0;
                        _listMemoPanel.Add(_addPoint);
                    }

                    if (_listMemoPanel.Count > 0)
                    {
                        _listNextPanel = _listNextPanel.Union(_listMemoPanel).ToList();

                        foreach (int _deleteCellNumber in _listCheckedPanel)
                        {
                            _listNextPanel.Remove(_deleteCellNumber);
                        }

                        if (_listNextPanel.Count > 0)
                        {
                            int _nextCellNumber = _listNextPanel[0];
                            _checkPanelVco = listFixedPanelVcos[_nextCellNumber];
                            _listNextPanel.RemoveAt(0);
                            _isContinue = true;
                        }
                    }
                } while (_isContinue);

                _listSameGroup.Sort();
                countGroupCrystalPanel++;
            }

            _targetPanelVco.ReadyCrystalPanel();
        }
    }