X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fcarfire;a=blobdiff_plain;f=CarFire%2FCarFire%2FCarFire%2FMovementManager.cs;h=ad26e478a317f8921f9b14e512f97f9df2690e42;hp=3511e4202d1af2e711f2485a81088ee781cfd7f2;hb=9fc306c489b446612f0fc1b363e490a5ff217d2c;hpb=af9deb873b24dadd0d509ce199fc6cac2b3efbc9 diff --git a/CarFire/CarFire/CarFire/MovementManager.cs b/CarFire/CarFire/CarFire/MovementManager.cs index 3511e42..ad26e47 100644 --- a/CarFire/CarFire/CarFire/MovementManager.cs +++ b/CarFire/CarFire/CarFire/MovementManager.cs @@ -44,7 +44,7 @@ namespace CarFire /// Get the grid coordinates where the object is at or /// is moving to. /// - public Point Coordinates { get { return mCoordinates; } } + public Point Coordinates { get { return mCoordinates; } set { mCoordinates = value; } } /// /// Get and set the speed of movement in grid cells / second. @@ -195,7 +195,7 @@ namespace CarFire /// - /// Helper method to get neighbor cells from a point and directions. + /// Helper method to get a neighbor cell from a point and directions. /// /// The point. /// To the left. @@ -203,7 +203,7 @@ namespace CarFire /// Above. /// Below. /// The neighbor cell coordinates. - public static Point GetNeighborCell(Point point, bool left, bool right, bool up, bool down) + public static Point GetNeighbor(Point point, bool left, bool right, bool up, bool down) { if (left) point.X--; if (right) point.X++; @@ -212,6 +212,43 @@ namespace CarFire return point; } + /// + /// Helper method to get a neighbor cell from a point and a direction. + /// + /// The point. + /// The direction. + /// The neighbor cell coordinates. + public static Point GetNeighbor(Point point, Direction direction) + { + switch (direction) + { + case Direction.Left: return new Point(point.X - 1, point.Y); + case Direction.UpperLeft: return new Point(point.X - 1, point.Y - 1); + case Direction.Up: return new Point(point.X, point.Y - 1); + case Direction.UpperRight: return new Point(point.X + 1, point.Y - 1); + case Direction.Right: return new Point(point.X + 1, point.Y); + case Direction.LowerRight: return new Point(point.X + 1, point.Y + 1); + case Direction.Down: return new Point(point.X, point.Y + 1); + case Direction.LowerLeft: return new Point(point.X - 1, point.Y + 1); + } + return point; + } + + /// + /// Helper method to get the two neighbor cells of two nearby cells. + /// + /// A point. + /// Another point. + /// An array of two points representing the neighbor cells. + public static Point[] GetNeighbors(Point a, Point b) + { + Point[] neighbors = new Point[2]; + neighbors[0] = new Point(a.X, b.Y); + neighbors[1] = new Point(b.X, a.Y); + return neighbors; + } + + /// /// Helper method to get a Direction type from directions. /// @@ -282,7 +319,7 @@ namespace CarFire void UpdateCoordinates(bool moveLeft, bool moveRight, bool moveUp, bool moveDown) { mLastCoordinates = mCoordinates; - mCoordinates = GetNeighborCell(mCoordinates, moveLeft, moveRight, moveUp, moveDown); + mCoordinates = GetNeighbor(mCoordinates, moveLeft, moveRight, moveUp, moveDown); if ((moveLeft && moveUp) || (moveUp && moveRight) || (moveRight && moveDown) || (moveDown && moveLeft)) {