Example #1
0
    private PuzzleBaseItemObj make_PuzzleItemObj(int x, int y)
    {
        int _type = Random.Range(0, m_itemList.Length);
        PuzzleBaseItemObj puzzleObj = PoolManager.instance.puzzlePool.Rent();

        puzzleObj.transform.localPosition = new Vector3(x * DefineClass.PuzzleXSize, y * DefineClass.PuzzleYSize, 0);
        PuzzleBaseItemObj _itemObj = puzzleObj.GetComponent <PuzzleBaseItemObj>();

        _itemObj.set_Item((PuzzleItemType)_type, x, y);
        _itemObj.BringIn();
        return(_itemObj);
    }
Example #2
0
 protected virtual void PuzzleChangeAnim(PuzzleBaseItemObj _target)
 {
     Anime.Play(transform.localPosition, _target.GetPos(), Motion.Uniform(DefineClass.PuzzleItemChangeAnimVel))
     .Subscribe(_ =>
     {
         transform.localPosition = _;
         if (transform.localPosition == _target.transform.localPosition)
         {
             PuzzleManager.instance.DestroyPuzzleItem();
         }
     });
 }
Example #3
0
    private void CheckSamePuzzleItem(List <PuzzleBaseItemObj> _pList, PuzzleBaseItemObj _checkItem, CheckPuzzleDir dir)
    {
        int            x    = _checkItem.x;
        int            y    = _checkItem.y;
        PuzzleItemType type = _checkItem.puzzleType;

        if (dir == CheckPuzzleDir.NONE || dir == CheckPuzzleDir.Horizontal)
        {
            if (_checkItem.x > 0 && _checkItem.x < PuzzleWidth - 1)
            {
                if (type == puzzleArray[y, x + 1].puzzleType && type == puzzleArray[y, x - 1].puzzleType)
                {
                    if (_pList.Contains(puzzleArray[y, x + 1]) == false)
                    {
                        if (y < PuzzleHeight - 1)
                        {
                            puzzleArray[y + 1, x + 1].MovePos.Value = puzzleArray[y, x + 1].GetPos();
                        }
                        else
                        {
                            make_PuzzleItemObj(y + 1, x + 1).MovePos.Value = puzzleArray[y, x + 1].GetPos();
                        }
                        _pList.Add(puzzleArray[y, x + 1]);
                        CheckSamePuzzleItem(_pList, puzzleArray[y, x + 1], CheckPuzzleDir.Horizontal);
                    }

                    if (_pList.Contains(puzzleArray[y, x - 1]) == false)
                    {
                        if (y < PuzzleHeight - 1)
                        {
                            puzzleArray[y + 1, x - 1].MovePos.Value = puzzleArray[y, x - 1].GetPos();
                        }
                        else
                        {
                            make_PuzzleItemObj(y + 1, x - 1).MovePos.Value = puzzleArray[y, x - 1].GetPos();
                        }
                        _pList.Add(puzzleArray[y, x - 1]);
                        CheckSamePuzzleItem(_pList, puzzleArray[y, x - 1], CheckPuzzleDir.Horizontal);
                    }
                }
            }
        }

        if (dir == CheckPuzzleDir.NONE || dir == CheckPuzzleDir.Vertical)
        {
            if (_checkItem.y > 0 && _checkItem.y < PuzzleHeight - 1)
            {
                if (type == puzzleArray[y + 1, x].puzzleType && type == puzzleArray[y - 1, x].puzzleType)
                {
                    bool bAdd = false;

                    if (_pList.Contains(puzzleArray[y - 1, x]) == false)
                    {
                        if (y + 2 < PuzzleHeight - 1)
                        {
                            bAdd = true;
                            puzzleArray[y + 2, x].MovePos.Value = puzzleArray[y - 1, x].GetPos();
                        }
                        else
                        {
                            make_PuzzleItemObj(y + 2, x).MovePos.Value = puzzleArray[y - 1, x].GetPos();
                        }
                        _pList.Add(puzzleArray[y - 1, x]);
                        CheckSamePuzzleItem(_pList, puzzleArray[y - 1, x], CheckPuzzleDir.Vertical);
                    }

                    if (_pList.Contains(puzzleArray[y + 1, x]) == false)
                    {
                        if (y + (bAdd ? 3 : 2) < PuzzleHeight - 1)
                        {
                            puzzleArray[y + (bAdd ? 3 : 2), x].MovePos.Value = puzzleArray[y + 1, x].GetPos();
                        }
                        else
                        {
                            make_PuzzleItemObj(y + (bAdd ? 3 : 2), x).MovePos.Value = puzzleArray[y + 1, x].GetPos();
                        }
                        _pList.Add(puzzleArray[y + 1, x]);
                        CheckSamePuzzleItem(_pList, puzzleArray[y + 1, x], CheckPuzzleDir.Vertical);
                    }
                }
            }
        }
    }