public static PositionComponent GetNewPositionByDirection(this PositionComponent position, MovementDirection direction) { var newPosition = position.GetCopy(); switch (direction) { case MovementDirection.North: newPosition.MoveBy(deltaY: -1, deltaX: 0); break; case MovementDirection.West: newPosition.MoveBy(deltaY: 0, deltaX: -1); break; case MovementDirection.South: newPosition.MoveBy(deltaY: 1, deltaX: 0); break; case MovementDirection.East: newPosition.MoveBy(deltaY: 0, deltaX: 1); break; case MovementDirection.NorthEast: newPosition.MoveBy(deltaY: -1, deltaX: 1); break; case MovementDirection.NorthWest: newPosition.MoveBy(deltaY: -1, deltaX: -1); break; case MovementDirection.SouthEast: newPosition.MoveBy(deltaY: 1, deltaX: 1); break; case MovementDirection.SouthWest: newPosition.MoveBy(deltaY: 1, deltaX: -1); break; } return(newPosition); }
public static PositionComponent GetMovedByCopy(this PositionComponent thisComponent, int deltaY, int deltaX) { return(thisComponent.GetCopy().MoveBy(deltaY, deltaX)); }