public DeadPlayer(Position[] points, Player src) { Source = src; _points = points.ToList(); Alive = true; Length = points.Length; MovementLength = Config.data.BASE_MOVEMENT_LENGTH; MakeInvulnerable(1000); r = new Random(); if (r.Next(2) == 1) turningLeft = true; else turningLeft = false; Color = Config.data.DEAD_SNAKE_COLOR; RealPlayer = false; if (Length > 1) { var dY = (points[1].Y - points[0].Y); var dX = (points[1].X - points[0].X); if (dX != 0) { Heading = (int)(Math.Atan(dY / dX) * 180 / Math.PI); if (dX > 0) Heading += 180; } else if (dY > 0) Heading = 90; else Heading = 270; } else Heading = 0; startTurn(); setMoveTimer(); }
public static List<TranslatedPosition> TranslateList(this List<Position> list, Position Reference) { var l = new List<TranslatedPosition>(); foreach (var p in list) { l.Add(p.TranslatePosition(Reference)); } return l; }
public int HeadingTo(Position pos) { var dY = (pos.Y - this.Y); var dX = (pos.X - this.X); int Heading; if (dX != 0) { Heading = (int)(Math.Atan(dY / dX) * 180 / Math.PI); if (dX > 0) Heading += 180; } else if (dY > 0) Heading = 90; else Heading = 270; return Heading; }
public static TranslatedPosition TranslatePosition(this Position pos, Position Reference) { return new TranslatedPosition(pos,Reference); }
public TranslatedPosition(Position p, Position reference) { X = (int)(reference.X - p.X); Y = (int)(reference.Y - p.Y); }
public TranslatedPosition(int x, int y, Position reference) : this(new Position(x, y), reference) { }
public double DistanceTo(Position position) { if (position == null) return double.MaxValue; return Math.Sqrt((position.X - X) * (position.X - X) + (position.Y - Y) * (position.Y - Y)); }