コード例 #1
0
        public DStart(DialogueEditorWPF editor, int orderKey, int StartNbr, float x, float y, ConvGraphEditor ConvGraphEditor)
            : base(ConvGraphEditor)
        {
            NodeUID = 2000 + StartNbr;
            Editor  = editor;
            Order   = orderKey;
            string ordinal = DialogueEditorWPF.AddOrdinal(orderKey + 1);

            StartNumber = StartNbr;
            outlinePen  = new Pen(EventColor);
            listname    = $"{ordinal} Start Node: {StartNbr}";;

            float starty = 0;
            float w      = 15;
            float midW   = 50;

            GetTitleBox(listname, 20);

            w += titleBox.Width;
            OutputLink l = new OutputLink
            {
                Links        = new List <int>(StartNbr),
                InputIndices = new int(),
                Edges        = new List <DiagEdEdge>(),
                Desc         = $"Out {StartNbr}",
                RCat         = EReplyCategory.REPLY_CATEGORY_DEFAULT
            };
            int linkedOp = StartNbr;

            l.Links.Add(linkedOp);
            l.InputIndices  = 0;
            l.node          = CreateActionLinkBox();
            l.node.Brush    = outputBrush;
            l.node.Pickable = false;

            PPath dragger = CreateActionLinkBox();

            dragger.Brush = mostlyTransparentBrush;
            dragger.X     = l.node.X;
            dragger.Y     = l.node.Y;
            dragger.AddInputEventListener(outputDragHandler);
            l.node.AddChild(dragger);
            Outlinks.Add(l);
            outLinkBox = new PPath();
            DText t2 = new DText($"{StartNbr} :");

            if (t2.Width + 10 > midW)
            {
                midW = t2.Width + 10;
            }
            t2.X        = 0 - t2.Width;
            t2.Y        = starty - 10;
            t2.Pickable = false;
            t2.AddChild(l.node);
            outLinkBox.AddChild(t2);
            outLinkBox.AddPolygon(new[] { new PointF(0, 0), new PointF(0, starty), new PointF(-0.5f * midW, starty + 30), new PointF(0 - midW, starty), new PointF(0 - midW, 0), new PointF(midW / -2, -30) });
            outLinkBox.Pickable = false;
            outLinkBox.Pen      = outlinePen;
            outLinkBox.Brush    = nodeBrush;
            float h = titleBox.Height + 1;

            outLinkBox.TranslateBy(titleBox.Width / 2 + midW / 2, h + 30);

            h     += outLinkBox.Height + 1;
            bounds = new RectangleF(0, 0, w, h);
            AddChild(titleBox);
            AddChild(outLinkBox);
            Pickable = true;
            SetOffset(x, y);
            MouseEnter += OnMouseEnter;
            MouseLeave += OnMouseLeave;
        }