コード例 #1
0
    static void DragFromTo(int fromX, int fromY, int toX, int toY)
    {
        if (!FieldMatrix.Get(fromX, fromY, out var fromBlock))
        {
            return;
        }
        if (FieldMatrix.Get(toX, toY, out var toBlock))
        {
            var bind           = BindMatrix.GetBind(fromBlock, toBlock);
            var newBlockOffset = new Vector2(toX - fromX, toY - fromY);
            if (bind == null)
            {
                BindMatrix.AddBind(fromBlock, toBlock, newBlockOffset, Bind.BlockBindStrength);
                return;
            }

            if (bind.First != fromBlock)
            {
                if (!(fromBlock is RootBlock) && BindMatrix.GetOutBindsCount(fromBlock) == 0)
                {
                    fromBlock.Destroy();
                    return;
                }

                bind.Break();
                BindMatrix.AddBind(fromBlock, toBlock, newBlockOffset, Bind.BlockBindStrength);
                return;
            }
            return;
        }
        NodeBlock.Create(toX, toY, fromBlock);
    }
コード例 #2
0
ファイル: NodeBlock.cs プロジェクト: makscee/prototype-1
    public static NodeBlock Create(int x, int y, Block boundWith)
    {
        var b = Create(x, y, boundWith.rootId);

        BindMatrix.AddBind(boundWith, b, b.logic.Position - boundWith.logic.Position, Bind.BlockBindStrength);
        return(b);
    }
コード例 #3
0
    public static RootBlock Create(int x, int y, int rootId = -1)
    {
        rootId = rootId == -1 ? Roots.Count : rootId;
        var b = Instantiate(Prefabs.Instance.rootBlock, Roots.Root[rootId].rootCanvas.transform).GetComponent <RootBlock>();

        b.rootId = rootId;
        b.logic.SetCoords(x, y);
        b.transform.position = b.logic.Position;
        b.StartInit();
        BindMatrix.AddBind(StaticAnchor.Create(b.logic.Position), b, Vector2.zero, Bind.BlockStaticBindStrength);
        b.view.SetDirty();
        return(b);
    }
コード例 #4
0
ファイル: Block.cs プロジェクト: makscee/prototype-1
 protected virtual void OnEnable()
 {
     logic.onBeginDrag += eventData =>
     {
         if (eventData.button == PointerEventData.InputButton.Right)
         {
             BindMatrix.AddBind(this, MouseBind.Get(), Vector2.zero, Bind.MouseBindStrength);
         }
     };
     logic.onEndDrag += eventData =>
     {
         if (eventData.button == PointerEventData.InputButton.Right)
         {
             BindMatrix.RemoveBind(this, MouseBind.Get());
         }
     };
 }
コード例 #5
0
ファイル: NodeBlock.cs プロジェクト: makscee/prototype-1
    public static NodeBlock Create(int x, int y, int rootId = 0, float startOffsetClamp = 0f)
    {
        var position      = new Vector2(x, y);
        var startPosition = position + Vector2.ClampMagnitude(Roots.Root[rootId].block.logic.Position - position, startOffsetClamp);
        var b             = Instantiate(Prefabs.Instance.nodeBlock, startPosition, Quaternion.identity, Roots.Root[rootId].rootCanvas.transform).GetComponent <NodeBlock>();

        b.rootId = rootId;
        b.logic.SetCoords(x, y);
        b.StartInit();
        var startModel = b.view.VisualBase.Current;

        Animator.Interpolate(0.4f, 1f, 0.4f)
        .PassValue(v => startModel.transform.localScale = new Vector3(v, v, 1))
        .Type(InterpolationType.InvSquare).NullCheck(startModel.gameObject);
        BindMatrix.AddBind(StaticAnchor.Create(b.logic.Position, false), b, Vector2.zero, Bind.BlockStaticBindStrength);
        Roots.Root[rootId].DeadEndsSetDirty();
        return(b);
    }
コード例 #6
0
ファイル: GameSerialized.cs プロジェクト: makscee/prototype-1
    public void Deserialize()
    {
        foreach (var rb in RootBlocks)
        {
            rb.Deserialize();
        }
        foreach (var bs in NodeBlocks)
        {
            bs.Deserialize();
        }

        foreach (var bs in Binds)
        {
            FieldMatrix.Get(bs.FirstX, bs.FirstY, out var first);
            FieldMatrix.Get(bs.SecondX, bs.SecondY, out var second);
            var offset = new Vector2(bs.SecondX - bs.FirstX, bs.SecondY - bs.FirstY);
            BindMatrix.AddBind(first, second, offset, bs.Strength);
        }

        foreach (var sps in SoundsPlayers)
        {
            sps.Deserialize();
        }
    }
コード例 #7
0
 protected override void StartInit()
 {
     base.StartInit();
     view.SetInitialModel(BlockVisualBase.Model.Root);
     BindMatrix.AddBind(StaticAnchor.Create(logic.Position), this, Vector2.zero, Bind.BlockBindStrength);
 }