public override void Draw(Renderer renderer, Vector2 position, double direction, Cairo.Color? fillColor, Cairo.Color? strokeColor, double scale) { Context g = renderer.Context; g.MoveTo(position.ToPointD()); g.LineTo(position.AddLengthDir(scale, MathHelper.PiOver2).ToPointD()); g.LineTo(position.AddLengthDir(scale, MathHelper.PiOver4 * 9).ToPointD()); g.ClosePath(); renderer.StrokeAndFill(fillColor, strokeColor); }
public override void Draw(Renderer renderer, Vector2 position, double direction, Cairo.Color? fillColor, Cairo.Color? strokeColor, double scale) { Context g = renderer.Context; if (strokeColor.HasValue) { g.MoveTo(position.ToPointD()); g.LineTo(position.AddLengthDir(Distance, direction).ToPointD()); renderer.SetColor((Cairo.Color)strokeColor); g.Stroke(); } }
public void Initialize() { //int laneWidth = 177; int gutter = BaseWidth / 2 - LaneWidth / 2; Vector2 baseCorner = new Vector2(BaseWidth, Width - BaseWidth); Vector2 _midTop = baseCorner.AddLengthDir(LaneWidth / 2, -(MathHelper.PiOver4 * 3)); Vector2 _midBot = baseCorner.AddLengthDir(LaneWidth / 2, MathHelper.PiOver4); Vector2 _center = new Vector2(Width / 2, Width / 2); Vector2 _centerTop = _center.AddLengthDir(LaneWidth / 2, -(MathHelper.PiOver4 * 3)); Vector2 _centerBot = _center.AddLengthDir(LaneWidth / 2, MathHelper.PiOver4); VGame.Point midTop = new VGame.Point((int)Math.Round(_midTop.X), (int)Math.Round(_midTop.Y)); VGame.Point midBot = new VGame.Point((int)Math.Round(_midBot.X), (int)Math.Round(_midBot.Y)); VGame.Point centerTop = new VGame.Point((int)Math.Round(_centerTop.X), (int)Math.Round(_centerTop.Y)); VGame.Point centerBot = new VGame.Point((int)Math.Round(_centerBot.X), (int)Math.Round(_centerBot.Y)); VGame.Point center = new VGame.Point(Width / 2, Width / 2); Terrain = new List<Polygon>() { // base new Polygon(0, Width, BaseWidth, Width, 0, Width - BaseWidth), new Polygon(BaseWidth, Width - BaseWidth, BaseWidth, Width, 0, Width - BaseWidth), // hardlane new Polygon(gutter, Width - BaseWidth, BaseWidth / 2 + LaneWidth / 2, Width - BaseWidth, gutter, gutter), new Polygon(BaseWidth / 2 + LaneWidth / 2, Width - BaseWidth, gutter, gutter, gutter + LaneWidth, gutter + LaneWidth), // safelane new Polygon(BaseWidth, Width - BaseWidth + gutter, BaseWidth, Width - gutter, Width - gutter, Width - gutter), new Polygon(BaseWidth, Width - BaseWidth + gutter, Width - gutter - LaneWidth, Width - gutter - LaneWidth, Width - gutter, Width - gutter), // midlane /*new Polygon(BaseWidth - gutter, Width - BaseWidth, BaseWidth, Width - BaseWidth, midTop.X, midTop.Y), new Polygon(BaseWidth, Width - BaseWidth + gutter, BaseWidth, Width - BaseWidth, midBot.X, midBot.Y), new Polygon(midTop, midBot, centerTop), new Polygon(midBot, centerTop, centerBot)*/ }; List<Polygon> flip = new List<Polygon>(Terrain); foreach (Polygon p in flip) { p.RotateAbout(new VGame.Point(Width / 2, Width / 2), MathHelper.Pi); Terrain.Add(p); } Decorations = new List<Tuple<Line, Color>>() { new Tuple<Line, Color>(new Line(0, 0, Width, Width), ColorPresets.Red) }; }
public override void Draw(Renderer renderer, Vector2 position, double direction, Cairo.Color? fillColor, Cairo.Color? strokeColor, double scale) { Context g = renderer.Context; double front = MathHelper.PiOver2; double back = 13 * MathHelper.PiOver4 / 4; g.MoveTo(position.AddLengthDir(scale, direction).ToPointD()); g.LineTo(position.AddLengthDir(scale, direction + front).ToPointD()); g.LineTo(position.AddLengthDir(scale * 0.35, direction + front).ToPointD()); g.LineTo(position.AddLengthDir(scale, direction + back).ToPointD()); g.LineTo(position.AddLengthDir(scale, direction - back).ToPointD()); g.LineTo(position.AddLengthDir(scale * 0.35, direction - front).ToPointD()); g.LineTo(position.AddLengthDir(scale, direction - front).ToPointD()); g.ClosePath(); renderer.StrokeAndFill(fillColor, strokeColor); }
public override void Draw(Renderer renderer, Vector2 position, double direction, Cairo.Color? fillColor, Cairo.Color? strokeColor, double scale) { Context g = renderer.Context; double armWidth = (double)scale / 3.5; Vector2 tip = position.AddLengthDir(scale, direction); g.MoveTo(position.AddLengthDir(armWidth / 2, direction - MathHelper.PiOver2).ToPointD()); g.LineTo(tip.AddLengthDir(armWidth / 2, direction - MathHelper.PiOver2).ToPointD()); g.LineTo(tip.AddLengthDir(armWidth / 2, direction + MathHelper.PiOver2).ToPointD()); g.LineTo(position.AddLengthDir(armWidth / 2, direction + MathHelper.PiOver2).ToPointD()); g.LineTo(position.AddLengthDir(armWidth * 2, direction + MathHelper.PiOver2).ToPointD()); g.LineTo(position.AddLengthDir(armWidth * 2, direction + MathHelper.PiOver2).AddLengthDir(scale / 2, direction).ToPointD()); g.LineTo(position.AddLengthDir(armWidth * 2, direction + MathHelper.PiOver2).AddLengthDir(scale / 2, direction).AddLengthDir(armWidth, direction + MathHelper.PiOver2).ToPointD()); g.LineTo(position.AddLengthDir(armWidth * 3, direction + MathHelper.PiOver2).AddLengthDir(armWidth, direction + MathHelper.Pi).ToPointD()); Vector2 arc = position.AddLengthDir(armWidth / 2, direction + MathHelper.Pi); g.Arc(arc.X, arc.Y, armWidth * 3, direction - 3 * MathHelper.PiOver2, direction - MathHelper.PiOver2); g.LineTo(position.AddLengthDir(armWidth * 2, direction - MathHelper.PiOver2).AddLengthDir(scale / 2, direction).AddLengthDir(armWidth, direction - MathHelper.PiOver2).ToPointD()); g.LineTo(position.AddLengthDir(armWidth * 2, direction - MathHelper.PiOver2).AddLengthDir(scale / 2, direction).ToPointD()); g.LineTo(position.AddLengthDir(armWidth * 2, direction - MathHelper.PiOver2).ToPointD()); g.ClosePath(); renderer.StrokeAndFill(fillColor, strokeColor); }
public override void Draw(Renderer renderer, Vector2 position, double direction, Cairo.Color? fillColor, Cairo.Color? strokeColor, double scale) { Context g = renderer.Context; Vector2 tip = position.AddLengthDir(scale, direction); Vector2 rightLeg = position.AddLengthDir(scale, direction + 3 * MathHelper.PiOver4 + (MathHelper.PiOver4 / 7 * AnimationProgress)); Vector2 rear = position.AddLengthDir(scale / 3, direction + MathHelper.Pi); Vector2 leftLeg = position.AddLengthDir(scale, direction - 3 * MathHelper.PiOver4 - (MathHelper.PiOver4 / 7 * AnimationProgress)); g.MoveTo(tip.ToPointD()); g.LineTo(rightLeg.ToPointD()); g.LineTo(rear.ToPointD()); g.LineTo(leftLeg.ToPointD()); g.ClosePath(); renderer.StrokeAndFill(fillColor, strokeColor); }