public virtual void set_Item(PuzzleItemType _type, int _x, int _y) { puzzleType = _type; x = _x; y = _y; }
public MyGridItemModel(PuzzleItemType type, PuzzleSource puzzleSource) { Type = type; this.puzzleSource = puzzleSource; }
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); } } } } }