public static void SetBlockToBoard(Pice pice, int indexX, int indexY) { PiceMover.SetBlockToFloat(pice); pice.ForeachPiceOfBlockWhitShift((onePice, shift) => { var onePiceIndexX = indexX + shift.x; var onePiceIndexY = indexY + shift.y; Puzzle.instance.board.Put(onePice, onePiceIndexX, onePiceIndexY); }); }
public void LoadInfo(PuzzleInfo info) { // 把所有 pice 拿起 foreach (var pice in PiceManager.list) { //pice.SetToFloating(); PiceMover.SetBlockToFloat(pice); pice.StopTween(); } // 逐个设置 pice 归属 foreach (var i in info.piceInfoList) { var index = i.index; var pice = PiceManager.GetByIndex(index); if (i.owner == PiceOwner.Board) { //pice.SetToBoard(i.boardX, i.boardY); PiceMover.SetBlockToBoard(pice, i.boardX, i.boardY); } else if (i.owner == PiceOwner.Side) { //pice.SetToSide(i.sideIndex); //side.Append(pice); PiceMover.SetToSide(pice, -1); } else if (i.owner == PiceOwner.Floating) { PiceMover.SetToSide(pice, -1); //pice.SetToSide(side.count - 1); } pice.isFixed = i.isFixed; pice.SortingOrder = i.sortingOrder; // linking pice.linkingList.Clear(); foreach (var linkingInfo in i.LinkingInfoList) { var linking = new Linking(); linking.directory = linkingInfo.directory; var linkingToPinceIndex = linkingInfo.piceIndex; var linkingToPice = PiceManager.GetByIndex(linkingToPinceIndex); linking.pice = linkingToPice; pice.linkingList.Add(linking); } // edge type pice.LeftType = i.leftType; pice.RightType = i.rightType; pice.BottomType = i.bottomType; pice.TopType = i.topType; } board.RepositionAllPiceNoAnimation(); side.RepositionPiceListNoAnimation(); LayerOrderDispatcher.next = info.nextOrder; }
public static void SetToSide(Pice pice, int index) { Assert.IsTrue(pice.linkingList.Count == 0, "only non-linked pice can'bt be set to side."); PiceMover.SetBlockToFloat(pice); if (index != -1) { Puzzle.instance.side.Insert(pice, index); pice.owner = PiceOwner.Side; } else { Puzzle.instance.side.Append(pice); pice.owner = PiceOwner.Side; } }
public void UpdatePiceOwner(Pice pice) { if (pice.owner == PiceOwner.Side) { var inSide = side.Rect.Contains(pice.transform.position); if (!inSide) { // 认为从side中拖出 //side.Remove(pice); PiceMover.SetBlockToFloat(pice); side.RepositionPiceList(); pice.TweenToScale(1); side.scrollView.AnimateFixContentPosition(); } else { var rect = side.GetCellRect(pice.sideIndex); if (!rect.Contains(pice.transform.position)) { // 认为在side中移动了位置 //side.Remove(pice); PiceMover.SetBlockToFloat(pice); var insertIndex = side.GetNearestCellIndex(pice); PiceMover.SetToSide(pice, insertIndex); side.RepositionPiceList(); side.scrollView.AnimateFixContentPosition(); } } } else if (pice.owner != PiceOwner.Side) { var inSide = side.Rect.Contains(pice.transform.position); if (inSide) { // 认为拖入side var insertIndex = side.GetNearestCellIndex(pice); PiceMover.SetToSide(pice, insertIndex); side.RepositionPiceList(); side.scrollView.AnimateFixContentPosition(); } } }
public void SetToFloating() { PiceMover.SetBlockToFloat(this); //RemoveFromOwner(); this.owner = PiceOwner.Floating; }