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