public void Init() { _gems = new GemController[_itemsInRow, _itemsInRow]; float prefabSize = _gemPrefab.GetComponent <Renderer>().bounds.size.x; for (int i = 0; i < _itemsInRow; i++) { for (int j = 0; j < _itemsInRow; j++) { if (i == _itemsInRow - 1 && j == _itemsInRow - 1) { _blankPos = new IntVector2(i, j); _gems[i, j] = GemController.BlankGem(); continue; } GemController gem = Instantiate(_gemPrefab); gem.transform.parent = transform; gem.transform.localRotation = new Quaternion(0, 0, 0, 0); gem.transform.localScale = Vector3.one * prefabSize; float x = (j - _itemsInRow * 0.5f + 0.5f) * prefabSize; //FIXME not elegant, but works as aspected. God forgive me Vector3 newPos = new Vector3( (j - _itemsInRow * 0.5f + 0.5f) * prefabSize * _gemsOffset, _gemPrefab.transform.localPosition.y, ((_itemsInRow - i - 1) - _itemsInRow * 0.5f + 0.5f) * prefabSize * _gemsOffset); gem.transform.localPosition = newPos; gem.Init(i * _itemsInRow + (j) + 1, prefabSize * _gemsOffset); _gems[j, i] = gem; } } Shuffle(); //LogArray(); }
void OnMouseDown() { if (!_GameController.m_GamePause) { if (m_GemRender.sprite == null) { return; } if (m_IsSelected) { Deselect(); } else { if (m_Previous == null) { Select(); } else { if (GetAllAdjacentGems().Contains(m_Previous.gameObject)) { Swap(this.GetComponent <GemController>(), m_Previous.m_GemRender); m_Previous.ClearAllMatches(); m_Previous.Deselect(); ClearAllMatches(); } else { m_Previous.GetComponent <GemController>().Deselect(); Select(); } } } } }