public classTileParts(vco_CrystalPanel _catchVco, SpriteRenderer _catchSpr, SpriteAtlas _ctachAtlas, string _catchType, string _catchSpecial = "") { myParents = _catchVco; mySpriteRenderer = _catchSpr; myAtlas = _ctachAtlas; myPartsType = _catchType; myPartsSpecialType = _catchSpecial; }
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; } }
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; } }
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(); } }