コード例 #1
0
ファイル: Shapes.cs プロジェクト: adamrezich/arena
 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);
 }
コード例 #2
0
ファイル: Shapes.cs プロジェクト: adamrezich/arena
 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();
     }
 }
コード例 #3
0
ファイル: Pitch.cs プロジェクト: adamrezich/arena
 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)
     };
 }
コード例 #4
0
ファイル: Shapes.cs プロジェクト: adamrezich/arena
 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);
 }
コード例 #5
0
ファイル: Shapes.cs プロジェクト: adamrezich/arena
        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);
        }
コード例 #6
0
ファイル: Shapes.cs プロジェクト: adamrezich/arena
 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);
 }