예제 #1
0
    public void remove(IPuzzleLayer layer)
    {
        var i = layer.GetLayerIndex();

        layers.RemoveAt(i);
        layer.SetLayerIndex(Tool.NullIndex);

        refreshLayerDepth();
    }
예제 #2
0
    void startMoving()
    {
        ConnectedSet.pieceForAlign = (connectedSet == null) ? null : this;
        MovingTarget = (connectedSet != null) ? connectedSet : this as IPuzzleLayer;
        MovingTarget.BeforeMoving();

        // 記下位置
        oldLocalPos  = MovingTarget.GetTransform().localPosition;
        beginDragPos = Input.mousePosition;

        onMoving = true;
    }
예제 #3
0
    void downToUpInsert(IPuzzleLayer layer)
    {
        for (var i = 0; i < layers.Count; ++i)
        {
            var L = layers[i];
            if (layer.GetPiecesCount() > L.GetPiecesCount()) // 比這層大,就插入
            {
                layers.Insert(i, layer);
                return;
            }
        }

        layers.Insert(layers.Count, layer);
    }
예제 #4
0
    public void add(IPuzzleLayer layer)
    {
        if (layers.Count == 0)
        {
            layer.SetLayerIndex(0);
            layers.Add(layer);
        }
        else
        {
            upToDownInsert(layer);
        }

        refreshLayerDepth();
    }
예제 #5
0
    void stopMoving()
    {
        if (inPocket) // 口袋區
        {
            var pocket = PuzzlePiecePocket.Instance;
            transform.parent = pocket.transform;
            pocket.refreshPocket();
            PuzzlePieceGroup.Instance.removeFromBucket(this);
        }
        else
        {
            MovingTarget.AfterMoving();
        }

        MovingTarget = null;
        onMoving     = false;
    }
예제 #6
0
    public void update(IPuzzleLayer layer, bool downToUp = true)
    {
        var i = layer.GetLayerIndex();

        layers.RemoveAt(i);

        // 從下往上插入會比較快
        if (downToUp)
        {
            downToUpInsert(layer);
        }
        else
        {
            upToDownInsert(layer);
        }

        refreshLayerDepth();
    }
예제 #7
0
    void upToDownInsert(IPuzzleLayer layer)
    {
        var startIndex = layers.Count - 1;

        for (var i = startIndex; i >= 0; --i)
        {
            var L = layers[i];
            if (layer.GetPiecesCount() <= L.GetPiecesCount()) // 比這層小,就插入
            {
                var insetIndex = i + 1;
                layers.Insert(insetIndex, layer);
                return;
            }
        }

        //比所有的都大
        var head = 0;

        layers.Insert(head, layer);
    }
예제 #8
0
 public void moveToTop(IPuzzleLayer layer)
 {
     update(layer, false);
 }