Solarus quests  1.6 Quest maker's reference
Circle movement

A circle movement makes a circular trajectory around a center point.

The center can either be some fixed coordinates or a possibly moving map entity.

# Methods inherited from movement

Circle movements are particular movement objects. Therefore, they inherit all methods from the type movement.

See Methods of all movement types to know these methods.

# Methods of the type circle movement

The following methods are specific to circle movements.

## circle_movement:get_center()

Returns the center point of this movement.

• Return value 1 (number): X coordinate of the center.
• Return value 2 (number): Y coordinate of the center.

## circle_movement:set_center(x, y), circle_movement:set_center(entity, [dx, dy])

Sets the center of this movement as a fixed point or a map entity.

To make circles around a fixed point:

• `x` (number): X coordinate of the center.
• `y` (number): Y coordinate of the center.

To make circles around a map entity (only during a game):

• `entity` (entity): The center entity.
• `dx` (number, optional): X offset to add to the center entity's coordinates (default 0).
• `dy` (number, optional): Y offset to add to the center entity's coordinates (default 0).

Returns the radius of circles to make.

• Return value (number): The wanted radius in pixels.

Sets the radius of circles to make.

• `radius` (number): The new wanted radius in pixels.

Returns the speed of radius changes.

• Return value (number): The speed in pixels per second, or 0 if radius changes are immediate.

Sets the radius to be updated immediately of gradually (at the specified speed) towards its wanted value.

• `radius_speed` (number): The speed of radius changes in pixels per second, or 0 to make radius changes immediate.

## circle_movement:is_clockwise()

Returns whether circles are made clockwise or counter-clockwise.

• Return value (boolean): `true` if circles are clockwise.

## circle_movement:set_clockwise([clockwise])

Sets whether circles are made clockwise or counter-clockwise.

• `clockwise` (boolean, optional): `true` to make circles clockwise. No value means `true`.

## circle_movement:get_angle_from_center()

Returns the angle indicating the current position on the circle.

This is the angle of the vector between the center and the current position.

• Return value (number): The angle in radians.

## circle_movement:set_angle_from_center(angle_from_center)

Sets the position on the circle as an angle from its center.

This is the angle of the vector between the center and the new position to set.

• `initial_angle` (number): The angle in radians.

## circle_movement:get_angular_speed()

Returns the speed of the angle variation.

• Return value (number): The angle speed in radians per second.

## circle_movement:set_angular_speed(angular_speed)

Sets the speed of the angle variation.

• `angular_speed` (number): The new angle speed in radians per second.

## circle_movement:get_max_rotations()

Returns the maximum number of rotations of this movement.

When this number of rotations is reached, the movement stops.

• Return value (number): The maximum number of rotations to make (`0` means infinite).

## circle_movement:set_max_rotations(max_rotations)

Sets the maximum number of rotations of this movement.

When this number of rotations is reached, the movement stops.

• `max_rotations` (number): The maximum number of rotations to make (`0` means infinite).
Remarks
The movement stops itself by setting its radius to 0. Therefore, if the radius is set to change gradually (see circle_movement:get_radius_speed()), the movement will continue for a while until the radius reaches 0.
When the movement has stopped, it restarts later if it was set to loop (see circle_movement:get_loop_delay()), and again, possibly gradually.

## circle_movement:get_duration()

Returns the maximum duration of this movement.

When this delay is reached, the movement stops.

• Return value (number): The duration of the movement in milliseconds (`0` means infinite).

## circle_movement:set_duration(duration)

Sets the maximum duration of this movement.

When this delay is reached, the movement stops.

• `duration` (number): The duration of the movement in milliseconds (`0` means infinite).
Remarks
The movement is stopped by automatically setting its radius to 0. Therefore, if the radius is set to change gradually (see circle_movement:get_radius_speed()), the movement will continue for a while until the radius reaches 0.
When the movement has stopped, it will then restart if it was set to loop (see circle_movement:set_loop_delay()), and again, possibly gradually.

## circle_movement:get_loop_delay()

Returns the delay after which this movement restarts.

• Return value (number): The restart delay in milliseconds (`0` means no restart).

## circle_movement:set_loop_delay(loop_delay)

Sets the delay after which this movement restarts.

• `loop_delay` (number): The restart delay in milliseconds (`0` means no restart).
Remarks
This delay is applied if the movement get stopped by reaching the maximum number of rotations or the maximum duration.
When the movement restarts, the radius starts from 0 and gets back to its previous value, possibly gradually (see circle_movement:set_radius_speed()).

# Events inherited from movement

Circle movements are particular movement objects. Therefore, they inherit all events from the type movement.

See Events of all movement types to know these events.

# Deprecated methods of the type circle movement

The following methods are deprecated and may be removed it future releases.

## circle_movement:get_initial_angle()

Returns the angle from where the first circle starts.

• Return value (number): The initial angle in degrees.
Warning
This method is deprecated since Solarus 1.6 because angle functions now all use radians for consistency.

## circle_movement:set_initial_angle(initial_angle)

Sets the angle from where the first circle should start.

• `initial_angle` (number): The initial angle in degrees.
Warning
This method is deprecated since Solarus 1.6 because angle functions now all use radians for consistency.

## circle_movement:get_angle_speed()

Returns the speed of the angle variation.

• Return value (number): The angle speed in degrees per second.
Warning
This method is deprecated since Solarus 1.6 because angle functions now all use radians for consistency.

• `angle_speed` (number): The new angle speed in degrees per second.