コード例 #1
0
ファイル: PiceMover.cs プロジェクト: Peng-Zhiyuan/puzzle
 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);
     });
 }
コード例 #2
0
ファイル: Puzzle.cs プロジェクト: Peng-Zhiyuan/puzzle
    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;
    }
コード例 #3
0
ファイル: PiceMover.cs プロジェクト: Peng-Zhiyuan/puzzle
 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;
     }
 }
コード例 #4
0
ファイル: Puzzle.cs プロジェクト: Peng-Zhiyuan/puzzle
 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();
         }
     }
 }
コード例 #5
0
ファイル: Pice.cs プロジェクト: Peng-Zhiyuan/puzzle
 public void SetToFloating()
 {
     PiceMover.SetBlockToFloat(this);        //RemoveFromOwner();
     this.owner = PiceOwner.Floating;
 }