diff options
author | Thomas Leyh <leyh.thomas@web.de> | 2016-07-24 08:14:18 +0200 |
---|---|---|
committer | Thomas Leyh <leyh.thomas@web.de> | 2016-07-24 08:14:18 +0200 |
commit | ced3d03bdb3ce866d832e03fb212865140905a9a (patch) | |
tree | 2a16c2063a46d3c354ce1585029dda3124f6ad93 /V3/Objects/Movement/IMovable.cs | |
parent | 0394dccaf06e1009e591a6ff4d645895574724c1 (diff) | |
download | V3-ced3d03bdb3ce866d832e03fb212865140905a9a.tar.gz V3-ced3d03bdb3ce866d832e03fb212865140905a9a.tar.bz2 |
Diffstat (limited to 'V3/Objects/Movement/IMovable.cs')
-rw-r--r-- | V3/Objects/Movement/IMovable.cs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/V3/Objects/Movement/IMovable.cs b/V3/Objects/Movement/IMovable.cs new file mode 100644 index 0000000..659708b --- /dev/null +++ b/V3/Objects/Movement/IMovable.cs @@ -0,0 +1,43 @@ +using Microsoft.Xna.Framework; +using V3.Data; +using V3.Map; + +namespace V3.Objects.Movement +{ + public interface IMovable + { + /// <summary> + /// Calculates a path without collisions to desired destination. + /// </summary> + /// <param name="pathfinder">Pathfinder to use.</param> + /// <param name="position">Current position in pixel.</param> + /// <param name="destination">Destination in pixel.</param> + void FindPath(Pathfinder pathfinder, Vector2 position, Vector2 destination); + + /// <summary> + /// Uses pathfinder to for steady movement to new transition. + /// </summary> + /// <param name="currentPosition">Current position in pixel.</param> + /// <param name="speed">Movement speed of the creature.</param> + /// <returns>Normalized vector * speed which represents a small step in the direction of desired destination.(</returns> + Vector2 GiveNewPosition(Vector2 currentPosition, int speed); + + /// <summary> + /// Calculates the direction the creature is looking when moving. + /// </summary> + MovementDirection GiveMovementDirection(); + bool IsMoving { get; } + + /// <summary> + /// Save the movement data to a MovementData object. + /// </summary> + /// <returns>the MovementData object with the current status</returns> + MovementData SaveData(); + + /// <summary> + /// Restore the movement state from the given data. + /// </summary> + /// <param name="movementData">the state of the movement to restore</param> + void LoadData(MovementData movementData); + } +} |