예제 #1
0
 public virtual void set_Item(PuzzleItemType _type, int _x, int _y)
 {
     puzzleType = _type;
     x          = _x;
     y          = _y;
 }
예제 #2
0
 public MyGridItemModel(PuzzleItemType type, PuzzleSource puzzleSource)
 {
     Type = type;
     this.puzzleSource = puzzleSource;
 }
예제 #3
0
파일: PuzzleManager.cs 프로젝트: uty6910/JH
    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);
                    }
                }
            }
        }
    }