Beispiel #1
0
        public override async Task Draw(PainterScope painter, BoardState state)
        {
            await painter.DrawString(Text, Color.Black, StartPoint, Scale / 10f);

            //update hitbox
            size = MathHelper.ViewportToLocalPoint(await painter.MeasureString(Text, Scale / 10f), painter.Zoom);
        }
Beispiel #2
0
        protected override async Task DrawGate(PainterScope painter)
        {
            await painter.DrawLine(Color.DarkGray, 10, new Vec2(-1, -1), Vec2.Zero);

            await painter.DrawLine(Color.DarkGray, 10, new Vec2(0 - 1 / 20f, 0), new Vec2(1, 0));

            await painter.DrawStringC(GetRange(0), Color.Black, new Vec2(.4f, 0), 1 / 4f);

            await base.DrawGate(painter);

            if (splitDirection == 0)
            {
                await painter.DrawStringC("I", Color.Black, new Vec2(0f, -.5f), 1 / 3f);

                await painter.DrawStringC("/", Color.Black, new Vec2(.4f, -.5f), 1 / 3f);

                await painter.DrawStringC("O", Color.Black, new Vec2(.8f, -.5f), 1 / 3f);
            }
            else
            {
                await painter.DrawStringC("O", Color.Black, new Vec2(0f, -.5f), 1 / 3f);

                await painter.DrawStringC("/", Color.Black, new Vec2(.4f, -.5f), 1 / 3f);

                await painter.DrawStringC("I", Color.Black, new Vec2(.8f, -.5f), 1 / 3f);
            }
        }
        private async void DrawingPanel_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
            PainterScope painter = new PainterScope(new WinformsPainter(e.Graphics), inputStateManager.Zoom);
            await inputStateManager.DrawGrid(painter, new Vec2(Width, Height));

            await inputStateManager.Draw(stateStack.CurrentState, painter);
        }
Beispiel #4
0
        protected override async Task DrawGate(PainterScope painter)
        {
            await painter.DrawLine(Color.Black, PenWidth, new Vec2(-1, .75f), new Vec2(-1, -.75f));

            await painter.DrawLine(Color.Black, PenWidth, new Vec2(-1, .75f), new Vec2(1, 0));

            await painter.DrawLine(Color.Black, PenWidth, new Vec2(-1, -.75f), new Vec2(1, 0));
        }
        public override async Task Draw(BoardState state, PainterScope painter)
        {
            BoxCollider newBox = mouseBox.GetNormalized();
            await painter.DrawRectangle(Color.FromArgb(255, 0, 0, 255), 3, newBox.Position, newBox.Bounds);

            await painter.FillRectangle(Color.FromArgb(64, 128, 128, 255), newBox.Position, newBox.Bounds);

            await base.Draw(state, painter);
        }
Beispiel #6
0
        protected override async Task DrawGate(PainterScope painter)
        {
            await painter.DrawRectangle(Color.Green, 10, new Vec2(-.4f, -.4f), new Vec2(.8f, .8f));

            await painter.DrawStringC(Outputs[0].Values.Count.ToString(), Color.Black, new Vec2(-.3f, -.6f), 1 / 4f);

            await painter.DrawStringC("*", Color.Black, new Vec2(0, -.6f), 1 / 4f);

            await painter.DrawStringC(Outputs[0].Values[0].ToChar().ToString(), Color.Black, new Vec2(.3f, -.6f), 1 / 4f);
        }
Beispiel #7
0
        protected override async Task DrawGate(PainterScope painter)
        {
            await painter.DrawArcC(Color.Black, PenWidth, new Vec2(-3.5f - .75f, 0), new Vec2(5, 5), 321, 78);

            await painter.DrawArcC(Color.Black, PenWidth, new Vec2(-2.3f, 2), new Vec2(8, 7), 270, 60);

            await painter.DrawArcC(Color.Black, PenWidth, new Vec2(-2.3f, -2), new Vec2(8, 7), 90, -60);

            await base.DrawGate(painter);
        }
Beispiel #8
0
        protected override async Task ExtensionLine(PainterScope painter, int gatePinCount, Vec2 centerLocal)
        {
            await painter.DrawLine(Color.DarkGray, 10, Vec2.Zero, new Vec2(0, gatePinCount - 1));

            for (int i = 1; i < splitCount; i++)
            {
                await painter.DrawLine(Color.DarkGray, 10, new Vec2(0, i), new Vec2(1, i));

                await painter.DrawStringC(GetRange(i), Color.Black, new Vec2(.4f, i), 1 / 4f);
            }
        }
        public override async Task Draw(BoardState currentState, PainterScope painter)
        {
            //Draws selected gates and wires because they are technically no longer on the board
            foreach (BoardObject selection in selections)
            {
                await selection.Draw(painter, currentState);

                BoxCollider selectionBox = selection.HitBox;
                await painter.DrawRectangle(Color.FromArgb(128, 0, 0, 255), 10, selectionBox.Position, selectionBox.Bounds);
            }
        }
Beispiel #10
0
        protected override async Task DrawGate(PainterScope painter)
        {
            await painter.DrawLine(Color.Black, PenWidth, new Vec2(-2, 1.5f), new Vec2(-2, -1.5f));

            await painter.DrawLine(Color.Black, PenWidth, new Vec2(-2, 1.5f), new Vec2(-.5f + .1f, 1.5f));

            await painter.DrawLine(Color.Black, PenWidth, new Vec2(-2, -1.5f), new Vec2(-.5f + .1f, -1.5f));

            await painter.DrawArc(Color.Black, PenWidth, new Vec2(-2f, -1.5f), new Vec2(3f, 3f), 270, 180);

            await base.DrawGate(painter);
        }
        public override async Task Draw(BoardState currentState, PainterScope painter)
        {
            if (circuitLabel != null)
            {
                BoxCollider selectionBox = circuitLabel.HitBox;
                await painter.DrawRectangle(Color.FromArgb(128, 0, 0, 255), 10, selectionBox.Position, selectionBox.Bounds);

                if (draggingLabel)
                {
                    await circuitLabel.Draw(painter, currentState);
                }
            }
        }
Beispiel #12
0
        public override async Task Draw(BoardState currentState, PainterScope painter)
        {
            if (resettable)
            {
                if (intersectedBoxes.Count > 0)
                {
                    foreach (var resetBox in resetBoxes)
                    {
                        await painter.FillRectangle(Color.FromArgb(64, 128, 128, 255), resetBox.Position, resetBox.Bounds);
                    }
                }
            }

            await base.Draw(currentState, painter);

            foreach (BoxCollider intersection in intersectedBoxes)
            {
                await painter.FillRectangle(Color.FromArgb(128, 255, 0, 0), intersection.Position, intersection.Bounds);
            }
        }
 public abstract Task Draw(PainterScope painter, BoardState state);
Beispiel #14
0
 protected override Task DrawGate(PainterScope painter)
 {
     throw new NotImplementedException();
 }
Beispiel #15
0
 public virtual Task Draw(BoardState currentState, PainterScope painter) => Task.CompletedTask;
Beispiel #16
0
 public override async Task Draw(PainterScope scope, BoardState state)
 {
     await scope.FillEllipseC(Values.BitColors()[0], LocalPoint, new Vec2(.4f, .4f));
 }
        public override async Task Draw(BoardState currentState, PainterScope painter)
        {
            await primaryLine.Draw(painter, currentState);

            await secondaryLine.Draw(painter, currentState);
        }
Beispiel #18
0
 public override async Task Draw(PainterScope scope, BoardState state)
 {
     await WirePainter.DrawWireLine(scope, state, this);
 }